我正在尝试使用Powershell开发自定义任务,该任务需要使用Start-Job -Cred切换到其他用户。代理以用户A的身份运行,我需要切换到用户B。以用户A的身份登录运行代理的服务器,然后运行脚本可以正常工作-Start-Job切换凭据并以用户B的身份运行脚本块。

使用与用户A运行代理的相同(本地)代理服务器从云中的VSTS运行完全相同的操作会失败,并显示错误消息:

"The background process reported an error with the following message: ."

我已经进行了更多的调试,并且在任何地方都没有其他错误消息。它似乎与-CredStart-Job参数有关,因为它与脚本块运行没有什么区别,而且如果我删除-Cred参数,也可以。
  • 用户A在运行代理
  • 的服务器上的“管理员”组中
  • 代理以用户A的身份运行

  • 有任何想法吗?

    最佳答案

    例如,使用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
    

    10-06 11:23