[英]PowerShell script failing when run from the Task Scheduler
在任务计划程序中运行时,从.bat文件调用的XML文件转换为PDF的PowerShell脚本失败,但在命令提示符下工作正常。
Word2PDF.ps1
:
$File = $args[0]
$Word = New-Object -ComObject Word.Application
$Doc = $Word.Documents.Open($File)
$Name = ($Doc.FullName).Replace(".xml", ".pdf")
# Save this File as a PDF in Word
$Doc.SaveAs([ref]$Name, 17)
$Doc.Close()
$Word.Quit()
ReplaceXMLAttachemtnswithPDF.bat
:
@echo off
rem Convert XML files and attachments to PDFs
setlocal EnableExtensions
setlocal EnableDelayedExpansion
cd /D "D:\FtxData\ebixprod\ER\Output"
set WORKFILE=C:\Temp\workfile.txt
dir /B *.xml > files.txt
for /F %%f in ('type files.txt') do (
echo %%f | ssed s/.xml/.pdf/ > !WORKFILE!
for /F %%g in ('type !WORKFILE!') do set newfile=%%g
powershell D:\Ebix\Fintechnix\Bin\Word2Pdf.ps1 D:\FtxData\!DB!\ER\Output\%%f
)
这应该将D:\\ FtxData \\ ebixprod \\ ER \\ Output中的所有.xml文件转换为.pdf文件。
如果我在命令提示符中运行.bat文件,则工作正常。 当.bat文件在任务计划程序中运行时 - 当它遇到PowerShell调用时挂起
错误是:
您无法在空值表达式上调用方法。
这在使用PowerShell 2的先前服务器上运行良好。这是Windows 2016,因此PowerShell 5也是如此。
具有最高权限的运行任务没有任何区别,因为不需要管理员运行。
请尝试改变它。 ps1抱怨你没有传入参数。
Param(
$File
)
$Word=NEW-OBJECT -COMOBJECT WORD.APPLICATION
# open a Word document, filename from the directory
$Doc=$Word.Documents.Open($File)
# Swap out XML with PDF in the Filename
$Name=($Doc.Fullname).replace(".xml",".pdf")
# write-host $Name
# Save this File as a PDF in Word
$Doc.saveas([ref]$Name, 17)
$Doc.close()
$Word.Quit()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.