2010-02-12 21:46:32 +0000 2010-02-12 21:46:32 +0000
63
63

como executar um script powershell como administrador

No meu ambiente de trabalho Windows 7, tenho script.ps1, que precisa de privilégios de administrador (inicia um serviço). Quero clicar neste script e executá-lo com privilégios de administrador.

Qual é a forma mais fácil de o conseguir?

Respostas (7)

53
53
53
2010-02-13 12:58:54 +0000

Aqui está uma maneira de o fazer, com a ajuda de um ícone adicional no seu ambiente de trabalho. Acho que você poderia mover o script outra pessoa se quisesse ter apenas um único ícone no seu ambiente de trabalho.

  1. Crie um atalho para o seu script Powershell no seu ambiente de trabalho
  2. Clique com o botão direito do rato no atalho e clique em Propriedades
  3. Clique no separador Shortcut*
  4. Clique em Advanced
  5. Seleccione Run as Administrator

Agora pode executar o script elevado com um simples duplo clique no novo atalho no seu ambiente de trabalho.

20
20
20
2013-01-10 17:29:06 +0000

Em sistemas habilitados para UAC, para ter certeza de que um script está rodando com privilégios completos de administração, adicione este código no início do seu script:

param([switch]$Elevated)

function Test-Admin {
  $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
  $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Test-Admin) -eq $false) {
    if ($elevated) 
    {
        # tried to elevate, did not work, aborting
    } 
    else {
        Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}

exit
}

'running with full privileges'

quando rodar seu script com o switch -elevated, ele tentará elevar os privilégios antes de rodar.

13
13
13
2010-11-27 11:48:43 +0000

se estiver na mesma concha de poderes, pode fazer o seguinte:

Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
4
4
4
2010-02-12 22:02:27 +0000

Como está sentado no seu desktop, eu diria que a maneira mais fácil de fazer isto é arrastando-o para o gadget de elevação .

Caso contrário, você poderia fazer um script separado usando o comando elevate no seu script ps1.

Ou, você poderia aplicar elevate apenas no bit de inicialização do serviço.

1
1
1
2015-07-16 17:57:01 +0000

PowerShell ISE vive no sistema %windir%32\WindowsPowerShell\v1.0\PowerShell_ISE.exe. Pode clicar com o botão direito e seleccionar “Run as administrator” e executar o script a partir daí.

Também o pode encontrar sob o Logotipo do Windows > All Programs > Accessories > Windows PowerShell e fazer a mesma coisa com esses atalhos.

0
0
0
2019-07-15 04:56:44 +0000

Se quiser uma opção para lançar um script Powershell como administrador, directamente do menu de contexto do Explorer, veja a secção 2 da minha resposta aqui: https://stackoverflow.com/a/57033941/2441655

-1
-1
-1
2017-10-23 20:34:16 +0000

Adicione isto ao início do guião:

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
exit $LASTEXITCODE
}