Respostas:
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 .
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"
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á presente na nova instância do PS, para que você possa hackear nela.
Se quiser 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".
O caminho fácil...
Veja 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.
function GoAdmin { start-process powershell –verb runAs }
Etapa 3: reinicie o PowerShell. O comando está agora permanentemente disponível.
Etapa 4: sempre que quiser entrar como 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 de outra forma Elevate
ou qualquer outra coisa, mas eu não queria nenhum risco de conflito, então a nomeei de uma frase de duas palavras sem hífens, para garantir que nunca entrará em conflito com os próprios recursos 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 seu trabalho de administrador faz algo "grande", como adicionar / modificar variáveis de ambiente, o shell do usuário (não administrador) pode simplesmente digitar refreshenv
para recarregar o ambiente e obter as alterações.
Então, basicamente, GoAdmin
faça as coisas de administrador, como instalar pacotes (com https://chocolatey.org/, é claro!), Feche a janela do administrador e execute-o refreshenv
no shell do usuário! Voila.