2014-09-23 136 views
0

有2個PowerShell腳本在啓動時運行,1個在我的控制之下,另一個在我的控制之外。PowerShell:啓動進程的另一個實例已在運行

我們的兩個腳本都使用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。

我不贊成不使用啓動過程。

作爲一個臨時解決方法,我告訴我的腳本睡了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旁路。

+0

我不太確定這是使用Start-Process作爲兩個會話嘗試同時運行服務的另一個會話的問題。你的啓動過程試圖做什麼?你能否顯示相關的代碼? – TheMadTechnician 2014-09-23 22:21:45

+0

感謝您的評論。更新了帖子以包含我的代碼。 – Vippy 2014-09-23 22:35:33

回答

1

我想建議一個替代方案。如果您在登錄時運行此操作,爲何不從任務計劃程序運行它,並將其作爲您要使用憑據的帳戶運行?創建任務時,您需要設置一些內容。

在常規選項卡

  • 選擇帳戶,你要運行的任務,因爲
  • 告訴它「運行用戶是否登錄或不」
  • 選擇「使用最高權限運行」

在觸發器選項卡

  • 創建一個觸發器,以便即使發生「在登錄」,選擇什麼樣的用戶,或將其發生的任何用戶(默認)

在操作選項卡

  • 創建行動
  • 對於應用程序簡單地把powershell.exe(使用完整路徑,如果你願意的話)
  • 在參數字段中輸入您的論點,如「-ExecutionPolicy繞道 - 文件」

然後點擊確定。它會提示您輸入您嘗試運行該腳本的帳戶的密碼,Windows將從該帳戶進行管理。

+0

好主意,我會試一試並回報。謝謝。 – Vippy 2014-09-23 23:10:38

+0

謝謝,這是一個很好的選擇。仍然希望我知道爲什麼2個「Start-Process」不能同時從Run reg鍵運行。 – Vippy 2014-09-24 19:28:18

+0

我仍然不相信他們不能,並且懷疑這是你嘗試着手的過程,那就是問題所在。 – TheMadTechnician 2014-09-24 19:30:12

相關問題