从远程计算机以另一个用户身份运行 powerscript

从远程计算机以另一个用户身份运行 powerscript

我正在尝试从一台计算机(名称:Builds)在一台远程计算机(名称:Test)上运行 powershell 脚本,两台机器都运行 Windows 10。脚本如下:

param ([Parameter(Mandatory=$true)][string]$buildPath)

$strScriptUser = "Test"
$strPass = "hld@1234"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$Credential = new-object system.management.automation.PSCredential $strScriptUser,$PSS

Write $Credential.UserName

Start-Process powershell.exe "C:\Users\Test\Documents\PowerShellForContinua\Core.ps1 '$buildPath'" -Credential $Credential -Wait

当我在测试计算机上运行上述脚本时,它在本地运行良好。但是当我尝试从构建计算机执行此脚本时,它出现以下错误:

执行脚本时出错

虽然用户名和密码是正确的。唯一的问题是密码包含特殊字符。这就是我调用脚本的方式

在此处输入图片描述

答案1

您可能只需要在用户名前加上域前缀,或者使用 UPN(例如 CONTOSO\Test 或[电子邮件保护])。

答案2

您读到错误了吗?您传递给 Start-Process cmdlet 的用户名和/或密码不正确。修复它。

答案3

Cory Knutson 的回答是正确的。MDMarra 的回答也是正确的。他们回答背后的原因将有助于您在未来进行身份验证故障排除。

您的身份验证不正确。

更具体地说,您没有以目标主机可以验证您正在使用的用户的方式将完整凭据传递给目标主机。身份验证分为三个部分:

  1. 用户名
  2. 领域
  3. 密码

用户名和域名通常连在一起。一般来说,用户名@域名被使用。对于 Windows 域,域名/用户名是从 Windows NT 开始直到 Windows Server 2003 Active Directory 的标准。Windows 仍然识别旧的 NT 格式,但为了保持一致性,特别是如果您在企业中使用非 Windows 主机,用户名@域名应使用格式。

您告诉测试主机,“以以下用户身份运行此脚本:test 和以下密码”。如果仅提供用户名,独立的 Windows 主机会将 localhost 假定为域。如果仅提供用户名,加入域的 Windows 主机会将 localdomain 假定为域。如果您使用其他名称,则必须指定。

相关内容