说我有一个脚本。 $result = convertDoc(source, dest)
可能有
DAOpenDocument(“c:\ docs \ test.xlsx”)失败:当前没有文件打开(0x0010)
失败,或成功:
EX_CALLBACK_ID_PAGECOUNT:文件有1页 导出成功:创建了1个输出文件。
我需要创建一个逻辑,如果$ result在字符串中有关键字“failed”,那么Write-Host
失败,否则$result
的关键字“导出成功”,然后写主机“成功”
答案 0 :(得分:0)
尝试这样的事情:
$result | Select-String '(failed|export successful)' | % {
if ($_.Matches.Groups[1].Value -eq 'failed') {
Write-Host 'failed'
} else {
Write-Host 'successful'
}
}
请注意,$_.Matches.Groups[1]
需要PowerShell v3。在早期版本中,您必须先扩展组,然后才能访问它们:
$value = ($_.Matches | select -Expand Groups)[1].Value
那就是说,你能控制convertDoc()
吗?如果是这样的话,那么当没有文档打开并且在try..catch
块中调用它时,让该函数抛出异常会好得多:
try {
$result = convertDoc(source, dest)
} catch {
Write-host $_.Exception.Message
}
答案 1 :(得分:0)
在$ result上使用模式匹配。选项是-match,-contains,类似的运算符。 例如。如果($ result -match“failed”){write-host“failed”} else {write-host“mission sucess”}
答案 2 :(得分:0)
为什么不呢?
$result = 'DAOpenDocument("c:\docs\test.xlsx") failed: no file is currently open (0x0010)'
if($result.contains("failed"))
{ Write-Host "Failure" }
elseif($result.contains("successful"))
{write-host "Success!"}
else
{Write-Host "All is good"}