2016-11-30 40 views
0

“连接到与下面的错误消息失败远程服务器:WinRM的不能处理该请求,而使用协商身份验证发生与错误代码0x80090304以下错误:。发生未知安全性错误”WinRM的不能处理该请求

我试图远程运行脚本以非域服务器和客户端也没有域的一部分,因为我们的环境是基于微焦的eDirectory。

我已经配置/试过客户端和服务器上执行以下操作:

winrm quickconfig 
WinRM set winrm/config/client @{TrustedHosts="*"} 
Set-item wsman:localhost\client\trustedhosts -value * 

再次,没有机器是域的一部分,但我认为它会与trustedhosts工作。

代码试图这样来验证容貌:

[xml]$windows=(Get-Content P:\script\windows.xml) 

$windows.servers.host | ForEach-Object { 

$password = ConvertTo-SecureString $_.pass -AsPlainText -Force 
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "$_.name+$_.user",$password 

Invoke-Command -ComputerName $_.name -Credential $credential -ScriptBlock {Get-Culture} 
} 
+0

是否在目标计算机上启用了ps远程处理? 'enable-remoting' – Moerwald

+0

这是,第一行“winrm quickconfig”包括启用PSremoting,我也尝试过后,它没有工作,但没有骰子分开后启用它。 –

回答

1

你的问题是用户名的格式。 “$ 。名称+ $。用户”将评估在它的中间有一个+一个字符串,因为报价均元素缠。如果源文件没有在名称字段中放置尾随'\',则写入该文件的正确方法将为"$($_.name)$($_.user)"或更可能 "$($_.name)\$($_.user)"

+0

这不是问题,因为$ _。用户变量以\开头,所以它恐怕是我想要的。 –

+0

的'+'在字符串中间仍然在评估一个字符,而不是运营商,如果斜杠是在输入'“$($ _。名称)$($ _。用户)”'或'( $ _。name + $ _。user)'是正确的格式。你目前正在生成一个看起来像“Name + \ User”的字符串 –

+0

现在我明白你在看什么了!你绝对正确,看起来你的第一个建议'“$($ _。name)$($ _。user)”'效果更好,但是($ _。name + $ _。user)不能使用我想因为它想要一个字符串。 非常感谢,整个连接现在按预期工作! –