有 2 个 PowerShell 脚本在启动时运行,1 个在我的控制范围内,另一个不在我的控制范围内。
我们的两个脚本都使用 Start-Process。奇怪的问题是,如果我们的两个 Start-Process 恰好同时执行,我的脚本会出现以下错误:
Start-Process : This command cannot be run due to the error: An instance of the service is already running.
有没有办法查看另一个“启动进程”是否已经在运行?我知道“Get-Process”,但只显示 PowerShell 正在运行,而不是当前正在运行的 cmdlet。
我不赞成不使用 Start-Process。
作为一种临时解决方法,我告诉我的脚本休眠 60 秒,但宁愿知道其他 Start-Process 何时完成。
这是我的代码:
$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 作为绕过。