我试图从远程计算机(名称:Test)上的计算机(名称:Build)运行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
当我在testing计算机上运行上述脚本时,本地工作正常。 但是当我尝试从Builds计算机执行这个脚本时,它给出了以下错误:
虽然用户名和密码是正确的。 唯一的事情是密码包含特殊字符。 这就是我所说的脚本
您可能只需要将您的域名前缀放在您的用户名之前,或者使用UPN(例如CONTOSO \ Test或[email protected])。
你读了错误吗? 您传递给Start-Process cmdlet的用户名和/或密码不正确。 修复这个。
Cory Knutson的答案是正确的。 而MDMarra是正确的。 他们的答案背后的原因将帮助您在未来的身份validation故障排除。
您的身份validation不正确。
更具体地说,您没有以目标主机可以validation您正在使用的用户的方式将完整凭据传递到目标主机。 有三部分authentication:
用户名和域通常连接在一起。 通常使用username @ domain 。 对于Windows域, 域/用户名是从Windows NT开始直到Windows Server 2003 Active Directory的标准。 Windows仍然识别旧的NT格式,但为了保持一致性,特别是在企业中使用非Windows主机时,应该使用username @ domain格式。
您正在告诉testing主机:“以下列用户身份运行此脚本:testing和以下密码”。 给定一个用户名,独立的Windows主机将localhost作为域。 给定一个用户名,一个join了Windows主机的域就承担localdomain。 你必须指定是否使用不同的东西。