WinRM не может обработать запрос

«Не удалось подключиться к удаленному серверу со следующим сообщением об ошибке: WinRM не может обработать запрос. При использовании проверки подлинности Negotiate произошла следующая ошибка с кодом ошибки 0x80090304: произошла неизвестная ошибка безопасности».

Я пытаюсь запускать сценарии удаленно на серверах вне домена, и клиенты также не являются частью домена, поскольку наша среда основана на MicroFocus eDirectory.

Я настроил/попробовал следующее как на клиенте, так и на сервере:

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

И снова ни одна из машин не является частью домена, но я предположил, что это будет работать с доверенными хостами.

Код, пытающийся аутентифицироваться, выглядит так:

[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}
}  

person Patrik Persson    schedule 30.11.2016    source источник
comment
Включено ли удаленное взаимодействие ps на целевой машине? enable-remoting   -  person Moerwald    schedule 30.11.2016
comment
То есть первая строка winrm quickconfig включает в себя включение PSremoting, я также пытался включить его отдельно после того, как это не сработало, но пока без кубиков.   -  person Patrik Persson    schedule 05.12.2016


Ответы (1)


Ваша проблема в форматировании имени пользователя. "$.name+$.user" будет оцениваться как строка со знаком + в середине, поскольку оба элемента заключены в кавычки. правильный способ записи будет "$($_.name)$($_.user)" или более вероятным, если исходный файл не ставит завершающий '\' в поле имени "$($_.name)\$($_.user)"

person Mike Garuccio    schedule 30.11.2016
comment
Это не проблема, так как переменная $_.user начинается с \, так что, боюсь, это так, как предполагалось. - person Patrik Persson; 05.12.2016
comment
+ в середине строки по-прежнему оценивается как символ, а не как оператор, если косая черта находится во входных данных, "$($_.name)$($_.user)" или ($_.name + $_.user) будет правильным форматированием. в настоящее время вы генерируете строку, которая выглядит как Name+\User - person Mike Garuccio; 05.12.2016
comment
А, теперь я вижу, к чему ты клонишь! Вы абсолютно правы, и кажется, что ваше первое предложение "$($_.name)$($_.user)" работает намного лучше, но я думаю, что ($_.name + $_.user) нельзя использовать, поскольку ему нужна строка. Большое спасибо, все соединение теперь работает как задумано! - person Patrik Persson; 07.12.2016