Я пытаюсь использовать PowerShell Remoting для проверки некоторых размеров дисков с сервера в удаленном домене, но команды, которые я запускаю, не работают.
Ситуация такая:
- Исходный сервер находится в домене A
- Целевой сервер находится в домене B
- Между этими доменами нет доверия
Сервер в домене B работает под управлением Exchange 2010, и я могу запускать специальные команды Exchange 2010 для него с сервера A, используя эту команду:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUri $ConnectionURI -Credential $Credentials -Authentication Basic
Import-PSSession $Session
Проблема в том, что я не могу запустить какие-либо команды, отличные от Exchange, на этом сервере, используя этот сеанс, если я попытаюсь, он скажет, что не может понять команды. Я проверил и запустил Get-Command с Invoke-Command, а переменная -Session, установленная для моего установленного сеанса, возвращает только команды Exchange.
Поэтому я подумал, что попытаюсь использовать Invoke-Command и соответствующее имя компьютера, тип аутентификации и учетные данные, но это не удается:
Invoke-Command -ScriptBlock {Get-Service} -ComputerName "Servername.destination.com" -Credential $Credentials -Authentication "Basic"
Это ошибка:
[servername.destination.com] Connecting to remote server failed with the following error message : The WinRM client can
not process the request. The authentication mechanism requested by the client is not supported by the server or unencry
pted traffic is disabled in the service configuration. Verify the unencrypted traffic setting in the service configurat
ion or specify one of the authentication mechanisms supported by the server. To use Kerberos, specify the computer nam
e as the remote destination. Also verify that the client computer and the destination computer are joined to a domain.
To use Basic, specify the computer name as the remote destination, specify Basic authentication and provide user name a
nd password. Possible authentication mechanisms reported by server: Negotiate Kerberos For more information, see th
e about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken
Поэтому я захожу в конфигурацию WSMAN на целевом сервере и устанавливаю соответствующие параметры для разрешения базовой аутентификации и незашифрованного соединения:
cd WSMan:\localhost\Service
Set-Item AllowUnencrypted $True
cd .\Auth
Set-Item Basic $True
Я также добавил целевой сервер в список доверенных хостов исходного сервера домена:
cd WSMan:\localhost\Client
Set-Item TrustedHosts servername.destination.com
После этого ошибка меняется, но это не очень полезно:
PS WSMan:\localhost\Client> Invoke-Command -ScriptBlock {Get-Service} -ComputerName "servername.destination.com" -Creden
tial $Credentials -Authentication "Basic"
[servername.destination.com] Connecting to remote server failed with the following error message : Access is denied. Fo
r more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken
Я также пытался использовать учетные данные администратора домена через -Credential (Get-Credential), но это не помогло с той же проблемой.
Пользователь, которого я пытаюсь использовать, является членом локальных администраторов на рассматриваемом сервере, поэтому разрешения уже должны быть установлены в контейнерах PSSessionConfiguration.
Я был бы рад любым дальнейшим указателям с этим! Я бы просто использовал WMI, но на данный момент он не включен через брандмауэры.