Eu tenho um script Powershell que requer elevação de administrador para configurar um compartilhamento de arquivos do Azure, entre outras coisas. O comando de script final usa New-PSDrive
para mapear o compartilhamento de arquivos para uma letra de unidade. Minha expectativa é que a nova letra da unidade esteja acessível no Windows Explorer. Estou ciente de que o uso New-PSDrive
de um contexto elevado apenas mapeia a unidade nesse contexto, portanto não está disponível para minha conta de usuário.
Como executo um script/processo Powershell como o usuário atual a partir de um script elevado?
Responder1
Você não pode alterar o contexto do usuário sem fornecer credenciais de usuário. Você pode obter o usuário conectado com bastante facilidade, mas nunca obterá a senha, a menos que ele a insira.
Invoke-Command -FilePath "yourPath\yourScript.ps1" -ComputerName yourServer -Credential Get-Credential
Em segundo lugar, se você estiver executando remotamente, o usuário nunca verá isso, pois ele só pode ser executado no contexto original em que você está.
O PowerShell não permite que você faça isso nativamente, pois é um limite de segurança do Windows. Se você realmente precisar fazer isso, tente usar o MS SysInternals PSExec.
Ou procure fazer coisas em uma tarefa agendada.
Responder2
Eu estava pensando nisso tudo errado, já que por padrão executo tudo como Admin. Dividi o script em dois scripts separados, um para código que requer direitos de administrador e outro que requer direitos de usuário. Eu chamo o script de direitos do usuário que verifica e comete erros no contexto administrativo. Então posso executar o script Admin a partir do script do usuário em seu próprio prompt elevado, esperar e voltar ao contexto do usuário.