Сценарий PowerShell для преобразования XML-файла в PDF, вызываемый из .bat-файла, не выполняется при запуске в планировщике задач, но отлично работает из командной строки.
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
)
Это должно преобразовать все файлы XML в D: \ FtxData \ ebixprod \ ER \ Output в файлы .pdf.
Работает нормально, если язапустите файл .bat в командной строке.Зависание при запуске файла .bat в планировщике заданий - при обращении к вызову PowerShell
Ошибка:
Невозможно вызвать метод для выражения с нулевым значением.
Это отлично работало на предыдущем сервере с PowerShell 2. Это Windows 2016, поэтому есть PowerShell 5.
Запуск задачи с наивысшими привилегиями не имеет значения, так как для запуска не требуется администратор.