次のようなinvoke-commandを使用すると、すべてのリモートホストで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を使用して、どのコンピューターに障害が発生したかを知ることができます。
これを行うためのより良い/より簡単な方法はありますか?ありがとうございました