Powershell Try/Catch基于特定文本



我的脚本抛出了一个错误,如下所示:

ConvertFrom-StringData : Data item 'a3512c98c9e159c021ebbb76b238707e' in line 'a3512c98c9e159c021ebbb76b238707e  =  My
Pictures/Tony/Automatic Upload/Tony’s iPhone/2022-10-08 21-46-21 (2).mov' is already defined.
At P:scriptscodepcloud_sync.ps1:66 char:179
+ ... ace '^[a-f0-9]{32}(  )', '$0=  ' -join "`n") | ConvertFrom-StringData
+                                                    ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [ConvertFrom-StringData], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.ConvertFromStringDataCommand

我想通过";已定义";文本,然后运行一个单独的命令,如果在脚本重新运行代码之前发现了这一点——可能吗?

您可以使用$_.Exception.Message属性以字符串形式获取异常消息,然后使用-match语句检查它是否遵循特定模式。

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg1 = The specified variable does not exist.
'@
try {
ConvertFrom-StringData -StringData $Here
} catch {
if($_.Exception.Message -match "is already defined") {
Write-Output "Do Something"
}
}

最新更新