0

说我有一个脚本。$result = convertDoc(source, dest)可能有

DAOpenDocument("c:\docs\test.xlsx") 失败:当前没有打开文件 (0x0010)

失败,或者成功:

EX_CALLBACK_ID_PAGECOUNT:文件有 1 页。
导出成功:创建了 1 个输出文件。

我需要创建一个逻辑,如果 $result 在字符串中有关键字“失败”然后Write-Host失败,否则$result有关键字“导出成功”然后写入主机“成功”

4

3 回答 3

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
}
于 2013-08-04T18:39:19.580 回答
0

在 $result 上使用模式匹配。选项是-match、-contains、-like 运算符。例如 If ($result -match "failed") { write-host "failed" } else { write-host "mission sucess" }

于 2013-08-04T21:41:40.643 回答
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"}
于 2013-08-04T23:26:28.413 回答