从系统帐户下的Powershell启动外部应用程序

时间:2012-10-03 08:27:31

标签: powershell

我需要执行将在系统用户帐户下运行的应用程序(powershell本身在具有管理员权限的标准用户帐户下运行)。我尝试使用自定义凭据启动进程cmdlet:

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

但我有两个问题。首先,我无法创建凭证对象,或者使用空白密码(系统用户没有任何密码),当我使用凭证只有任何密码时,我会收到密码错误的错误消息。任何想法如何做到这一点?

顺便说一下,我不能用psexec。

2 个答案:

答案 0 :(得分:0)

我认为使用PowerShell是不可能的。您可以尝试使用at(dos命令):

at TIME /interactive app.exe

其中TIME是开始流程时的小时hh.mm ...

答案 1 :(得分: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"