- Оставить заявку
- ITkrim@yandex.ru
- +7 (978) 012-15-51
Для того что бы суметь настроить нужно понять как это работает. Команды выше могут работать по протоколу HTTP (по порту 5985) и HTTPS (5986), за исключением версии Powershell 1.0, который работал в XP (там порт 80/443). По умолчанию у нас стоит HTTP, но и эти данные шифруются используя симметричный ключ AES-256. Сама аутентификация работает в 2 режимах NTLM и Kerberos(по умолчанию стоит он). Если у вас сеть с домен контроллером, т.е. есть Kerberos, то у вас должны работать команды выше. Если компьютеры в Workgroup, то они используют NTLM и для этого нужна дополнительная настройка. Кроме того, если вы вместо имен используете IP, то вы в любом случае используете NTLM и это по умолчанию не работает.
Задача есть два компьютера
1. Сервер, которому мы хотим подключиться по PowerShell, имеет IP адрес ХХХ.ХХХ.ХХХ.ХХХ и имя устройства ServerName
2. Клиент компьютер с которго происходит подключение, имеет IP адрес YYY.YYY.YYY.YYY и имя устройства ClientName
Настроим компьютер, к оторому будем в дальнейшем подключаться (он же сервер, он же удаленный компьютер)
Запускаем на нем PowerShell под администратором.
Проверитм запущен ли сервис WinRM на том компьютере:
Get-Service -Name "*WinRM*" | fl
Если не запушен:
Enable-PSRemoting
В этом случае мы ставим запуск сервиса автоматически и настраиваем winrm в дефолтной конфигурации. Этот сервис дает возможность принимать команды Powershell и устанавливать сеансы.
Если вы работаете под профилем сети "Public" (не "Domain" или "Private"), то нужно выполнить еще один командлет, разрешающий работать в таких сетях:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -RemoteAddress Any
Далее необходимо добавить компьютер, с которого будет происходить подключение, в доверенные (YYY.YYY.YYY.YYY - ip адрес удаленного компьютера)
Set-Item wsman:\localhost\Client\TrustedHosts -value YYY.YYY.YYY.YYY
Настраиваем компьютер клиентский (он же удаленный, он же Ваше рабочее место)
Запускаем на нем PowerShell под администратором
winrm quickconfig (сокращенный вариант winrm qc)
можно запустить комманду
Enable-PSRemoting
Set-Item WSMan:\localhost\Client\TrustedHosts -Value XXX.XXX.XXX.XXX -Force
рекомендую
Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force
После этого все будет работать, но команды должны исполняться с переменной, в которой будут лежать учетные данные пользователя. Т.е. так:
$cred = Get-Credential
Enter-PSSession -ComputerName XXX.XXX.XXX.XXX -Credential $cred
Но вы на своем рабочем месте открыли доступ к своему компьютеру по WinRM теперь его закроем
Disable-PSRemoting
Но выдается сообщение о том, что не все закрыто. Поэтому останавливаем службу
stop-Service -Name WinRM
Запрещаем ее запуск
set-service -name winrm -StartupType Disabled
далее закрываем доступ в FireWall
set-NetFirewallRule -Name WINRM-HTTP-In-TCP* -Enabled False
При успешном подключении вы должны увидеть, что вроде
Id Name ComputerName ComputerType State ConfigurationName Availability
-- ---- ------------ ------------ ----- ----------------- ------------
2 WinRM7 XXX.XXX.XXX.XXX RemoteMachine Broken Microsoft.PowerShell None
3 WinRM7 XXX.XXX.XXX.XXX RemoteMachine Opened Microsoft.PowerShell Available
зайти в сессию можно командой
Enter-PSSession -Id 3
Выйти из сессии можно коммандой
Exit-PSsession
Полезные комманды
Вывести список компьютеров в TrustedHosts:
get-Item WSMan:\localhost\Client\TrustedHosts
Чтобы очистить список TrustedHosts:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "" –Force
Чтобы добавить одиночный компьютер или несколько компьютеров в список TrustedHosts, используйте:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value ZZZ.ZZZ.ZZZ.ZZZ
или
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "ZZZ.ZZZ.ZZZ.ZZZ,III.III.III.III"
Чтобы добавить новый компьютер в список TrustedHosts, используйте параметр -Concatenate:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value ZZZ.ZZZ.ZZZ.ZZZ -Concatenate
источники.
Как в Powershell подключиться к удаленному компьютеру | FixMyPC