0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Windows PowerShell: Краткий обзор удаленного управления в версии 2

Содержание

Windows PowerShell: Краткий обзор удаленного управления в версии 2.0

У вас уже была возможность поэкспериментировать с последней версией CTP Windows PowerShell 2.0? В последней версии, CTP2, удаленное управление еще больше переработано, и теперь пришло время приступить к ознакомлению с ее новыми возможностями. Прежде чем приступить к рассмотрению Windows PowerShell 2.0, необходимо загрузить программу с веб-узла go.microsoft.com/fwlink/?LinkID=119707.

Прежде всего, позвольте мне уточнить ряд важных моментов. CTP – это предоставляемая корпорацией Майкрософт предварительная бета-версия кода, позволяющая нетерпеливым пользователям наподобие меня получить представление о направлении, в котором движется Майкрософт, при помощи следующей версии приложения. Каждая веха или выпуск CTP (как это называется в промышленности) может полностью отличаться от предыдущих выпусков. Это происходит потому, что группы разработки собирают отзывы пользователей, внимательно изучают их, а затем на основе этих отзывов вносят в приложение изменения. Такая методика обуславливает важное преимущество и ограничение использования CTP.

Преимущество заключается в том, что при использовании CTP вы можете предоставить отзыв (через веб-узел connect.microsoft.com) о продукте во время разработки, когда группа разработчиков может отреагировать на него! Если вы подождете до бета-версии или, что еще хуже, до стадии подготовки к выпуску, отреагировать на ваш отзыв гораздо сложнее. При подготовке к выпуску может случиться все, что угодно, и группа разработки при необходимости может внести большие и значительные изменения.

Это представляет для меня ограничение. Версия CTP не готова к выпуску. Конечно, версия CTP2 Windows PowerShell™ 2.0 может быть одной из самых устойчивых частей предварительной версии кода, которую вы когда-либо видели, но необходимо помнить, что следующая версия CTP может полностью отличаться от нее. Поэтому пока не следует полагаться на версию CTP2, потому что после выпуска следующей версии может потребоваться начать все сначала.

Имейте в виду, что версия CTP не может быть установлена вместе с Windows PowerShell 1.0. В идеале в системе также должна быть установлена платформа Microsoft® .NET Framework 3.5, чтобы обеспечить поддержку всех доступных функций. В противном случае функции будут ограничены.

Кроме того, поскольку версия CTP является очень ранней, пока корпорация Майкрософт уделяла основное внимание последним операционным системам, т.е. Windows Vista® и Windows Server® 2008. Совместимость с ОС в данный момент никоим образом не означает совместимости с ОС, которую можно ожидать в итоговом выпущенном коде. Портированию в более ранние версии уделяется внимание на последующих этапах цикла разработки.

Два типа удаленной работы

В мире удаленного управления обычно присутствуют два типа удаленного управления: удаленная работа слияния и развертывания. При удаленной работе слияния несколько администраторов подключаются к одному серверу по протоколу SSH. Windows PowerShell поддерживает подобное подключение безопасным и разделенным образом, чтобы, например, компания, размещающая Exchange Server, могла предоставить своим клиентам административный доступ к отдельным частям сервера. Удаленная работа слияния обеспечивает надежный удаленный интерактивный доступ к копии Windows PowerShell (только версии 2.0!), установленной на удаленном сервере.

Удаленная работа развертывания заключается в выдаче набора команд для группы удаленных серверов одновременно. Команды параллельно «разветвляются» с рабочей станции на группу серверов. Команды выполняются на всех серверах, а результаты — в форме объектов Windows PowerShell — возвращаются на рабочую станцию для просмотра и работы с ними. Windows PowerShell поддерживает две основные технологии для удаленной работы разветвления — инструментарий управления Windows® (WMI) и удаленное управление Windows (WinRM), которые впервые появились в составе Windows Server 2008, а затем были обновлены в версии CTP Windows PowerShell 2.0.

Синхронная и асинхронная

В действительности, еще в Windows PowerShell 1.0 существовали определенные возможности разветвления, привязанные к инструментарию управления WMI. Например, можно просто создать массив имен компьютеров, а затем получить из каждого класс WMI:

Для выполнения методов, например, перезагрузки компьютера, необходимы некоторые дополнительные действия, поскольку версия 1.0 не предоставляет способ массового выполнения методов WMI. Однако это изменилось в версии 2.0 CTP благодаря командлету Invoke-WmiMethod:

Однако этот метод имеет одну проблему. Он синхронный, что означает, что одновременно осуществляется обращение только к одному компьютеру, и для выполнения других команд необходимо подождать завершения. Но в версии CTP представлена новая концепция – фоновые задания, позволяющая выполнение подобных команд в фоновом режиме. В самом простом варианте команда WMI может быть выполнена в фоновом режиме простым добавлением параметра –AsJob:

Можно просмотреть состояние итогового задания, выполнив Get-PSJob, а окончательные результаты задания можно просмотреть, выполнив Receive-PSJob. (Управление заданиями будет рассмотрено более подробно в следующей статье.) Однако командлет Invoke-Command предоставляет лучшие способы выполнения команд в фоновом режиме, например следующий:

Таким образом, команда Get-WmiObject передается всем указанным компьютерам, затем выполняется локально. Обычное выполнение происходит гораздо быстрее без необходимости использования подключений RPC инструментария WMI. Вместо этого Invoke-Command использует WinRM, который по умолчанию использует порт 80 или 443. Эти порты упрощают перемещение брандмауэров и являются полностью настраиваемыми. Invoke-Command также поддерживает дополнительные параметры для альтернативных учетных данных и регулирования, позволяя работать с сотнями компьютеров при параллельной работе всего некоторых из них. Это позволяет избежать перегрузки и излишних издержек.

Повторно используемые пространства выполнения

Если планируется удаленное управление определенным набором компьютеров более одного раза, следует рассмотреть использование пространств выполнения, а не простых списков имен компьютеров. Пространство выполнения в Windows PowerShell – это просто экземпляр механизма интерпретатора команд, выполняемый локально на компьютере как окно консоли интерпретатора команд или в фоновом режиме на удаленном компьютере. Запуск пространства выполнения осуществляется очень просто:

Поскольку пространства выполнения также используют WinRM, они также по умолчанию используют порт 80 (или 443, если указан параметр –UseSSL). Они также должны принимать альтернативные учетные данные и т. д. При получении итоговых объектов пространства выполнения их можно передать командлету Invoke-Command, и Windows PowerShell передаст команду компьютерам, на которых существуют пространства выполнения:

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

Удаленная работа слияния

Пространства выполнения также являются ключевыми объектами для удаленной работы слияния. Например, на рис. 1 показано созданное мною пространство выполнения на удаленном компьютере, полученная ссылка на это пространство выполнения и последующее использование командлета Push-Runspace для активации пространства выполнения. После этого я выполняю команды на удаленном компьютере аналогично тому, как позволяет SSH или средства удаленного интерпретатора команд. Выполнение Pop-Runspace возвращает исходное пространство выполнения «local», а командная строка оболочки помогает отслеживать местонахождение.

Рис. 1. Использование пространства имен для выполнения команд на удаленном компьютере (щелкните изображение, чтобы увеличить его)

Точная последовательность выполненных мною команд выглядит следующим образом:

Этот прием называется слиянием, поскольку одновременно удаленные интерактивные пространства выполнения на одном сервере могут быть открыты несколькими администраторами — происходит их «слияние» с отдельных рабочих станций на сервер. Новая модель безопасности в Windows PowerShell 2.0 позволяет создавать ограниченные интерпретаторы команд и командлеты, поэтому может быть запрещено внесение каждым администратором глобальных изменений. Каждый администратор ограничивается собственной областью в интерпретаторе команд. (Для этих новых методов обеспечения безопасности требуется установка определенного специального программного обеспечения на языке, предназначенном для платформы .NET Framework. Это выходит за рамки статьи о Windows PowerShell, но приятно знать, что такие возможности существуют.)

«Убойное» приложение в 2.0

В версию CTP Windows PowerShell 2.0 входит потрясающий список новых возможностей. По моему мнение, удаленная работа – это «убойное» приложение. Она выгода для всех администраторов практически во всех средах.

Вам следует ознакомиться с этими новыми функциями, чтобы вы могли предоставить свои предложения группе разработки. Вам необходимо управления портами WinRM по умолчанию через групповую политику? Должны ли командлеты работать по-другому? Присутствуют ли проблемы производительности? Достаточно ли просто осуществляется настройка WinRM? Вы можете внести свой вклад, отправив предложения на веб-узле connect.microsoft.com, или поделиться мнением с обладателями звания MVP, включая меня (чтобы связаться со мной, оставьте отзыв на форумах ScriptingAnswers.com). Поэтому примите участие и помогите в создании «убойного» приложения для Windows PowerShell следующего поколения!

Читать еще:  Резко пропал сигнал WiFi

Командлет месяца: Select-Object

Попробуйте выполнить следующую команду: Get-Service | ConvertTo-HTML | Out-File Services.htm. Теперь просмотрите полученный файл HTML в веб-обозревателе. Довольно много информации, не так ли? Если бы только существовал способ немного ограничить ее, выбрав только нужную информацию. Именно это выполняет командлет Select-Object. Например, предположим, необходим список имен служб и их текущего состояния. Можно использовать следующее: Get-Service | Select Name,Status | ConvertTo-HTML | Out-File Services.htm.

Однако необходимо помнить только одно: командлет Select-Object сбрасывает исходный объект, в этом случае службы, и создает пользовательский объект (тип объекта PSCustom), содержащий только указанные свойства. Все функции исходного объекта более недоступны, поэтому, наверное, вам потребуется разместить Select-Object в конце конвейера, обеспечивая максимально долгую работу с объектом.

Что такое PowerShell?

PowerShell можно рассматривать как масштабное обновление командной строки Windows

, Он может выполнять множество одних и тех же задач (например, навигацию в системе, взаимодействие с файлами, изменение свойств), но для максимальной мощности открывает всю платформу .NET. Чтобы понять преимущества этого, продолжайте читать.

Есть два основных преимущества, которые делают PowerShell лучше, чем традиционная командная строка: растяжимость а также Возможность создания сценариев.

Хотя PowerShell поставляется с начальным набором команд, вы можете добавлять свои собственные команды, создавая командлеты. Командлеты — это классы, созданные с использованием языка C #, и при вызове они выполняются в среде PowerShell. Поскольку они написаны с использованием C #, командлеты имеют доступ ко всей платформе .NET.

.NET Framework содержит огромную библиотеку кода, предоставленную Microsoft. При написании собственного командлета у вас есть доступ ко всему этому коду. Потянув информацию о процессе? Криптографические алгоритмы? Подключение к базе данных? Сетевые коммуникации? Все это и многое другое обеспечивается платформой .NET, что означает, что большая часть работы выполняется за вас. Вам просто нужно собрать его вместе, вызывая нужные функции.

Microsoft ясно дала понять, что PowerShell не исчезнет — фактически, будущий диспетчер пакетов в Windows 10 будет основан на PowerShell — поэтому каждый должен изучить его раньше, чем позже.

Как создать задание планировщика в PowerShell 4.0 (Windows Server 2012 R2)

В Windows Server 2012 R2 и Windows 8.1 в версии PowerShell 3.0 и 4.0 появились новые командлеты для созданий заданий планировщика: New-ScheduledTaskTrigger, Register-ScheduledTask. Создать задание планировщика теперь можно гораздо проще и удобнее.

Создадим задание с именем StartupScript_PS, которое каждый день в 10:00 из-под учетной записи системы (SYSTEM) запускает PoSh скрипт, хранящийся в файле C:PSStartupScript.ps1. Задание будет выполняться с повышенными привилегиями (галка «Run with highest privileges»).

$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= «NT AUTHORITYSYSTEM»
$Action= New-ScheduledTaskAction -Execute «PowerShell.exe» -Argument «C:PSStartupScript.ps1»
Register-ScheduledTask -TaskName «StartupScript_PS» -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

Проверим, что в планировщике появилось новое задание.

Windows PowerShell: Краткий обзор удаленного управления в версии 2.0

У вас уже была возможность поэкспериментировать с последней версией CTP Windows PowerShell 2.0? В последней версии, CTP2, удаленное управление еще больше переработано, и теперь пришло время приступить к ознакомлению с ее новыми возможностями. Прежде чем приступить к рассмотрению Windows PowerShell 2.0, необходимо загрузить программу с веб-узла go.microsoft.com/fwlink/?LinkID=119707.

Прежде всего, позвольте мне уточнить ряд важных моментов. CTP – это предоставляемая корпорацией Майкрософт предварительная бета-версия кода, позволяющая нетерпеливым пользователям наподобие меня получить представление о направлении, в котором движется Майкрософт, при помощи следующей версии приложения. Каждая веха или выпуск CTP (как это называется в промышленности) может полностью отличаться от предыдущих выпусков. Это происходит потому, что группы разработки собирают отзывы пользователей, внимательно изучают их, а затем на основе этих отзывов вносят в приложение изменения. Такая методика обуславливает важное преимущество и ограничение использования CTP.

Преимущество заключается в том, что при использовании CTP вы можете предоставить отзыв (через веб-узел connect.microsoft.com) о продукте во время разработки, когда группа разработчиков может отреагировать на него! Если вы подождете до бета-версии или, что еще хуже, до стадии подготовки к выпуску, отреагировать на ваш отзыв гораздо сложнее. При подготовке к выпуску может случиться все, что угодно, и группа разработки при необходимости может внести большие и значительные изменения.

Это представляет для меня ограничение. Версия CTP не готова к выпуску. Конечно, версия CTP2 Windows PowerShell™ 2.0 может быть одной из самых устойчивых частей предварительной версии кода, которую вы когда-либо видели, но необходимо помнить, что следующая версия CTP может полностью отличаться от нее. Поэтому пока не следует полагаться на версию CTP2, потому что после выпуска следующей версии может потребоваться начать все сначала.

Имейте в виду, что версия CTP не может быть установлена вместе с Windows PowerShell 1.0. В идеале в системе также должна быть установлена платформа Microsoft® .NET Framework 3.5, чтобы обеспечить поддержку всех доступных функций. В противном случае функции будут ограничены.

Кроме того, поскольку версия CTP является очень ранней, пока корпорация Майкрософт уделяла основное внимание последним операционным системам, т.е. Windows Vista® и Windows Server® 2008. Совместимость с ОС в данный момент никоим образом не означает совместимости с ОС, которую можно ожидать в итоговом выпущенном коде. Портированию в более ранние версии уделяется внимание на последующих этапах цикла разработки.

Два типа удаленной работы

В мире удаленного управления обычно присутствуют два типа удаленного управления: удаленная работа слияния и развертывания. При удаленной работе слияния несколько администраторов подключаются к одному серверу по протоколу SSH. Windows PowerShell поддерживает подобное подключение безопасным и разделенным образом, чтобы, например, компания, размещающая Exchange Server, могла предоставить своим клиентам административный доступ к отдельным частям сервера. Удаленная работа слияния обеспечивает надежный удаленный интерактивный доступ к копии Windows PowerShell (только версии 2.0!), установленной на удаленном сервере.

Удаленная работа развертывания заключается в выдаче набора команд для группы удаленных серверов одновременно. Команды параллельно «разветвляются» с рабочей станции на группу серверов. Команды выполняются на всех серверах, а результаты — в форме объектов Windows PowerShell — возвращаются на рабочую станцию для просмотра и работы с ними. Windows PowerShell поддерживает две основные технологии для удаленной работы разветвления — инструментарий управления Windows® (WMI) и удаленное управление Windows (WinRM), которые впервые появились в составе Windows Server 2008, а затем были обновлены в версии CTP Windows PowerShell 2.0.

Синхронная и асинхронная

В действительности, еще в Windows PowerShell 1.0 существовали определенные возможности разветвления, привязанные к инструментарию управления WMI. Например, можно просто создать массив имен компьютеров, а затем получить из каждого класс WMI:

Для выполнения методов, например, перезагрузки компьютера, необходимы некоторые дополнительные действия, поскольку версия 1.0 не предоставляет способ массового выполнения методов WMI. Однако это изменилось в версии 2.0 CTP благодаря командлету Invoke-WmiMethod:

Однако этот метод имеет одну проблему. Он синхронный, что означает, что одновременно осуществляется обращение только к одному компьютеру, и для выполнения других команд необходимо подождать завершения. Но в версии CTP представлена новая концепция – фоновые задания, позволяющая выполнение подобных команд в фоновом режиме. В самом простом варианте команда WMI может быть выполнена в фоновом режиме простым добавлением параметра –AsJob:

Можно просмотреть состояние итогового задания, выполнив Get-PSJob, а окончательные результаты задания можно просмотреть, выполнив Receive-PSJob. (Управление заданиями будет рассмотрено более подробно в следующей статье.) Однако командлет Invoke-Command предоставляет лучшие способы выполнения команд в фоновом режиме, например следующий:

Таким образом, команда Get-WmiObject передается всем указанным компьютерам, затем выполняется локально. Обычное выполнение происходит гораздо быстрее без необходимости использования подключений RPC инструментария WMI. Вместо этого Invoke-Command использует WinRM, который по умолчанию использует порт 80 или 443. Эти порты упрощают перемещение брандмауэров и являются полностью настраиваемыми. Invoke-Command также поддерживает дополнительные параметры для альтернативных учетных данных и регулирования, позволяя работать с сотнями компьютеров при параллельной работе всего некоторых из них. Это позволяет избежать перегрузки и излишних издержек.

Повторно используемые пространства выполнения

Если планируется удаленное управление определенным набором компьютеров более одного раза, следует рассмотреть использование пространств выполнения, а не простых списков имен компьютеров. Пространство выполнения в Windows PowerShell – это просто экземпляр механизма интерпретатора команд, выполняемый локально на компьютере как окно консоли интерпретатора команд или в фоновом режиме на удаленном компьютере. Запуск пространства выполнения осуществляется очень просто:

Поскольку пространства выполнения также используют WinRM, они также по умолчанию используют порт 80 (или 443, если указан параметр –UseSSL). Они также должны принимать альтернативные учетные данные и т. д. При получении итоговых объектов пространства выполнения их можно передать командлету Invoke-Command, и Windows PowerShell передаст команду компьютерам, на которых существуют пространства выполнения:

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

Удаленная работа слияния

Пространства выполнения также являются ключевыми объектами для удаленной работы слияния. Например, на рис. 1 показано созданное мною пространство выполнения на удаленном компьютере, полученная ссылка на это пространство выполнения и последующее использование командлета Push-Runspace для активации пространства выполнения. После этого я выполняю команды на удаленном компьютере аналогично тому, как позволяет SSH или средства удаленного интерпретатора команд. Выполнение Pop-Runspace возвращает исходное пространство выполнения «local», а командная строка оболочки помогает отслеживать местонахождение.

Читать еще:  Как отформатировать флешку в FAT32

Рис. 1. Использование пространства имен для выполнения команд на удаленном компьютере (щелкните изображение, чтобы увеличить его)

Точная последовательность выполненных мною команд выглядит следующим образом:

Этот прием называется слиянием, поскольку одновременно удаленные интерактивные пространства выполнения на одном сервере могут быть открыты несколькими администраторами — происходит их «слияние» с отдельных рабочих станций на сервер. Новая модель безопасности в Windows PowerShell 2.0 позволяет создавать ограниченные интерпретаторы команд и командлеты, поэтому может быть запрещено внесение каждым администратором глобальных изменений. Каждый администратор ограничивается собственной областью в интерпретаторе команд. (Для этих новых методов обеспечения безопасности требуется установка определенного специального программного обеспечения на языке, предназначенном для платформы .NET Framework. Это выходит за рамки статьи о Windows PowerShell, но приятно знать, что такие возможности существуют.)

«Убойное» приложение в 2.0

В версию CTP Windows PowerShell 2.0 входит потрясающий список новых возможностей. По моему мнение, удаленная работа – это «убойное» приложение. Она выгода для всех администраторов практически во всех средах.

Вам следует ознакомиться с этими новыми функциями, чтобы вы могли предоставить свои предложения группе разработки. Вам необходимо управления портами WinRM по умолчанию через групповую политику? Должны ли командлеты работать по-другому? Присутствуют ли проблемы производительности? Достаточно ли просто осуществляется настройка WinRM? Вы можете внести свой вклад, отправив предложения на веб-узле connect.microsoft.com, или поделиться мнением с обладателями звания MVP, включая меня (чтобы связаться со мной, оставьте отзыв на форумах ScriptingAnswers.com). Поэтому примите участие и помогите в создании «убойного» приложения для Windows PowerShell следующего поколения!

Командлет месяца: Select-Object

Попробуйте выполнить следующую команду: Get-Service | ConvertTo-HTML | Out-File Services.htm. Теперь просмотрите полученный файл HTML в веб-обозревателе. Довольно много информации, не так ли? Если бы только существовал способ немного ограничить ее, выбрав только нужную информацию. Именно это выполняет командлет Select-Object. Например, предположим, необходим список имен служб и их текущего состояния. Можно использовать следующее: Get-Service | Select Name,Status | ConvertTo-HTML | Out-File Services.htm.

Однако необходимо помнить только одно: командлет Select-Object сбрасывает исходный объект, в этом случае службы, и создает пользовательский объект (тип объекта PSCustom), содержащий только указанные свойства. Все функции исходного объекта более недоступны, поэтому, наверное, вам потребуется разместить Select-Object в конце конвейера, обеспечивая максимально долгую работу с объектом.

Почему PowerShell — это круто

PowerShell имеет множество расширенных функций, большинство из которых могут иметь отношение только к программистам Windows и администраторам серверов, но есть несколько основных функций, которые просты для понимания, но чрезвычайно полезны для всех.

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

Подробная информация о процессе. Одно дело использовать альтернативный диспетчер задач

, но PowerShell позволяет выполнять некоторые хитрые трюки в отношении управления процессами. Начните с собственных командлетов Get-Process и Stop-Process.

Простая автоматизация и создание сценариев. Обычная Windows не предоставляет простой способ автоматизации задач. До PowerShell командные файлы могли выполнять только примитивные сценарии, в то время как сторонние решения были необходимы для автоматизации (например, Perl, AutoHotkey). Но с помощью PowerShell вы можете запланировать выполнение задач в определенное время или с определенным интервалом.

Например, с помощью модуля ScheduledTasks вы можете заставить определенную программу или процесс выполняться в соответствии с триггером (например, в определенное время, когда происходит системное событие и т. Д.), И вы можете определить контекст для этой задачи (например, безопасность). ограничения).

Командный трубопровод и логика. В Bash (Linux) команды могут передаваться вместе, так что выходные данные одной команды могут использоваться в качестве входных данных для другой команды. Например, базовый командлет Get-Process выводит информацию для всех запущенных процессов. Что если вы хотите получать информацию только из подмножества процессов? Вы можете передать его с помощью командлета Where-Object, который действует как фильтр процессов, чтобы выполнять Get-Process только для процессов, возвращаемых Where-Object.

PowerShell также предоставляет несколько собственных команд для условной логики (например, If, Else, For, Switch), которые можно использовать для управления потоком выполнения командлета. Например, вы можете создать сценарий PowerShell, который выполняет определенные командлеты только при соблюдении определенных условий (например, очистка процессов, когда объем ОЗУ близок к полному).

Удаленные и фоновые задания. Мало того, что командлеты могут выполняться как фоновые процессы (так что вы можете выполнять несколько задач одновременно асинхронно), но многие командлеты также могут выполняться на удаленных компьютерах в сети, если они были настроены для этого. Командлеты с удаленными возможностями часто предоставляют параметр ComputerName, который вы можете указать при выполнении указанного командлета.

Для получения дополнительной информации посетите эту страницу TechNet по запуску удаленных команд с помощью PowerShell.

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

Windows PowerShell: Краткий обзор удаленного управления в версии 2.0

У вас уже была возможность поэкспериментировать с последней версией CTP Windows PowerShell 2.0? В последней версии, CTP2, удаленное управление еще больше переработано, и теперь пришло время приступить к ознакомлению с ее новыми возможностями. Прежде чем приступить к рассмотрению Windows PowerShell 2.0, необходимо загрузить программу с веб-узла go.microsoft.com/fwlink/?LinkID=119707.

Прежде всего, позвольте мне уточнить ряд важных моментов. CTP – это предоставляемая корпорацией Майкрософт предварительная бета-версия кода, позволяющая нетерпеливым пользователям наподобие меня получить представление о направлении, в котором движется Майкрософт, при помощи следующей версии приложения. Каждая веха или выпуск CTP (как это называется в промышленности) может полностью отличаться от предыдущих выпусков. Это происходит потому, что группы разработки собирают отзывы пользователей, внимательно изучают их, а затем на основе этих отзывов вносят в приложение изменения. Такая методика обуславливает важное преимущество и ограничение использования CTP.

Преимущество заключается в том, что при использовании CTP вы можете предоставить отзыв (через веб-узел connect.microsoft.com) о продукте во время разработки, когда группа разработчиков может отреагировать на него! Если вы подождете до бета-версии или, что еще хуже, до стадии подготовки к выпуску, отреагировать на ваш отзыв гораздо сложнее. При подготовке к выпуску может случиться все, что угодно, и группа разработки при необходимости может внести большие и значительные изменения.

Это представляет для меня ограничение. Версия CTP не готова к выпуску. Конечно, версия CTP2 Windows PowerShell™ 2.0 может быть одной из самых устойчивых частей предварительной версии кода, которую вы когда-либо видели, но необходимо помнить, что следующая версия CTP может полностью отличаться от нее. Поэтому пока не следует полагаться на версию CTP2, потому что после выпуска следующей версии может потребоваться начать все сначала.

Имейте в виду, что версия CTP не может быть установлена вместе с Windows PowerShell 1.0. В идеале в системе также должна быть установлена платформа Microsoft® .NET Framework 3.5, чтобы обеспечить поддержку всех доступных функций. В противном случае функции будут ограничены.

Кроме того, поскольку версия CTP является очень ранней, пока корпорация Майкрософт уделяла основное внимание последним операционным системам, т.е. Windows Vista® и Windows Server® 2008. Совместимость с ОС в данный момент никоим образом не означает совместимости с ОС, которую можно ожидать в итоговом выпущенном коде. Портированию в более ранние версии уделяется внимание на последующих этапах цикла разработки.

Два типа удаленной работы

В мире удаленного управления обычно присутствуют два типа удаленного управления: удаленная работа слияния и развертывания. При удаленной работе слияния несколько администраторов подключаются к одному серверу по протоколу SSH. Windows PowerShell поддерживает подобное подключение безопасным и разделенным образом, чтобы, например, компания, размещающая Exchange Server, могла предоставить своим клиентам административный доступ к отдельным частям сервера. Удаленная работа слияния обеспечивает надежный удаленный интерактивный доступ к копии Windows PowerShell (только версии 2.0!), установленной на удаленном сервере.

Удаленная работа развертывания заключается в выдаче набора команд для группы удаленных серверов одновременно. Команды параллельно «разветвляются» с рабочей станции на группу серверов. Команды выполняются на всех серверах, а результаты — в форме объектов Windows PowerShell — возвращаются на рабочую станцию для просмотра и работы с ними. Windows PowerShell поддерживает две основные технологии для удаленной работы разветвления — инструментарий управления Windows® (WMI) и удаленное управление Windows (WinRM), которые впервые появились в составе Windows Server 2008, а затем были обновлены в версии CTP Windows PowerShell 2.0.

Синхронная и асинхронная

В действительности, еще в Windows PowerShell 1.0 существовали определенные возможности разветвления, привязанные к инструментарию управления WMI. Например, можно просто создать массив имен компьютеров, а затем получить из каждого класс WMI:

Читать еще:  Хитрая страна-производитель!

Для выполнения методов, например, перезагрузки компьютера, необходимы некоторые дополнительные действия, поскольку версия 1.0 не предоставляет способ массового выполнения методов WMI. Однако это изменилось в версии 2.0 CTP благодаря командлету Invoke-WmiMethod:

Однако этот метод имеет одну проблему. Он синхронный, что означает, что одновременно осуществляется обращение только к одному компьютеру, и для выполнения других команд необходимо подождать завершения. Но в версии CTP представлена новая концепция – фоновые задания, позволяющая выполнение подобных команд в фоновом режиме. В самом простом варианте команда WMI может быть выполнена в фоновом режиме простым добавлением параметра –AsJob:

Можно просмотреть состояние итогового задания, выполнив Get-PSJob, а окончательные результаты задания можно просмотреть, выполнив Receive-PSJob. (Управление заданиями будет рассмотрено более подробно в следующей статье.) Однако командлет Invoke-Command предоставляет лучшие способы выполнения команд в фоновом режиме, например следующий:

Таким образом, команда Get-WmiObject передается всем указанным компьютерам, затем выполняется локально. Обычное выполнение происходит гораздо быстрее без необходимости использования подключений RPC инструментария WMI. Вместо этого Invoke-Command использует WinRM, который по умолчанию использует порт 80 или 443. Эти порты упрощают перемещение брандмауэров и являются полностью настраиваемыми. Invoke-Command также поддерживает дополнительные параметры для альтернативных учетных данных и регулирования, позволяя работать с сотнями компьютеров при параллельной работе всего некоторых из них. Это позволяет избежать перегрузки и излишних издержек.

Повторно используемые пространства выполнения

Если планируется удаленное управление определенным набором компьютеров более одного раза, следует рассмотреть использование пространств выполнения, а не простых списков имен компьютеров. Пространство выполнения в Windows PowerShell – это просто экземпляр механизма интерпретатора команд, выполняемый локально на компьютере как окно консоли интерпретатора команд или в фоновом режиме на удаленном компьютере. Запуск пространства выполнения осуществляется очень просто:

Поскольку пространства выполнения также используют WinRM, они также по умолчанию используют порт 80 (или 443, если указан параметр –UseSSL). Они также должны принимать альтернативные учетные данные и т. д. При получении итоговых объектов пространства выполнения их можно передать командлету Invoke-Command, и Windows PowerShell передаст команду компьютерам, на которых существуют пространства выполнения:

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

Удаленная работа слияния

Пространства выполнения также являются ключевыми объектами для удаленной работы слияния. Например, на рис. 1 показано созданное мною пространство выполнения на удаленном компьютере, полученная ссылка на это пространство выполнения и последующее использование командлета Push-Runspace для активации пространства выполнения. После этого я выполняю команды на удаленном компьютере аналогично тому, как позволяет SSH или средства удаленного интерпретатора команд. Выполнение Pop-Runspace возвращает исходное пространство выполнения «local», а командная строка оболочки помогает отслеживать местонахождение.

Рис. 1. Использование пространства имен для выполнения команд на удаленном компьютере (щелкните изображение, чтобы увеличить его)

Точная последовательность выполненных мною команд выглядит следующим образом:

Этот прием называется слиянием, поскольку одновременно удаленные интерактивные пространства выполнения на одном сервере могут быть открыты несколькими администраторами — происходит их «слияние» с отдельных рабочих станций на сервер. Новая модель безопасности в Windows PowerShell 2.0 позволяет создавать ограниченные интерпретаторы команд и командлеты, поэтому может быть запрещено внесение каждым администратором глобальных изменений. Каждый администратор ограничивается собственной областью в интерпретаторе команд. (Для этих новых методов обеспечения безопасности требуется установка определенного специального программного обеспечения на языке, предназначенном для платформы .NET Framework. Это выходит за рамки статьи о Windows PowerShell, но приятно знать, что такие возможности существуют.)

«Убойное» приложение в 2.0

В версию CTP Windows PowerShell 2.0 входит потрясающий список новых возможностей. По моему мнение, удаленная работа – это «убойное» приложение. Она выгода для всех администраторов практически во всех средах.

Вам следует ознакомиться с этими новыми функциями, чтобы вы могли предоставить свои предложения группе разработки. Вам необходимо управления портами WinRM по умолчанию через групповую политику? Должны ли командлеты работать по-другому? Присутствуют ли проблемы производительности? Достаточно ли просто осуществляется настройка WinRM? Вы можете внести свой вклад, отправив предложения на веб-узле connect.microsoft.com, или поделиться мнением с обладателями звания MVP, включая меня (чтобы связаться со мной, оставьте отзыв на форумах ScriptingAnswers.com). Поэтому примите участие и помогите в создании «убойного» приложения для Windows PowerShell следующего поколения!

Командлет месяца: Select-Object

Попробуйте выполнить следующую команду: Get-Service | ConvertTo-HTML | Out-File Services.htm. Теперь просмотрите полученный файл HTML в веб-обозревателе. Довольно много информации, не так ли? Если бы только существовал способ немного ограничить ее, выбрав только нужную информацию. Именно это выполняет командлет Select-Object. Например, предположим, необходим список имен служб и их текущего состояния. Можно использовать следующее: Get-Service | Select Name,Status | ConvertTo-HTML | Out-File Services.htm.

Однако необходимо помнить только одно: командлет Select-Object сбрасывает исходный объект, в этом случае службы, и создает пользовательский объект (тип объекта PSCustom), содержащий только указанные свойства. Все функции исходного объекта более недоступны, поэтому, наверное, вам потребуется разместить Select-Object в конце конвейера, обеспечивая максимально долгую работу с объектом.

Экспорт задания планировщика в XML файл

PowerShell предоставляет возможность экспортировать текущие настройки любого задания планировщика в текстовый XML файл. Таким образом можно выгрузить параметры любого задания и распространить задание любой сложности на другие компьютеры сети. Экспорт задания может быть выполнен как из графического интерфейса Task Scheduller, так и из командой строки PowerShell.

Команда экспорта задания с именем StartupScript_PS в файл StartupScript_PS.xml:

Export-ScheduledTask «StartupScript_PS» | out-file c:tmpStartupScript_PS.xml

Командлет Export-ScheduledTask не будет работать в PowerShell 2.0, поэтому в Windows 7 / 2008 R2 для экспорта настроек задания в XML файл лучше воспользоваться встроенной утилитой schtasks, вывод которой нужно перенаправить в текстовый файл:

schtasks /query /tn «NewPsTask» /xml >> «c:tmpNewPsTask.xml»

Почему PowerShell — это круто

PowerShell имеет множество расширенных функций, большинство из которых могут иметь отношение только к программистам Windows и администраторам серверов, но есть несколько основных функций, которые просты для понимания, но чрезвычайно полезны для всех.

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

Подробная информация о процессе. Одно дело использовать альтернативный диспетчер задач

, но PowerShell позволяет выполнять некоторые хитрые трюки в отношении управления процессами. Начните с собственных командлетов Get-Process и Stop-Process.

Простая автоматизация и создание сценариев. Обычная Windows не предоставляет простой способ автоматизации задач. До PowerShell командные файлы могли выполнять только примитивные сценарии, в то время как сторонние решения были необходимы для автоматизации (например, Perl, AutoHotkey). Но с помощью PowerShell вы можете запланировать выполнение задач в определенное время или с определенным интервалом.

Например, с помощью модуля ScheduledTasks вы можете заставить определенную программу или процесс выполняться в соответствии с триггером (например, в определенное время, когда происходит системное событие и т. Д.), И вы можете определить контекст для этой задачи (например, безопасность). ограничения).

Командный трубопровод и логика. В Bash (Linux) команды могут передаваться вместе, так что выходные данные одной команды могут использоваться в качестве входных данных для другой команды. Например, базовый командлет Get-Process выводит информацию для всех запущенных процессов. Что если вы хотите получать информацию только из подмножества процессов? Вы можете передать его с помощью командлета Where-Object, который действует как фильтр процессов, чтобы выполнять Get-Process только для процессов, возвращаемых Where-Object.

PowerShell также предоставляет несколько собственных команд для условной логики (например, If, Else, For, Switch), которые можно использовать для управления потоком выполнения командлета. Например, вы можете создать сценарий PowerShell, который выполняет определенные командлеты только при соблюдении определенных условий (например, очистка процессов, когда объем ОЗУ близок к полному).

Удаленные и фоновые задания. Мало того, что командлеты могут выполняться как фоновые процессы (так что вы можете выполнять несколько задач одновременно асинхронно), но многие командлеты также могут выполняться на удаленных компьютерах в сети, если они были настроены для этого. Командлеты с удаленными возможностями часто предоставляют параметр ComputerName, который вы можете указать при выполнении указанного командлета.

Для получения дополнительной информации посетите эту страницу TechNet по запуску удаленных команд с помощью PowerShell.

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

Импорт задания планировщика из XML файла

После того, как настройки задания планировщика экспортированы в XML файл, его можно импортировать на любой другой компьютер сети с помощи графической консоли, SchTasks.exe или PowerShell.

Импортировать параметры задания и зарегистрировать его поможет командлет Register-ScheduledTask.

Register-ScheduledTask -Xml (Get-Content “\Server1publicNewPsTask.xml” | out-string) -TaskName «NewPsTask»

В PowerShell 2.0 (Windows 7/Server 2008 R2) импорт задания также проще выполнить с помощью утилиты schtasks. Первая команда создаст новое задание. Вторая – сразу запустит его (не дожидаясь срабатывания триггера).

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector