如何从提升的PowerShell控制台以非管理员身份运行流程?

时间:2015-04-10 19:28:01

标签: windows powershell elevated-privileges start-process

也许有一种方法可以使用我找不到的Start-Process cmdlet来实现它?我在StackOverflow上找到的其他相关Q / A(例如thisthisthis都提供了使用自定义C#代码执行此操作的解决方案。我的问题是具体的,有没有直接的方法在PowerShell中执行此操作?即你是在一个升级的PS控制台,并希望以非管理员身份运行一个过程。

5 个答案:

答案 0 :(得分:11)

您可以使用TrustLevel指定runas.exe,有效地运行"限制"

runas /trustlevel:0x20000 "powershell.exe -command 'whoami /groups |clip'"

您应该在whoami的输出中看到令牌中的Administrators组被标记为"仅用于拒绝"


enter image description here

答案 1 :(得分:4)

当您深入研究此问题时,如链接任务所述,无法运行UAC"非"从升高的过程升高过程。由于这正是我所要求的,而且runas解决方案对我来说并不起作用,因此我转换了Microsoft提供的代码解决方法,以使用计划任务来启动"非"提升过程。

将powershell.exe作为"非"运行的示例从提升的powershell提示升级进程:

$apppath = "powershell.exe"
$taskname = "Launch $apppath"
$action = New-ScheduledTaskAction -Execute $apppath
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date)
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskname | Out-Null
Start-ScheduledTask -TaskName $taskname
Start-Sleep -s 1
Unregister-ScheduledTask -TaskName $taskname -Confirm:$false

以上powershell命令仅适用于Windows Server 2012 / Windows 8及更高版本。

或者您可以使用SCHTASKS.EXE应用程序来覆盖大多数版本的Windows:

$apppath = "powershell.exe"
$taskname = "Launch $apppath"
schtasks /create /SC ONCE /ST 23:59 /TN $taskname /TR $apppath
schtasks /run /tn $taskname
Start-Sleep -s 1
schtasks /delete /tn $taskname /F

答案 2 :(得分:1)

您可以通过传递您要作为其运行的用户的凭据,从提升的会话中运行非管理员进程。如果您想以交互方式运行,您可以使用 Get-Credential,如果您希望脚本在无人看管的情况下运行,您可以使用 Import-ClixmlSecretStore 或其他一些已建立的机制来存储和检索凭据。例如:

$credential = Get-Credential -UserName $Env:USERNAME
# or
$credential = Import-Clixml -Path 'C:\MyCredential.cred'

Start-Process -FilePath pwsh.exe -ArgumentList '-noprofile' -Credential $credential -Wait

答案 3 :(得分:0)

另一种有限的方式:让Windows资源管理器为您启动它

PS C:\> explorer.exe "C:\windows\system32\cmd.exe"

只需使用完整路径和扩展名即可。但是它不接受参数。

我尝试创建一个批处理文件。但是资源管理器拒绝启动.BAT.CMD

答案 4 :(得分:-5)

start-process中存在切换runas,如

start-process powershell -verb runAs

但仍然uac检查你是否在你的系统uac上你应该首先绕过 uac 有很多方法可以绕过uac但是所有方法都不适用于所有窗口,如Windows 8 如果您为运行流程编写脚本然后compile to exe,您可以使用runasadmin等程序在系统中以管理员身份运行,但仍无法在Windows 8中运行