sviluppo-web-qa.it

Ottenimento dei privilegi di amministratore in PowerShell

Ho solo un account sul mio computer con Windows Vista e quell'utente ha i privilegi di amministratore. Tuttavia, quando provo a eseguire un comando in PowerShell per interrompere un determinato processo, sono accolto con un messaggio "Accesso negato". Come posso diventare amministratore?

29
Brian

Il modo più semplice per farlo è avviare Powershell con token di amministrazione. Per fare ciò, fai clic destro su Powershell (o un collegamento ad esso) e fai clic su "Esegui come amministratore". In alternativa puoi usare elevate.cmd .

14
Knox

Il modo Powershell v2, secondo Microsoft , è fare clic con il tasto destro sul collegamento e scegliere Esegui come amministratore .

E per elevare all'interno di una finestra Powershell:

start-process powershell –verb runAs

Che da un file batch cmd.exe, un collegamento o una riga di esecuzione apparirebbe (ripetutamente) in questo modo:

powershell "start-process powershell -verb runas"
26
Nathan Hartley

Questo apre una nuova istanza di PowerShell:

function Run-Elevated ($scriptblock)
{
  # TODO: make -NoExit a parameter
  # TODO: just open PS (no -Command parameter) if $scriptblock -eq ''
  $sh = new-object -com 'Shell.Application'
  $sh.ShellExecute('powershell', "-NoExit -Command $scriptblock", '', 'runas')
}

Mi aspetto che ci siano problemi con questo - in particolare, non otterrai l'output del tuo scriptblock nello script chiamante. D'altra parte, sarà lì nella nuova istanza di PS in modo che tu possa hackerare lì.

10
user2278

Se si desidera sempre eseguire PowerShell con i privilegi di amministratore, è possibile fare clic con il tasto destro del mouse sul collegamento PowerShell, quindi fare clic sul pulsante "Avanzate ..." nella scheda "Collegamento", quindi selezionare "Esegui come amministratore ".

5
Ryan Fisher

Il modo più semplice ...

Ecco come impostare un comando facile per ottenere i privilegi di amministratore in qualsiasi momento, da qualsiasi sessione di PowerShell!

Passaggio 1: apri il tuo profilo PowerShell. (Consenti al blocco note di creare il file se manca).

notepad "$profile"

Passaggio 2: incolla il seguente codice in qualsiasi punto del file. (Scegliere in base alla versione di PowerShell che si desidera eseguire e notare che il profilo è specifico della versione, quindi è possibile farlo per ciascuna delle versioni di PowerShell se le si esegue in parallelo).

# PowerShell 5
function GoAdmin { Start-Process PowerShell –Verb RunAs }

# PowerShell Core
function GoAdmin { Start-Process pwsh –Verb RunAs }

Passaggio 3: riavviare PowerShell. Il comando è ora disponibile in modo permanente.

Passaggio 4: Ogni volta che vuoi andare all'amministratore, digita semplicemente GoAdmin (e non preoccuparti di digitare il caso corretto; le funzioni PS in realtà non fanno distinzione tra maiuscole e minuscole). Ovviamente puoi nominare la funzione in modo diverso come Elevate o altro, ma non volevo alcun rischio di conflitti, quindi l'ho chiamata frase di due parole senza trattini, per assicurarmi che non entrerà mai in conflitto Funzionalità di PowerShell.

Si noti che la finestra dell'amministratore si apre in una Shell separata. È possibile chiudere la shell originale o tenerla aperta. Se il tuo lavoro di amministratore fa qualcosa di "grande" come l'aggiunta/modifica di variabili d'ambiente, l'utente-Shell (non amministratore) può semplicemente digitare refreshenv per ricaricare il suo ambiente e ottenere le modifiche. (Modifica: scoperto che refreshenv è fornito dal fantastico gestore pacchetti Chocolatey . Digitare Update-SessionEnvironment invece se non hai Chocolatey.)

Quindi in pratica, solo GoAdmin, esegui le cose dell'amministratore come l'installazione di pacchetti (con https://chocolatey.org/ ovviamente!), Quindi chiudi la finestra di amministrazione ed esegui refreshenv nella tua shell utente! Ecco.

1
Mitch McMabers