Сбой сценария PowerShell при запуске из планировщика задач - PullRequest
0 голосов
/ 18 июня 2019

Сценарий 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.

Запуск задачи с наивысшими привилегиями не имеет значения, так как для запуска не требуется администратор.

1 Ответ

0 голосов
/ 18 июня 2019

Попробуйте изменить это так, пожалуйста.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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...