【发布时间】:2013-07-03 15:42:57
【问题描述】:
使用 PowerShell 3.0,我使用 Invoke-Command cmdlet 将 xmlElement 传递给脚本块。问题是我认为 scriptBlock 将参数作为 arrayList 而不是作为 xmlElement 接收(实际上,我知道接收到的参数是 ArrayList ,因为我注销了 $service.GetType() )。
这是我的 XMLElement:
<Service>
<ServiceName>Spooler</ServiceName>
<Startup>Disabled</Startup>
</Service>
这是我的脚本块:
$scptModifyService = {
param (
$service
);
Set-Service -Name $service.ServiceName -StartupType $service.Startup;
}
这是我调用 scriptBlock 的代码:
## Modify remote Services:
foreach($service in $XML.QCSettings.Services.Service) {
Invoke-Command -ScriptBlock $scptModifyService -ComputerName $ComputerName -ArgumentList $service;
}
根据我对 Invoke-Command cmdlet (get-help invoke-command) 的了解,ArguementList 可以将对象作为输入,所以我认为这不是我如何调用脚本块的问题上面的“foreach”循环。希望这有点道理。
有没有人知道如何将我的脚本块中的参数捕获为 xmlElement 而不是ArrayList?
我已经尝试了几件事(在我的脚本块中):
param( $service = [xml]Get-Content args[0] );
以及该代码的其他变体。
【问题讨论】:
标签: xml powershell invoke-command