【发布时间】:2015-03-24 10:19:48
【问题描述】:
我正在尝试使用 Invoke-Command 在多台机器上远程运行 PowerShell 中的命令,并从中捕获它们的输出,但我没有从中获得任何输出。我怀疑这是因为我使用 Start-Process 的方式,但我不确定。
$RunCommand = {
Start-Process "$env:ProgramFiles\Some Program\someprogram.exe" -ArgumentList "-SignatureUpdate"
}
$comp_list = @(Get-Content "c:\temp\comp_list.txt")
$cred = Get-Credential
$jobs = Invoke-Command -Credential $cred -Computer $comp_list -ScriptBlock $RunCommand -AsJob
Wait-Job $jobs
$r = Receive-Job $jobs
$r | % { $_ > c:\temp\$($_.PScomputerName).output }
有没有更好的方法来使用类似的环境变量调用命令?
【问题讨论】:
-
这可能是一个错字,但不应该是
Invoke-Command -ComputerName而不仅仅是-computer -
-Computer是-ComputerName的别名,所以两者都可以正常工作。 -
啊,应该想到了。您是否尝试过使用
$ExecutionContext.InvokeCommand.NewScriptBlock()创建脚本块。我已将其与 Invoke-Ssh 命令一起使用
标签: powershell