私はプログラマーではなく、PowerShellスクリプト/コマンドで実際にエラー処理を行ったことがないので、ときどき自分のタスクを達成するためにpowershellを使用するだけです。初心者の助けPowershell Exception catching
私は下のサンプルコードで例外をキャッチすることに頭を抱えるように苦労しています。間違った方法で動作しているようです。ここでのコードは次のとおりです。
$Computers = Get-ADComputer -SearchBase
"OU=Desktops,OU=Computers,OU=Managed,DC=domain,DC=local" -Filter * | select Name
$Table= ""
$Computers | Foreach {
$Name = $_.Name
try {
$Table += Get-WmiObject -Class Win32_Product -ComputerName $Name |
Where-Object {$_.Name -eq "Product Name"} | select PSComputerName,Name,Version
}
catch {
$Name + " unavailable"
}
}
起こるようです何を、コンピュータがオフあるいは利用できない場合では、Get-WmiObjectコマンドコマンドが失敗し、PowerShellウィンドウに例外メッセージが表示されます。私はこの例外を見るためにCatchステートメントを期待し、代わりにコンピュータの$ Nameとテキスト "Unavailable"を出力します。
利用できないコンピュータの例外メッセージを表示した後、成功した場合、$ Name + "unavailable"と表示されます。
私はpowershellでのエラー処理の背後にあるコンセプトを誤解していますが、上記のコードを調整してエラーのあるコンピュータをキャッチし、それらと何か異なることができますか?あなたが必要とする
try {
$Table += Get-WmiObject -Class Win32_Product -ComputerName $Name -ErrorAction Stop |Where-Object {$_.Name -eq "Product Name"} | select PSComputerName,Name,Version
}
catch {
$Name + " unavailable"
}
ありがとうブライスは、try/catchの理解を得るためにそれを見ています。ありがとう – Eds
@BryceMcDonald [この記事](https://kevinmarquette.github.io/2017-04-10-Powershell-exceptions-everything-youever-wanted-to-know/)もすべてのことを説明するのにはかなり良いです例外。 – TheIncorrigible1