我正在使用powershell
下面的脚本打开几个 word 文档,更新其中的表单字段,然后关闭它们。首先,我要注意,如果这个脚本是从命令行运行的,或者通过右键单击文件并选择Run with Powershell
基本上以任何方式手动执行,它将执行得很好。但是,如果我尝试将此作为计划任务运行,则会发生两件事之一。
我为此尝试了几种不同形式的语法,但都产生了相同的两个结果之一。A)脚本说它开始并在大约 3 秒内完成而没有做任何事情,或者 B)脚本开始,我可以看到 Word 在任务管理器中打开,但是没有像正常情况那样显示进度的命令窗口,而 Word 只是大约2分钟后挂断。真正让我选择选项 B 的唯一语法是把powershell
.\Script1.ps1 作为参数,将文件夹作为起始位置。我尝试了这种语法的一些细微变化,例如使用 的完整路径powershell
等。当我在任务管理器中结束 Word 时它挂起时,计划任务说它已成功完成。有人有想法么?脚本如下:
$filearray = 1..12
$filename="E:\Form0801"
$word=new-object -com Word.Application
$word.Visible=$False #Making this true
#does not show word if run from scheduled task
Write-Host "DO NOT CLOSE THIS WINDOW!"
try
{
foreach ($i in $filearray)
{
if($i -lt 10){$filename="E:\Form080" + $i + ".dot"}
else{$filename="E:\Form08" + $i + ".dot"}
$doc=$word.Documents.Open($filename)
$word.ActiveDocument.Fields.Update()
$doc.SaveAs([REF]$filename)
$doc.Close()
Write-Host "File " $filename " has been updated successfully"
}
}
catch [System.Management.Automation.ActionPreferenceStopException]
{
"A problem occurred while opening one of the files."
$error[0]
}
$word.Quit()
# End Word Application