以下のスクリプトを使用して、powershell
いくつかの Word ドキュメントを開き、それらのフォーム フィールドを更新してから閉じています。まず、このスクリプトをコマンド ラインから実行するか、ファイルを右クリックしてRun with Powershell
基本的に手動で実行することを選択して実行すると、問題なく実行されます。ただし、これをスケジュールされたタスクとして実行しようとすると、次の 2 つのいずれかが発生します。
このためにいくつかの異なる形式の構文を試しましたが、いずれも同じ 2 つの結果のうちの 1 つを生成します。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