Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft PowerShell Windows PowerShell: Неявное удаленное взаимодействие RSS

Windows PowerShell: Неявное удаленное взаимодействие

Текущий рейтинг: 5 (проголосовало 2)
 Посетителей: 2453 | Просмотров: 3483 (сегодня 0)  Шрифт: - +

Есть малоизвестная возможность Windows PowerShell 2.0, которая позволяет легко увеличить гибкость вашей среды. Допустим, что на всех клиентских компьютерах установлена Windows XP. — это достаточно распространенная ситуация, а контроллеры домена работают под управлением Windows Server 2003.

Windows PowerShell 2.0 можно установить на обоих ОС, но не удастся использовать некоторые из новых модулей командлетов PowerShell, например модуль Active Directory, входящий в состав Windows Server 2008 R2. Эти модули не работают в ранних версиях Windows.

Но это не создает проблем. Достаточно на одном из компьютеров установить Windows 7 или Windows Server 2008 R2 (модуль Active Directory будет работать на любой из этих ОС), например установить отдельный контроллер домена под управлением Windows Server 2008 R2, который предоставит и модуль Active Directory, и службу шлюза управления Active Directory для связи с этим модулем. Службу шлюза можно загрузить со страницы и установить ее на Windows Server 2008 и/или Windows Server 2003.

Включите удаленное взаимодействие (Remoting) и WinRM на новом контроллере домена, выполнив в Windows PowerShell команду Enable-PSRemoting. А дальше запустите Windows PowerShell 2.0 на своем клиентском компьютере под управлением Windows XP и подготовитесь к волшебным превращениям.

Создание модуля

Начните с создания сеанса удаленного взаимодействия на новом контроллере домена:

$session = New-PSSession -computerName my-new-dc

Вместо my-new-dc укажите правильное имя компьютера. Можно задать дополнительные параметры, такие как альтернативные удостоверения или порты WinRM. Чтобы получить справочную информацию, выполните команду help new-pssession.

Далее загрузите командлеты Active Directory на удаленный экземпляр Windows PowerShell:

Invoke-command { import-module activedirectory } -session $session

А вот здесь начинается крутизна: заставьте локальный экземпляр Windows PowerShell экспортировать командлеты Active Directory из удаленного сеанса в локальный модуль вашего клиентского компьютера:

Export-PSSession -session $session -commandname *-AD* -outputmodule RemAD -allowclobber

Эта команда создаст новый модуль PowerShell, размещенный в подпапке WindowsPowerShell\Modules\RemAD папки «Документы» (Documents). Будут загружены только командлеты с именами, соответствующими шаблону *-AD*. Вот почему в большинстве имен дополнительных командлетов используется определенный префикс, например «AD», — это позволяет загружать только нужные командлеты.

Командлеты не копируются на локальный компьютер, просто локальный модуль служит своего рода ярлыком. Командлеты выполняются на удаленном контроллере домена, но все выглядит так, как будто они работают локально.

Использование командлетов

Начнем с удаления сеанса с удаленным контроллером домена:

Remove-PSSession -session $session

Далее загрузите новый модуль:

Import-Module RemAD -prefix Rem

Эта команда загрузит новый модуль в память и добавит в нем в конец имени каждого командлета префикс «Rem». Этот префикс напоминает, что командлеты выполняются удаленно. Можно задать любой другой префикс, но я предпочитают «R» или «Rem», что отзначает Remote, то есть «удаленный».

Запросите справку удаленного командлета:

Help New-RemADUser

Вы получите ошибку, потому что не установлен сеанс удаленного взаимодействия между вашим компьютером и контроллером домена, где расположены командлеты. Не нужно явно запускать этот сеанс — это можно сделать неявно, попытавшись выполнить один из удаленных командлетов:

Get-RemADUser -filter "Name -like 'D*'"

При этом будет восстановлено удаленное подключение к контроллеру домена, после чего будет передана и выполнена команда на контроллере домена. Далее будет выполнена сериализация в XML всех пользователей, имя которых начинается на «D», и файл будет переправлен по сети на ваш компьютер. Здесь будет выполнена десериализация в объекты, с которыми можно работать с применением конвейера PowerShell. Вот теперь можно запросить справку, потому что удаленный сеанс активен:

Help New-RemADUser

Сеанс будет активным, пока вы не закроете экземпляр оболочки или не удалите модуль:

Remove-Module RemAD

Возьмите и поуправляйте чем-нибудь

Неявное удаленное взаимодействие облегчает работу с командлетами, имеющимися только на удаленном компьютере. Неявные удаленные командлеты ведут себя практически так же, как если бы были установлены на локальной машине. Поэтому они доступны всегда, когда в них есть нужда. Сеанс удаленного взаимодействия создает очень небольшую дополнительную нагрузку на локальный и удаленный компьютер, поэтому очень удобен для предоставления доступа к вычислительным возможностям.

Автор: Дон Джонс  •  Иcточник: TechNet Magazine  •  Опубликована: 10.09.2010
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   Windows PowerShell.


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.