0
私はいくつかのサービス情報を調べようとしています。アプリケーションのインストーラが正しくインストールされないことがあるため、レジストリにサービスエントリが含まれていないことがあります。私は、インストーラで適切なロギングをしていないシステムであっても、どのインストーラのステップが正しく実行されたかを知りたい。なぜ例外がキャッチブロックに入らないのですか?
try {
$path = 'hklm:\SYSTEM\CurrentControlSet\services\MyService'
$key = Get-Item $path
$namevalues = $key | Select-Object -ExpandProperty Property |
ForEach-Object {
[PSCustomObject] @{
Name = $_;
Value = $key.GetValue($_)
}
}
$namevalues | Format-Table
}
catch {
$ProgramFilesX86 = [System.Environment]::GetFolderPath("ProgramFilesX86");
$ProgramFiles = [System.Environment]::GetFolderPath("ProgramFiles");
Write-Host $ProgramFilesX86
Write-Host $ProgramFiles
}
はなぜそれであるとどのように私は終了することを強制する必要があります:MyService
が存在しない場合はexception handling documentationが裸catch
が十分でなければなりません示唆していても
、スクリプトは以下catch
ブロックに行きませんcatch
の
これは何PowerShellの出力です:
Get-Item : Cannot find path 'HKLM:\SYSTEM\CurrentControlSet\services\MyService' because it does not exist.
At C:\Users\Developer\...\GetMyServiceInfo.ps1:17 char:12
+ $key = Get-Item $path
+ ~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (HKLM:\SYSTEM\Cu...vices\MyService:String) [Get-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand
ありがとうございます。 '-ErrorAction'と' $ ErrorActionPreference'ドキュメントへのリンクをいくつか追加してください。それから私は答えを受け入れます。 –
[about_CommonParameters](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_commonparameters?view=powershell-5.1) – Manu