Есть 2 сценария PowerShell, которые запускаются при запуске, 1 находится под моим контролем, а другой — вне моего контроля.
Оба наших скрипта используют Start-Process. Странная проблема заключается в том, что если оба наших процесса запуска выполняются одновременно, я получаю следующую ошибку из своего сценария:
Start-Process : This command cannot be run due to the error: An instance of the service is already running.
Есть ли способ узнать, запущен ли уже другой «Start-Process»? Я знаю о «Get-Process», но показывает только работу PowerShell, а не то, какой командлет запущен в данный момент.
Я не сторонник НЕ использования Start-Process.
В качестве временного обходного пути я сказал своему скрипту спать в течение 60 секунд, но предпочел бы ЗНАТЬ, когда другой процесс запуска будет выполнен.
Вот мой код:
$pw = ConvertTo-SecureString -AsPlainText -Force -String "myPassword"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "Administrator",$pw
$psArgList = "-ExecutionPolicy Bypass","-file"
$psArgList += $args
Start-Process powershell.exe -Wait -Credential $cred -ArgumentList $psArgList
Это позволяет мне запускать другой сценарий PowerShell с полными привилегиями: от имени администратора с ExecutionPolicy в качестве обхода.