有两个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.
有没有办法看看是否有另一个" Start-Process"已经运行?我知道" Get-Process"但只显示PowerShell正在运行,而不是当前正在运行的cmdlet。
我不赞成不使用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脚本:将Admin with ExecutionPolicy作为Bypass。
答案 0 :(得分:1)
我想建议一个替代方案。如果您在登录时运行此操作,为什么不从任务计划程序运行它,并将其作为您要使用凭据的帐户运行?创建任务时,您需要设置一些内容。
在“常规”选项卡上
在“触发器”选项卡上
在“操作”选项卡上
然后点击OK。它会提示您输入您尝试运行脚本的帐户的密码,Windows将从那里管理它。