Странное поведение при использовании PowerShell Start-Process на локальном компьютере с учетными данными - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть задача в windows планировщике. Он запускает сценарий powershell ScriptScheduler.ps1 в домене \ User1. Этот скрипт запускает еще один GenerateAndApplyACLforMultipleProjects.ps1 с учетными данными Domain \ User2. Когда я запускаю его в интерактивном режиме в домене \ User1, все в порядке. Но с графиком я вижу процесс начался и ничего не произошло. Файл для второго сценария не создан. Единственное, что я получаю, событие 26 в журнале приложения, ошибка о запуске powershell 0xc0000142.

GenerateAndApplyACLforMultipleProjects.ps1 start code:

Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ArgumentList -WindowStyle Hidden -NonInteractive  -ExecutionPolicy Bypass –Noprofile  -file "C:\DATA\ProjectServices\SetProjectPermissions\SCRIPTS\GenerateAndApplyACLforMultipleProjects.ps1" -Verb RunAs -Credential $Credentials -PassThru
Transcript ScriptScheduler.ps1

**********************
Windows PowerShell transcript start
Start time: 20200422212501
Username: Domain\User1
RunAs User: Domain\User1
Machine: TEST-PC (Microsoft Windows NT 6.1.7601 Service Pack 1)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Noninteractive -ExecutionPolicy Bypass –Noprofile -file C:\DATA\Projects\ScriptScheduer\SCRIPTS\ScriptScheduler.ps1
Process ID: 5980
PSVersion: 5.1.14409.1018
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.14409.1018
BuildVersion: 10.0.14409.1018
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is C:\DATA\Projects\ScriptScheduler\LOGS\Transcript.log
Logging initialized.
Script scheduler started.
Run script @{Name=GenerateAndApplyACLforMultipleProjects; Path=C:\DATA\ProjectServices\SetProjectPermissions\SCRIPTS\GenerateAndApplyACLforMultipleProjects.ps1; UserName=Domain\User2; Credentials=System.Management.Automation.PSCredential; LogFile=C:\DATA\Projects\ScriptScheduler\LOGS\Daily.log; Evaluate=True; WorkDir=C:\DATA\ProjectServices\SetProjectPermissions\SCRIPTS} with evaluate.

GenerateAndApplyACLforMultipleProjects

Handles NPM(K) PM(K) WS(K) CPU(s)   Id SI ProcessName
------- ------ ----- ----- ------   -- -- -----------
             0     0     0        5592


Processing results.
Seconds run: [2.446404], task count: [1], task name: [GenerateAndApplyACLforMultipleProjects] errors count: [0].
Script scheduler exited.
PS>$global:?
True
**********************
Windows PowerShell transcript end
End time: 20200422212503
**********************  

1 Ответ

0 голосов
/ 23 апреля 2020

Это ...

Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ArgumentList -WindowStyle Hidden -NonInteractive  -ExecutionPolicy Bypass –Noprofile  -file "C:\DATA\ProjectServices\SetProjectPermissions\SCRIPTS\GenerateAndApplyACLforMultipleProjects.ps1" -Verb RunAs -Credential $Credentials -PassThru

... неправильный способ запуска запланированной задачи. Если $ credentials уже не находятся в памяти при запуске, $ credentials будут пустыми.

Запуск команд и сценариев PowerShell через ST - хорошо документированный и регулярно используемый вариант использования.

Вы можете использовать ST GUI, чтобы настроить это и убедиться, что вы выбрали правильный идентификатор для использования, или использовать PowerShell для создания ST. [Видео]

Документы ---

Новое запланированное задание - docs.microsoft.com

Задание по расписанию - docs.microsoft.com

...