2009-10-14 62 views
14

我有一個簡單的PowerShell腳本停止進程:顯示在PowerShell中的UAC提示如果操作需要提升

$p = get-process $args 
if ($p -ne $null) 
{ 
$p | stop-process 
$p | select ProcessName, ID, HasExited, CPU, Handles 
} 
else { "No such process" } 

如果我試圖停止不被當前用戶啓動的進程;它適用於Windows Server 2003中但是,Windows Server 2008(與用戶帳戶控制其他Windows香精),我得到以下錯誤的:

Stop-Process : Cannot stop process "w3wp (5312)" because of the following error: Access is denied 

有什麼辦法來解決這個問題,而不以提升運行PowerShell的特權?如果用戶只是在UAC提示符下出現,每當他嘗試執行一個需要提升的動作時,都可以。

回答

17

AFAIK,沒有辦法做到這一點,你覺得你想要的。這是運行指定的.exe,並期望立即出現提示。

我所做的是我知道的命令必須以管理權限運行,我使用一個名爲Invoke-Admin的函數來運行它們。它確保我以管理員身份運行,並在運行命令之前使用UAC對話框提示用戶。

function Invoke-Admin() { 
    param ([string]$program = $(throw "Please specify a program"), 
      [string]$argumentString = "", 
      [switch]$waitForExit) 

    $psi = new-object "Diagnostics.ProcessStartInfo" 
    $psi.FileName = $program 
    $psi.Arguments = $argumentString 
    $psi.Verb = "runas" 
    $proc = [Diagnostics.Process]::Start($psi) 
    if ($waitForExit) { 
     $proc.WaitForExit(); 
    } 
} 
+0

權,如何把標準輸出&錯誤輸出到當前命令提示符flux? – 2014-11-26 14:29:18

+0

在pscx中是這樣的嗎?如果沒有,你可以添加它嗎? – 2015-02-18 23:34:30

0

該腳本sectio檢查中等強制性級別令牌(非升高admin)和重新啓動升高該腳本。

if ($Mygroups -match ".*Mandatory Label\\Medium Mandatory Level") { 
    #non elevated admin: elevating 
    write-host "Elevate" 
    start-process powershell -Argumentlist "$PSCommandPath -Yourargument $Youragumentvalue" -verb runas -Wait 
    exit 
} 
3

首先安裝PowerShell Community Extensionschoco install pscx通過Chocolatey(你可能需要重新啓動你的shell環境)

然後啓用pscx

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx 

然後用Invoke-Elevated,例如

Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR 
+0

你在哪找到「Invoke-Elevated」。除非你寫了這個函數,否則沒有這樣的命令。我錯了嗎? – Habanagold 2016-02-23 18:45:38

+0

您是否安裝並啓用PSCX?這是PSCX的一部分,請參閱http://stackoverflow.com/a/8703862/1689770 – 2016-02-23 20:13:21

+0

謝謝,只需鍵入Install-Package - 名稱pscx - 源psgallery,它的工作原理!如果它不啓動一個不同的控制檯但提升當前控制檯,它會更好,無論如何,我認爲這取決於Windows如何管理這些進程。 – 2017-06-15 13:01:53