起動時に実行される PowerShell スクリプトが 2 つあります。1 つは自分の管理下にあり、もう 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 のみが表示されます。
私は 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 を Bypass として使用します。