如何以特定用户身份执行 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。