como executar um script do powershell como administrador

52

No meu Windows 7 Desktop, eu tenho o script.ps1, que precisa de privilégios de administrador (ele inicia um serviço). Eu quero clicar neste script e executá-lo com privilégios de administrador.

Qual é a maneira mais fácil de conseguir isso?

    
por Sajee 12.02.2010 / 22:46

6 respostas

43

Aqui está uma maneira de fazer isso, com a ajuda de um ícone adicional na sua área de trabalho. Acho que você poderia mover o script para outra pessoa se quisesse ter apenas um ícone em sua área de trabalho.

  1. Crie um atalho para o seu script Powershell na sua área de trabalho
  2. Clique com o botão direito do mouse no atalho e clique em Propriedades
  3. Clique na guia Atalho
  4. Clique em Avançado
  5. Selecione Executar como administrador

Agora você pode executar o script com um simples clique duplo no novo atalho da sua área de trabalho.

    
por 13.02.2010 / 13:58
14

Em sistemas habilitados para UAC, para garantir que um script esteja sendo executado com privilégios de administrador completos, 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'

ao executar seu script com o switch -elevated, ele tentará elevar os privilégios antes de executá-lo.

    
por 10.01.2013 / 18:29
13

se você estiver no mesmo powershell você pode fazer isso:

Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
    
por 27.11.2010 / 12:48
4

Como está na sua área de trabalho, eu diria que a maneira mais fácil de fazer isso é arrastando-o para o gadget de elevação .

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

Ou você pode aplicar elevate apenas ao bit inicial do serviço.

    
por 12.02.2010 / 23:02
1

O PowerShell ISE reside em% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Você pode clicar com o botão direito do mouse e selecionar "Executar como administrador" e executar o script lá.

Você também pode encontrá-lo sob o logotipo do Windows > Todos os programas > Acessórios > Windows PowerShell e faça o mesmo com esses atalhos.

    
por 16.07.2015 / 19:57
-1

Adicione isso ao início do script:

$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
}
    
por 23.10.2017 / 22:34