2012-10-03 67 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" 
相关问题