如何以特定用户身份执行 Powershell cmdlet 并将返回值保存在变量中?

如何以特定用户身份执行 Powershell cmdlet 并将返回值保存在变量中?

如何以特定用户身份执行 Powershell cmdlet 并将返回值保存在变量中?

我目前得到的是这个片段

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

问题是任何返回值都只存在于进程内,而不会带入我执行该命令的 powershell 环境。

答案1

您可以使用Invoke-Command指定的凭据,然后使用return调用的 ScriptBlock 的值:

$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"

如果出现任何错误,则需要执行winrm quickconfig。如果仍然失败,请以管理员权限运行 powershell.exe。

相关内容