Запустите PowerShell Script в службе Windows 10, чтобы конвертировать docx в pdf - PullRequest
1 голос
/ 15 января 2020

У меня есть скрипт powershell для преобразования docx в pdf. при запуске в сеансе пользователя на windows 10 он запускается без проблем. Однако мне нужно запустить его в службе windows.

$docx_filename = 'C:\temp\doc2pdf.docx'
$pdf_filename = 'C:\temp\doc2pdf1.pdf'

$word_app = New-Object -ComObject Word.Application

$document = $word_app.Documents.Open($docx_filename)
$document.SaveAs([ref] $pdf_filename, [ref] 17)
$document.Close()

$word_app.Quit()

Сценарий вызывается с помощью следующей команды

powershell.exe -executionpolicy Bypass -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -File -File "docx2pdf.ps1" -docxFilename "docx2pdf.docx" -pdfFilename "docx2pdf.pdf"

При использовании PSSet-Debug -Trace 2 следующее logged

DEBUG:   14+   >>>> $word_app = New-Object -ComObject Word.Application
DEBUG:     ! SET $word_app = 'Microsoft.Office.Interop.Word.ApplicationClass'.
DEBUG:   16+   >>>> $document = $word_app.Documents.Open($docxFilename)

Как заставить это работать в Windows 10 сервисе?

спасибо

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Вы должны установить учетную запись на вкладке «Вход в систему» ​​ . Обязательно укажите учетную запись, в которой вы можете войти в систему в интерактивном режиме и успешно запустить сценарий Powershell (т. Е. Там, где вы установили Word).

Но даже с этим изменением вы все равно можете столкнуться с проблемами, поскольку Office равен не совсем подходит для работы в Windows Сервисе . Некоторые вещи работают, но некоторые нет. Попробуйте и дайте нам знать, как вы ладите.

0 голосов
/ 15 января 2020

Вам нужно создать командный файл, который может запускать скрипт powershell, например:

@echo off 
Powershell.exe set-executionpolicy remotesigned -File ScriptPath

Сохраните его как "startps.bat"

Затем вы можете использовать s c команда для создания службы windows, указав путь к пакетному файлу следующим образом:

Sc create PSScriptService Displayname= "What you like" binpath= "Startps.bat" start= auto
...