Como executar um cmdlet Powershell como um usuário específico e salvar o valor de retorno em uma variável?

1

Como posso executar um cmdlet Powershell como um usuário específico e salvar o valor de retorno em uma variável?

O que eu tenho até agora é esse trecho

Start-Process powershell.exe -Credential $credentials -NoNewWindow -ArgumentList "Get-Item Env:AppData"

O problema é que qualquer valor de retorno vive apenas no processo e não é trazido para o ambiente do PowerShell de onde eu executei o comando.

    
por Daniel 21.08.2014 / 14:10

1 resposta

3

Você pode usar Invoke-Command com as credenciais especificadas e, em seguida, return do valor do ScriptBlock invocado:

$Credentials = (Get-Credential)
$ScriptToExecute = {return (Get-Item Env:AppData)}
$AppData = Invoke-Command -ComputerName localhost -Credential $Credentials -ScriptBlock $ScriptToExecute

$AppData # Now contains the Environment var named "AppData"

Se isso gerar algum erro, você precisa executar winrm quickconfig . Se ainda falhar, execute powershell.exe com privilégios de administrador.

    
por 21.08.2014 / 16:50

Tags