我正在编写一个PowerShell脚本,它从DOCX文件中的表中获取值,但我遇到了一些问题。如果DOCX文件不包含任何表格,或者表格太小而无法使用具有“1,9”坐标的单元格,我无法“静默地继续”执行脚本。
这是我有ATM的代码,但它没有按照我的预期行事(错误仍然显示):
$word = New-Object -ComObject Word.Application
$word.Visible = $false
$document = $word.Documents.Open("C:\document.docx")
Set-Variable -Name "valueInCell" -Value $document.Tables.Item(1).Cell(1,9).Range.Text -ErrorAction SilentlyContinue
$document.Close()
$word.Quit()
有关如何在发生错误时静默继续的任何想法?
答案 0 :(得分:1)
-ErrorAction
参数控制有问题的命令引发的错误的处理 - 而不是在执行命令之前发生的错误。
在调用Set-Variable
之前,PowerShell需要评估值表达式$document.Tables.Item(1).Cell(1,9).Range.Text
,这肯定会引发InvokeMethodOnNull
错误。
更改当前范围中的默认错误操作首选项:
$ErrorActionPreference = 'SilentlyContinue'
Set-Variable varname -Value $null.GetType() # no error output
或将其包装在try / catch块中:
$valueInCell = try{
$document.Tables.Item(1).Cell(1,9).Range.Text
}
catch{
""
}