我想知道在使用这样的调用命令时我的 scipt 是否在所有远程主机上有效执行:
Invoke-Command -ComputerName "test1","test2" -ScriptBlock {$env:computername}
当它以交互方式运行时,我可以看到如下错误消息:
- CategoryInfo : OpenError: (test1:String) [], PSRemotingTransportException
- FullyQualifiedErrorId : NetworkPathNotFound,PSSessionStateBroken
但是在“批处理模式”下运行脚本时该怎么办?
我尝试了 try{} catch{} 语句,但它似乎不起作用,
然后我尝试在变量中处理结果,也没有工作:
PS>$result=Invoke-Command -ComputerName "test1","test2","rodc1" -ScriptBlock {$env:computername}
PS>$result
rodc1
我最终为每个主机使用 new-pssession 并像这样测试它
$computers=@("test1","test2","rodc1")
$computers|%{
$s=new-PSSession -ComputerName $_
if($s -eq $null){
$errs +="$_ : cant connect to host `n<br/>"
}
else{
$sess+=$s
}
}
invoke-Command -Session $sess -ScriptBlock {$env:computername} -asJob -jobName "test"
现在,我可以使用 $errs 来了解哪些计算机出现故障
有没有更好/更简单的方法来做到这一点?谢谢你