Windows PowerShell 2.0 Remoting
Инфраструктура PowerShell Remoting основана на WinRM версии 2.0, и поэтому наследует все преимущества этой технологии, такие как шифрование передаваемых данных, и возможность работать по стандартным портам HTTP/HTTPS. Но благодаря богатым возможностям языка Windows PowerShell, и его способностям работы с объектами, мы получаем еще большие возможности.
В системы Windows 7 и Windows Server 2008R2 WinRM встроен изначально, как и PowerShell 2.0. Для Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 все необходимые компоненты можно получить в виде пакета называемого Windows Management Framework.
Перед тем как воспользоваться всеми этими преимуществами, PowerShell Remoting необходимо активизировать (запустить), на управляющем, и управляемых компьютерах. Я пока рассматриваю случай когда у вас все получится с первого раза. Бывают разные случаи). Итак сделать активизацию WinRM относительно просто, запустив командлет (команду Windows PowerShell) Enable-PSRemoting:
>Enable-PSRemoting
Причем если добавить ключ -Force то никаких подтверждений запрошено не будет. Этот командлет при необходимости вызовет winrm quickconfig, и создаст исключения в брандмауэре Windows, так что никаких дополнительных действий выполнять не нужно.
Если любите все контролировать сами тогда ручками набираем:
>winrm quickconfig
Получаете две строчки что все ок. После этого вы сможете легко выполнять команды на других компьютерах используя командлет Invoke-Command (или его псевдоним icm):
>Invoke-Command -ComputerName МАХ7 -ScriptBlock {netsh interface dump > c:\ipconfig.txt}
или
>Invoke-Command -ComputerName МАХ7 –Сredential MAX7\admin -ScriptBlock {Get-Date}
где ключ Сredential MAX7\admin задает имя удаленного администратора на хосте MAX7 в том случае если вы работаете под другим локальным администратором.
Разумеется команду можно заранее поместить в переменную, а для параметра -ComputerName указать имена не одного, а сразу нескольких компьютеров. Следующая последовательность позволяет вывести версию файла Explorer.exe сразу с трех компьютеров.
>$Command = {(get-item c:\Windows\explorer.exe).VersionInfo.FileVersion}
>Invoke-Command -ComputerName MrFirst, ServerODB, ServerBackup -ScriptBlock $Command
Как видите можно передавать сразу несколько команд в одном блоке, помещать их результаты выполнения на нескольких компьютерах в переменную, а затем обрабатывать на рабочей станции используя возможности Windows PowerShell по работе с объектами.
Впрочем возможности PowerShell Remoting на этом только начинаются. С помощью командлета Enter-PSSession вы можете войти в интерактивную сессию Windows PowerShell на удалённом компьютере. Выйти из такого сеанса можно использовав командлет Exit-PSSession, или просто exit.
Командлет New-PSSession создает сессии на удалённых компьютерах, указатели на которые можно поместить в переменную, а затем передавая её как аргумент для Invoke-Command выполнять команды сразу на нескольких компьютерах, в постоянном окружении.
Troubleshooting
Это все хорошо. Но вот чаще надо подкручивать для WinRM некоторые настройки сети или безопасности.
Начинаем со смены типа сетевого подключения с «Общий» на «Частное». В качестве подопытного выступает Windows7.
Пуск, Выполнить, далее вводим secpol.msc. Далее открывается окно политик, там выбираем название слева политики сетей. И там выбираем название сетевое расположение и ставим галочки в принадлежности сети ЛИЧНОЕ, а пониже в окошке «ПОЛЬЗОВАТЕЛЬ МОЖЕТ ИЗМЕНИТЬ РАСПОЛОЖЕНИЕ СЕТИ». Далее название «Идентификация сетей», на этом названии щёлкаем 2-а раза мышкой и ставим «ЛИЧНОЕ». Далее чуть ниже Название в этом списке Все сети - Жмём 2-а раза на название и там открываются вкладки 1 ИМЯ СЕТИ -- ставим галочку пользователь может изменить имя. В этом-же окошке чуть пониже Сетевое расположение -Пользователь может изменить расположение. И еще чуть пониже значок сети - Пользователь может изменить значок.
Много текста? Проверяйте себя по скриншотам.
Все равно не работает? Тогда добавляем в список доверенных хостов IP-адрес своего ПК или все ПК звездочкой:
>set-item wsman:\localhost\Client\TrustedHosts -value *
и проверяем что добавилось:
>get-item wsman:\localhost\Client\TrustedHosts
По прежнему проблемы с подключением?
Тогда вызываем справку
>Get-Help about_Remote_Troubleshooting
и внимательно читаем ее. И проверяем свои настройки.)
Что еще могу посоветовать в помощь?
Вот широкая статья про "Удаленное управление с помощью PowerShell"
Статья написана так что настройки описаны во второй половине. Видимо автор посчитал, что с этим проблем не должно быть. Кто знает).
Или вот здесь уверенный пост еще одного автора:
Есть также хорошая англоязычная книга в сети «Secrets of PowerShell Remoting» авторов Don Jones and Dr. Tobias Weltner. Ссылка на книгу не прямая http://PowerShellBooks.com, пробуйте ее найти сами.
Успехов.
No comments:
Post a Comment
А что вы думаете по этому поводу?