Como executar o script Powershell como usuário atual a partir de um contexto elevado?

Como executar o script Powershell como usuário atual a partir de um contexto elevado?

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-PSDrivepara 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-PSDrivede 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.

informação relacionada