Это было трехдневное усилие, и мой лоб плоский от удара о стол.
Я создаю пакет SSIS, который (частично) будет выполнять сценарий PowerShell, который будет использовать COM (DCOM? ) для преобразования .docx в .pdf. Я использую Visual Studio для своей разработки.
Сценарий преобразования:
#Word2PDF.ps1#
param ($varSrcFileName, $varDestFileName)
$Word=NEW-OBJECT –COMOBJECT WORD.APPLICATION #-ErrorAction stop
$Doc=$Word.Documents.Open($varSrcFileName)
$Doc.saveas([ref] $varDestFileName, [ref] 17)
$Doc.Close()
Конечно, он отлично работает с прямым Powershell
powershell.exe "C:\scripts\powershell\TestScriptsONLY\Word2PDF.ps1 [path]\test.docx [path]\test.pdf"
[путь] - это путь UN C, и я предоставил права пользователю SQL Proxy.
Я сократил свою разработку до одной задачи процесса SSIS, где:
Executable = powershell.exe
Arguments = c: \ Scripts \ powershell \ TestScriptsONLY \ Word2PDF.ps1 [путь] \ test.docx [путь] \ test.pdf
Я сохранил и опубликовал его. Когда я выполняю его напрямую (правой кнопкой мыши package.dtsx и выбираю «Выполнить»), он работает нормально. Когда я создаю задание для выполнения пакета, оно указывает, что оно успешно завершено, но не выполняет преобразование. Я попытался запустить задание как с учетной записью агента SQL, так и с учетной записью прокси-сервера - обе не удались. Я добавил учетную запись прокси как пользователь RDS, вошел в систему как этот пользователь и подтвердил то же поведение (он работает непосредственно под прокси-пользователем, но не как задание под прокси-пользователем - я ожидал этого, но должен был подтвердить).
Это должно выполняться на Windows 2012 R2 (64-разрядная версия), с Word 2016 и Powershell V4.0.
Я не программист - я самоучка, повторяя , и много гуглил. Я в основном системный администратор, поэтому разбираюсь в правах и разрешениях. Если есть дополнительная информация, дайте мне знать.
Я пробовал, кажется, миллион различных способов заставить это выполнить, и все из них не удалось. ЛЮБАЯ помощь или направление были бы замечательными.
Спасибо!