it-swarm-pt.tech

Obtendo privilégios de administrador no PowerShell

Eu só tenho uma conta na minha máquina com Windows Vista e esse usuário tem privilégios administrativos. No entanto, quando tento executar um comando no PowerShell para interromper um determinado processo, sou recebido com a mensagem "Acesso negado". Como me torno administrador?

29
Brian

A maneira mais fácil de fazer isso é iniciar o Powershell com tokens de administração. Para fazer isso, clique com o botão direito do mouse em Powershell (ou um atalho para ele) e clique em "executar como administrador". Como alternativa, você pode usar elevate.cmd .

14
Knox

A maneira do Powershell v2, de acordo com a Microsoft , é clicar com o botão direito do mouse no atalho e escolher Executar como administrador .

E para elevar dentro de uma janela do PowerShell:

start-process powershell –verb runAs

Que a partir de um arquivo em lote cmd.exe, atalho ou linha de execução ficaria assim (repetidamente) assim:

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

Isso abre uma nova instância do 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')
}

Espero que haja problemas com isso - em particular, você não receberá a saída do seu scriptblock novamente no script de chamada. Por outro lado, ele estará lá na nova instância do PS, para que você possa hackear lá.

10
user2278

Se você deseja sempre executar o PowerShell com privilégios de administrador, clique com o botão direito do mouse no atalho do PowerShell, clique no botão "Avançado ..." na guia "Atalho" e selecione "Executar como administrador" ".

5
Ryan Fisher

O caminho mais fácil ...

Isto é como configurar um comando fácil para obter privilégios de administrador a qualquer momento, a partir de qualquer sessão do PowerShell!

Etapa 1: abra seu perfil do PowerShell. (Permita que o bloco de notas crie o arquivo se ele estiver ausente.)

notepad "$profile"

Etapa 2: cole o seguinte código em qualquer lugar desse arquivo. (Escolha com base na versão do PowerShell que você deseja executar - e observe que o perfil é específico da versão; portanto, você pode fazer isso para cada uma das versões do PowerShell se executá-las em paralelo).

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

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

Etapa 3: reinicie o PowerShell. O comando está agora permanentemente disponível.

Etapa 4: sempre que você quiser se tornar administrador, basta digitar GoAdmin (e não se preocupe em digitar a caixa correta; as funções do PS não fazem distinção entre maiúsculas e minúsculas). É claro que você pode nomear a função com algo como Elevate ou qualquer outra coisa, mas como eu não queria nenhum risco de conflito, nomeiei uma frase de duas palavras sem hífens, para garantir que ela nunca entrará em conflito com Recursos próprios do PowerShell.

Observe que a janela do administrador é aberta em um Shell separado. Você pode fechar o Shell original ou mantê-lo aberto. Se o trabalho do seu administrador faz algo "grande", como adicionar/modificar variáveis ​​de ambiente, seu Shell do usuário (não administrador) pode simplesmente digitar refreshenv para recarregar o ambiente e obter as alterações. (Edit: Descobriu que refreshenv é fornecido pelo grande gerenciador de pacotes Chocolatey . Digite Update-SessionEnvironment em vez disso, se você não tiver Chocolatey.)

Então, basicamente, apenas GoAdmin, execute as tarefas administrativas, como instalar pacotes (com https://chocolatey.org/ é claro!), E feche a janela do administrador e execute refreshenv no seu usuário Shell! Voila.

1
Mitch McMabers