いくつかのサービスを検索し、存在する場合は削除するpowershellスクリプトをほぼ完成させました。私の問題は、Get-Service
存在しないサービスで使用すると例外がスローされることです。より正確にはServiceCommandException
. スクリプトでブロックを使用しましtry-catch
たが、ログ ファイルでは次のように不平を言っています。
CAQuietExec: The Try statement is missing its Catch or Finally block.
CAQuietExec: At C:\Program Files (x86)\test\Uninstall.ps1:24 char:2
CAQuietExec: + <<<< catch
CAQuietExec: + CategoryInfo : ParserError: (:) , ParseException
CAQuietExec: + FullyQualifiedErrorId : MissingCatchOrFinally
CAQuietExec:
CAQuietExec: Error 0x80070001: Command line returned an error.
CAQuietExec: Error 0x80070001: CAQuietExec Failed
私のスクリプトは次のようになります。
$matcherId=1
do
{
$matcherIdAsString = [string]$matcherId
$matcher = "MatchingServer"+$matcherIdAsString
try
{
$matcher_service = get-service $matcher
if($matcher_service -ne $null)
{
write-host $matcher" is alive"
$serviceObj =(Get-WmiObject Win32_Service -filter "name='$matcher'")
if($serviceObj -ne $null) {
$serviceObj.Delete()
}
}
else
{
write-host "MatchingServer"$matcherIdAsString" is not alive."
}
}
catch[Microsoft.PowerShell.Commands.ServiceCommandException]
{
write-host "Exception is thrown"
$error.clear()
}
finally
{
$matcherId++
}
}
while($matcherId -lt 31)
例外が処理されている理由がわかりませんか? ここで何が間違っていますか?