2016-11-30 196 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)不能使用我想因爲它想要一個字符串。 非常感謝,整個連接現在按預期工作! –