2009-05-27 152 views
11

是否有可能提升PowerShell腳本的權限,以便沒有管理員權限的用戶可以運行該腳本?我們的網絡管理員正試圖找到更多省時的方法來完成目前他們必須使用遠程桌面的特定任務......使用PS腳本自動執行這些任務將有所幫助,但用戶沒有管理員權限。Elevate PowerShell腳本

+3

所屬的服務器故障。 – Richard 2009-05-27 13:03:23

+0

查看SF @ http://serverfault.com/questions/12985/elevated-powershell-script – Richard 2009-05-27 15:13:12

+2

是的,如果你看看發佈該問題的用戶......你會看到它是我。我張貼在那裏因爲你試圖讓我的問題在這裏啓動... – 2009-05-28 20:18:32

回答

8

的任務更像是setuid的比須藤......謝天謝地,setuid的可能:你可以簡單地創建計劃任務(沒有設定的時間表),並將其設置爲運行升高。然後,給你的用戶執行該任務的權利。我前面概述了in a blog post以及PowerShell腳本,以幫助創建運行它們的任務和快捷方式。

問題(如JaredPar建議的)是,您必須確保您計劃運行的應用程序提升或「以管理員身份」受到保護,尤其是如果您將運行腳本。確保只有管理員可以編輯或替換該腳本,否則你將王國的公鑰放棄。

6

如果您正在使用V2,你可以使用高達上the PowerShell Team Blog

Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "Get-Process"' 

以下這將運行「獲取進程」以管理員身份。

如果你沒有V2,你可以創建一個StartInfo對象並將這個動詞設置爲Runas。

function Start-Proc { 
    param ([string]$exe = $(Throw "An executable must be specified"),[string]$arguments)  

    # Build Startinfo and set options according to parameters 
    $startinfo = new-object System.Diagnostics.ProcessStartInfo 
    $startinfo.FileName = $exe 
    $startinfo.Arguments = $arguments 
    $startinfo.verb = "RunAs" 
    $process = [System.Diagnostics.Process]::Start($startinfo) 

} 

have a blog post,討論更多的關於使用System.Diagnostics.ProcessStartInfo對象。

+1

如果用戶不是管理員,則不起作用;) – Jaykul 2009-05-27 14:10:42

1

第一choco install pscx通過http://chocolatey.org/(你可能需要重新啓動你的shell環境)

然後啓用psxc

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