2012-10-03 80 views
0

我需要執行將在系統用戶帳戶下運行的應用程序(powershell本身在具有管理員權限的標準用戶帳戶下運行)。我嘗試使用自定義憑據的Start-Process cmdlet:從系統帳戶下的Powershell啓動外部應用程序

$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @("system", (ConvertTo-SecureString -String "" -AsPlainText -Force)) 
Start-Process -Credential $cred "app.exe" 

但是我有兩個問題。首先,我不能創建沒有密碼或密碼爲空的憑證對象(系統用戶沒有),並且當我使用只有任何密碼的憑證時,我會收到密碼錯誤的錯誤消息。任何想法如何做到這一點?

btw我不能使用psexec這個。

回答

0

我認爲它不可能與PowerShell。你可以嘗試使用at(DOS命令):

at TIME /interactive app.exe 

其中TIME是小時hh.mm時,啓動過程......

0

您可以使用Invoke-TokenManipulation.ps1腳本:

這個腳本需要管理員權限。它可以枚舉可用的登錄令牌並使用它們來創建新的進程。這使您可以通過使用其登錄令牌創建進程來在網絡上使用另一用戶憑證。即使使用Windows 8.1 LSASS保護,這也可以工作。

複製粘貼或用腳本一起保存爲Invoke-TokenManipulation.ps1和使用點採購加載:

$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path 
. (Join-Path -Path $ScriptDir -ChildPath 'Invoke-TokenManipulation.ps1') 

然後你就可以使用Invoke-TokenManipulation功能。

實施例:

# Spawns cmd.exe as SYSTEM. 
Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\system" 
相關問題