2009-05-27 43 views
11

È possibile elevare le autorizzazioni di uno script PowerShell in modo che un utente senza privilegi di amministratore possa eseguire lo script? I nostri amministratori di rete stanno cercando di trovare modi più efficienti in termini di tempo per eseguire determinate attività che adesso devono utilizzare il desktop remoto per ... automatizzarli con gli script PS, ma gli utenti non hanno diritti di amministratore.Elevare gli script Powershell

+3

pone sul server Fault. – Richard

+0

Vedere SF @ http://serverfault.com/questions/12985/elevated-powerhell-script – Richard

+2

sì, se guardi l'utente che ha postato quella domanda ... vedrai che sono stato io. L'ho postato lì perché stavi cercando di ottenere qui la mia domanda avviata ... –

risposta

8

Il compito è più come setuid di sudo ... e per fortuna, setuid è possibile: si può semplicemente creare un'attività pianificata (senza un orario fisso), e impostare l'esecuzione elevati. Quindi, dai ai tuoi utenti i diritti per eseguire quella attività. Ho delineato il processo in a blog post un po 'di tempo fa insieme a uno script di PowerShell per aiutare a creare le attività e le scorciatoie per eseguirle.

Il problema (come suggerito da JaredPar) è che è necessario assicurarsi che le app che si è pianificato di eseguire elevati o "come amministratore" siano protette, e questo è particolarmente vero se si eseguirà uno script. Assicurati che nessuno tranne l'amministratore (i) possa modificare o sostituire quel copione, o stai dando via le chiavi proverbiali al regno.

+0

Sembra che potrebbe funzionare, sai se funzionerà anche con XP? –

+1

Collegamento guasto. Internet Archive * Activate! * Https://web.archive.org/web/20110821152558/http://huddledmasses.org/vista-setuid-how-to-elevate-without-prompting/ –

1

Sembra che si stia cercando un equivalente sudo in Windows. Sudo non è inerente a Windows come lo è per la maggior parte degli ambienti in stile Unix. Ma ci sono diversi strumenti disponibili che sono equivalenti vicini.

essere cauti quando si usano questi tipi di strumenti però. Uno script non criptato + sudo è un rischio per la sicurezza.

6

se si utilizza V2, è possibile utilizzare il seguente che è fino a the PowerShell Team Blog

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

Questo sarebbe eseguire "Get-Process" come amministratore.

Se non si dispone di V2, è possibile creare un oggetto StartInfo e impostare il verbo su Runas in questo modo.

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) 

} 

ho have a blog post che parla un po 'di più su come utilizzare un oggetto System.Diagnostics.ProcessStartInfo.

+1

Ciò non aiuta se gli utenti non sono amministratori;) – Jaykul

+0

Abbastanza corretto. Ho guardato la domanda un po 'troppo velocemente –

1

primo choco install pscx via http://chocolatey.org/ (potrebbe essere necessario riavviare il vostro ambiente di shell)

quindi attivare psxc

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

Quindi utilizzare Invoke-Elevated

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