我正在尝试使用Powershell开发自定义任务,该任务需要使用Start-Job -Cred
切换到其他用户。代理以用户A的身份运行,我需要切换到用户B。以用户A的身份登录运行代理的服务器,然后运行脚本可以正常工作-Start-Job
切换凭据并以用户B的身份运行脚本块。
使用与用户A运行代理的相同(本地)代理服务器从云中的VSTS运行完全相同的操作会失败,并显示错误消息:
"The background process reported an error with the following message: ."
我已经进行了更多的调试,并且在任何地方都没有其他错误消息。它似乎与
-Cred
的Start-Job
参数有关,因为它与脚本块运行没有什么区别,而且如果我删除-Cred
参数,也可以。有任何想法吗?
最佳答案
例如,使用Invoke-Command尝试一下(输出当前用户名):
$mypwd = ConvertTo-SecureString -String "[password, could use variable]" -Force -AsPlainText
$Cred = New-Object System.Management.Automation.PSCredential('[user name]',$mypwd)
$scriptToExecute =
{
$VerbosePreference='Continue'
Write-Output "$env:UserName"
# Write-Verbose "Verbose" 4>&1
}
$b = Invoke-Command -ComputerName localhost -ScriptBlock $scriptToExecute -Credential $Cred
Write-Output "Content of variable B"
Write-Host $b