Сценарий Powershell не будет работать как система при выходе из системы, но работает нормально, когда пользователь вошел в систему - PullRequest
1 голос
/ 11 октября 2019

У меня есть сценарий PowerShell для преобразования файла .xls в файл .txt. Он отлично работает в PowerShell и как запланированная задача, когда «запускать только когда пользователь вошел в систему» ​​отмечен как моя учетная запись пользователя, но если я пробую систему и запускаю, вошел в систему или нет, она не будет работать.

Я пробовал разные аргументы и уже установил некоторые флаги безопасности для учетной записи.

Некоторые отладки показывают это при запуске от имени системного пользователя:

Microsoft Excel не может получить доступ к файлу 'C: \ test \ test.xls'. Есть несколько возможных причин: • Имя файла или путь не существует. • Файл используется другой программой. • Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.

В C: \ test \ t.ps1: 5 char: 1 + $ WorkBook = $ Excel.Workbooks. Открыть ($ file.Fullname) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: OperationStopped: (:) [], COMException + FullyQualifiedErrorId: System.Runtime.InteropServices.COMException

Нельзя вызывать метод для выражения с нулевым значением. В C: \ test \ t.ps1: 6 char: 1 + $ Workbook.SaveAs ('c: \ test \ t.txt', 42) # xlUnicodeText + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull

#excel processing
$Excel = New-Object -ComObject Excel.Application 
$Excel.visible = $false
$Excel.DisplayAlerts = $false
$file = Get-ChildItem 'c:\test\test.xls'
$WorkBook = $Excel.Workbooks.Open($file.Fullname)
$Workbook.SaveAs('c:\test\t.txt', 42)   # xlUnicodeText
# cleanup
$Excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($WorkBook) |     Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

#powershell -ExecutionPolicy ByPass -File C:\test\t.ps1

Ожидаемый результат создает новый текстовый файл в тестовой папке, фактический результат просто ничего не дает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...