我有一个powershell脚本,它关闭MS Word中打开的文件名与模式匹配的所有MS Word实例。有时会调用Powershell脚本,但没有运行MS的实例。cmdlet进程用于查找MS并检查当前打开的文件的名称。
下面的捕获NoProcessFoundForGivenName,NoProcessFoundForGivenName或
Microsoft.PowerShell.Commands.GetProcessCommand被抓了。
{
$MSWordProcessHandle = Get-Process WINWORD
} catch [NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand] {
Write-Output "No instances of MS Word found running."
}我一直看到下面的错误。
获取-进程:找不到名为"WINWORD“的进程。验证进程名并再次调用cmdlet。At C:\Utils\scripts\Dev_Set_Close.ps1:24 char:27 + $MSWordProcessHandle = Get-Process WINWORD +~+ CategoryInfo : ObjectNotFound:(WINWORD:String) Get-Process,ProcessCommandException + FullyQualifiedErrorId : NoProcessFoundForGivenName,CategoryInfo
发布于 2019-08-30 18:11:24
首先,您需要使用-ErrorAction Stop强制非终止错误为异常。
然后,当您无法确定要捕获的具体异常时,Lee关于捕获一切的建议是有帮助的:
try {
$MSWordProcessHandle = Get-Process WINWORD -ErrorAction Stop
} catch {
$_.Exception.GetType().FullName
}这输出Microsoft.PowerShell.Commands.ProcessCommandException
所以,这就是你想要的
try {
$MSWordProcessHandle = Get-Process WINWORD -ErrorAction Stop
} catch [Microsoft.PowerShell.Commands.ProcessCommandException]{
Write-Output "No instances of MS Word found running."
}https://stackoverflow.com/questions/57731019
复制相似问题