私はコンピュータのリストを持つファイルを持っています。私はそのリストをループし、空きがあるかどうかを報告する必要があります。Foreach try catch
$list = get-content "pathtofile.txt"
foreach ($computer in $list) {
try {
quser /server:$computer
} catch [System.Management.Automation.RemoteException] {
Write-Host "$computer is free"
}
}
これでうまくいきますが、エラーメッセージを取得してコンピュータ名の混乱に変更することは無料です。
現時点ではまだ空いているコンピュータでは
quser : No User exists for * At line:5 char:5 + quser /server:$computer + ~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (No User exists for *:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError
を返しています。
私が知っているコンピュータに対してquser
のコマンドを実行してSystem.Management.Automation.RemoteException
を得ることができたは無料で、その後、$Error[0] | fl * -Force
を実行している:私の例外コードを与えた
writeErrorStream : True PSMessageDetails : Exception : System.Management.Automation.RemoteException: No User exists for * TargetObject : No User exists for * CategoryInfo : NotSpecified: (No User exists for *:String) [], RemoteException FullyQualifiedErrorId : NativeCommandError ErrorDetails : InvocationInfo : System.Management.Automation.InvocationInfo ScriptStackTrace : at , : line 1 PipelineIterationInfo : {0, 0}
。
今私はForeach error handling in Powershellを見て、私のコードが正しいと思われるので、なぜキャッチが機能していないのかわかりません。
おかげで、チームメイトを、このコードは御馳走を働きました。 –