РАЗДЕЛ about_Windows_PowerShell_2.0 КРАТКОЕ ОПИСАНИЕ Описание новых возможностей Windows PowerShell версии 2.0. ПОЛНОЕ ОПИСАНИЕ Windows PowerShell 2.0 включает несколько важных компонентов, расширяющих возможности этой оболочки, повышающих удобство ее использования и позволяющих без труда управлять и следить за всеми аспектами сред на основе Windows. Программа Windows PowerShell 2.0 совместима с предыдущей версией. Командлеты, поставщики, оснастки, скрипты, функции и профили, предназначенные для Windows PowerShell 1.0, работают в Windows PowerShell 2.0 без изменений. НОВЫЕ ВОЗМОЖНОСТИ Windows PowerShell 2.0 включает следующие новые возможности. Удаленное взаимодействие Windows PowerShell 2.0 позволяет выполнять команды на одном или нескольких удаленных компьютерах с помощью одной команды Windows PowerShell. Можно выполнять отдельные команды или создавать постоянное соединение (сеанс) для выполнения последовательности связанных команд. Можно также запустить сеанс на удаленном компьютере, чтобы вводимые команды выполнялись непосредственно на удаленном компьютере. Функции удаленного взаимодействия Windows PowerShell основаны на удаленном управлении Windows (WinRM). WinRM - это выполненная Майкрософт реализация протокола WS-Management, стандартного протокола связи на основе SOAP, совместимого с брандмауэром. На удаленных компьютерах должны быть установлены Windows PowerShell 2.0, платформа .NET Framework 2.0 и служба WinRM. Удаленные команды поддерживаются всеми операционными системами, в которых работает Windows PowerShell. Текущий пользователь должен располагать разрешениями на выполнение команд на удаленных компьютерах. Дополнительные сведения см. в разделе about_Remote_Requirements. Для поддержки удаленного взаимодействия добавлены командлеты Invoke-Command, Enter-PSSession и Exit-PSSession и другие командлеты, содержащие элемент PSSession. Эти командлеты позволяют создавать постоянные соединения и управлять ими. Некоторые командлеты, в том числе Get-Process, Get-Service и Get-Eventlog, теперь содержат параметр ComputerName. Этот параметр позволяет получать сведения об удаленных компьютерах. Эти командлеты используют для получения данных методы .NET Framework, поэтому они не зависят от удаленного взаимодействия Windows PowerShell. Они не требуют установки новых программ или конфигураций. Дополнительные сведения см. в разделах справки для отдельных командлетов. Дополнительные сведения об удаленных командах см. в разделе about_Remote и about_Remote_FAQ. Дополнительные сведения о сеансах см. в разделе about_PSSessions. Среда Windows PowerShell ISE Windows PowerShell 2.0 включает интегрированную среду скриптов (ISE) Windows PowerShell, ведущее приложение, позволяющее выполнять команды и разрабатывать, писать, тестировать и отлаживать скрипты с использованием графического интерфейса с цветовым кодированием, основанного на Юникоде. Для Windows PowerShell ISE требуется платформа Microsoft .NET Framework 3.0 или более поздней версии. Windows PowerShell ISE включает следующее. - Область команд, позволяющая выполнять интерактивные команды так же, как в консоли Windows PowerShell. Просто введите команду и нажмите клавишу ВВОД. Выходные данные появятся в области вывода. - Область скриптов, позволяющая составлять, редактировать, отлаживать и выполнять функции и скрипты. - Несколько вкладок, на каждой из которых есть собственные области команд и скриптов, позволяют независимо выполнять одну или несколько задач. Среда Windows PowerShell ISE предназначена как для новичков, так и для опытных пользователей. Фоновые задания Фоновые задания - это команды, выполняющиеся асинхронно. При запуске фонового задания командная строка возвращается немедленно, даже если команда продолжает выполняться. Функцию фоновых заданий можно использовать для выполнения сложных команд в фоновом режиме, позволяющем использовать сеанс для другой работы, не дожидаясь выполнения команды. Фоновое задание можно выполнять на локальном или удаленном компьютере, результаты можно сохранить на любом из них. Для выполнения задания в удаленном режиме используйте командлет Invoke-Command. Оболочка Windows PowerShell включает набор командлетов, содержащих элемент Job (командлеты Job). Эти командлеты используются для создания, запуска, управления и удаления фоновых заданий и для получения результатов фонового задания. Чтобы получить список командлетов заданий, введите следующую команду: get-command *-job Дополнительные сведения о фоновых заданиях см. в разделе about_Jobs. Отладчик скриптов Windows PowerShell 2.0 включает отладчик скриптов и функций на основе командлетов. Этот отладчик поддерживается открытым API, имеющим полную документацию, который можно использовать для сборки собственного отладчика или настройки и расширения имеющегося. Командлеты отладчика позволяют устанавливать точки останова на строках, столбцах, переменных и командах. Эти командлеты позволяют управлять точками останова и отображать стек вызова. Можно создавать условные точки останова и определять настраиваемые действия для точек останова, такие как выполнение скриптов диагностики и записи в журнал. При достижении точки останова Windows PowerShell приостанавливае т выполнение и запускает отладчик. Отладчик включает набор пользовательских команд для пошаговой проверки кода. Для отображения значений переменных можно выполнять и стандартные команды Windows PowerShell, а для изучения результатов можно пользоваться командлетами. Дополнительные сведения об отладке см. в разделе about_Debuggers. Раздел данных Скрипты, предназначенные для Windows PowerShell 2.0, могут содержать один или несколько разделов DATA, отделяющих данные от логики скрипта. Данные в новом разделе DATA ограничены определенным поднабором языка скриптов Windows PowerShell. Раздел DATA используется в Windows PowerShell 2.0 для поддержки вывода сообщений скриптов на различных языках. Раздел DATA можно использовать для отделения определенных строк сообщений для пользователей, которые будут переведены на различные языки пользовательского интерфейса. Дополнительные сведения см. в разделе about_Data_Sections. Вывод сообщений скриптов на различных языках Функции вывода сообщений скриптов на различных языках в Windows PowerShell 2.0 позволяют улучшить обслуживание пользователей по всему миру. Вывод сообщений скриптов на различных языках позволяет отображать для пользователей сообщения и текст справки скриптов и функций на нескольких языках. Функции вывода сообщений скриптов на различных языках при выполнении запрашивают язык и региональные параметры пользовательского интерфейса ($PsUICulture) операционной системы и затем импортируют соответствующие переведенные строки текста, которые можно выводить пользователю. Раздел данных позволяет хранить строки текста отдельно от кода, чтобы их было легко найти. Новый командлет ConvertFrom-StringData преобразует текстовые строки в напоминающие словарь хэш-таблицы для упрощения перевода. Дополнительные сведения см. в разделе about_Script_International ization. КОМАНДЛЕТЫ WMI Возможности инструментария управления Windows (WMI) в Windows PowerShell 2.0 расширены за счет добавления следующих командлетов. - Remove-WmiObject - Set-WmiInstance - Invoke-WmiMethod В командлет Get-WmiObject добавлены новые параметры. Все командлеты WMI теперь поддерживают следующие параметры. - EnableAllPrivileges - Impersonation - Authentication - Authority Эти новые параметры позволяют точнее контролировать конфигурацию безопасности операций WMI, не используя непосредственно типы из библиотеки классов платформы .NET Framework. Чтобы получить список командлетов WMI, введите следующую команду: get-help *wmi* Для получения справки по определенному командлету, введите командлет get-help и имя командлета. Командлет Get-WinEvent Командлет Get-WinEvent возвращает события из журналов средства просмотра событий и из файлов журналов событий средства отслеживания событий для Windows (ETW), находящихся на локальном компьютере и на удаленных компьютерах. Он может возвращать события из обычных журналов событий и из журналов событий Windows, реализованных в Windows Vista. Командлет Get-WinEvent используется для получения объектов, представляющих журналы событий, поставщиков журналов событий и события в журналах. Get-WinEvent позволяет объединять события из различных источников в одной команде. Он поддерживает расширенные запросы на языке пути XML (XPath), XML и в формате хэш-таблиц. Для выполнения командлета Get-WinEvent требуется Windows Vista или Windows Server 2008 и платформа Microsoft .NET Framework 3.5. Командлет Out-Gridview Командлет Out-GridView отображает результаты других команд в интерактивной таблице, позволяющей искать, сортировать, группировать и фильтровать результаты. Например, можно отправить результаты команд Get-Process, Get-WmiObject, Get-WinEvent или Get-Eventlog командлету Out-GridView и затем изучать данные с помощью функций таблицы. help out-gridview -full Командлет Add-Type Командлет Add-Type позволяет добавлять в Windows PowerShell типы .NET Framework из исходного кода другого языка .NET Framework. Add-Type компилирует исходный код, создающий типы, и делает сборки, содержащие новые типы .NET Framework. Затем можно использовать в командах Windows PowerShell эти типы .NET Framework вместе со стандартными типами объектов, предоставляемыми .NET Framework. Add-Type можно также использовать для загрузки сборок в текущий сеанс для использования типов в этих сборках в Windows PowerShell. Add-Type позволяет разрабатывать новые типы .NET Framework, использовать типы .NET Framework в библиотеках C# и получать доступ к Win32 API. Дополнительные сведения см. в разделе Add-Type. Оповещение о событиях В Windows PowerShell 2.0 реализовано оповещение о событиях. Пользователи могут регистрироваться и подписываться на события Windows PowerShell, WMI или .NET Framework. Кроме того, пользователи могут ожидать и перенаправлять события и предпринимать действия при системных событиях и событиях управления как в синхронном, так и в асинхронном режиме. Разработчики могут писать приложения, использующие архитектуру событий для получения уведомлений об изменениях состояния. Пользователи могут писать скрипты, подписывающиеся на различные события и реагирующие на содержимое. В Windows PowerShell включены командлеты, создающие новые события, возвращающие события и подписки на события, регистрирующие и отменяющие регистрацию событий, ожидающие событий и удаляющие события. Чтобы получить дополнительные сведения об этих командлетах, введите следующую команду: get-command *-event Модули Модули Windows PowerShell позволяют разделять и систематизироват ь скрипты Windows PowerShell в рамках независимых самодостаточных многократно используемых блоков. Код в модуле выполняется в собственном контексте, поэтому он не добавляет, не вступает в конфликт и не перезаписывает переменные, функции, псевдонимы и другие ресурсы сеанса. Для создания простых скриптов и сложных приложений модули можно писать, распространять, комбинировать, публиковать и использовать многократно. В Windows PowerShell 2.0 входят командлеты, добавляющие, возвращающие и удаляющие модули, а также экспортирующие члены модуля. Чтобы получить дополнительные сведения о командлетах, связанных с модулями, введите следующую команду: get-command *-module* Транзакции Windows PowerShell 2.0 поддерживает транзакции. Транзакции позволяют отменить целую последовательность операций. Транзакции доступны только для операций, поддерживающих транзакции. Она предназначены для приложений, требующих атомарности, согласованности, изоляции и возможности восстановления, таких как базы данных и очереди сообщений. Командлеты и поставщики, поддерживающие транзакции, имеют новый параметр UseTransaction. Для запуска операции в рамках транзакции используется командлет Start-Transaction. После этого при использовании командлетов, выполняющих операцию, команды можно сделать частью транзакции с помощью параметра UseTransaction для каждого командлета. Если какая-либо из команд в транзакции выдает в некий момент ошибку, используйте командлет Rollback-Transaction для отмены всех команд транзакции.Если все команды выполняются успешно, используйте командлет Commit-Transaction, чтобы зафиксировать действие команд. В Windows PowerShell 2.0 входят командлеты, запускающие, использующие, фиксирующие и откатывающие транзакции. Для получения сведений об этих командлетах введите следующую команду: get-command *transaction* Критические изменения для Windows PowerShell 1.0 -- Значение записи реестра PowerShellVersion в HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine изменено на 2.0. -- Добавлены новые командлеты и переменные. Эти новые элементы могут вступать в конфликт с переменными и функциями в профилях и скриптах. -- Оператор -IEQ выполняет сравнение символов без учета регистра. -- Кроме командлетов, командлет Get-Command по умолчанию возвращает и функции. -- Собственные команды, создающие интерфейс пользователя, нельзя передавать по конвейеру командлету Out-Host. -- Новые ключевые слова языка Begin, Process, End и Dynamic Param могут вступать в конфликт со сходными словами, используемыми в скриптах и функциях. Если эти слова интерпретируются как ключевые слова языка, могут возникать ошибки синтаксического анализа. -- Изменено разрешение имен командлетов. В Windows PowerShell 1.0 при экспорте двумя оснастками Windows PowerShell командлетов с одинаковыми именами возникала ошибка среды выполнения. В Windows PowerShell 2.0 при вводе названия команды выполняется командлет, добавленный в сеанс последним. Для выполнения команды, которая не запускается по умолчанию, используйте имя командлета вместе с именем оснастки или модуля, из которого он добавлен. -- Имя функции с символами '-?' после него возвращает раздел справки для этой функции, если он есть. -- Изменено разрешение параметров для методов Microsoft .Net Framework. В Windows PowerShell 1.0 при вызове перегруженного метода .NET, для которого было несколько подходящих вариантов синтаксиса, не создавалось сообщение об ошибке. В Windows PowerShell 2.0 создается сообщение об ошибке, связанной с неоднозначностью. Кроме того, в Windows PowerShell 2.0 значительно улучшен алгоритм выбора самого подходящего метода, что уменьшает количество неоднозначностей. -- При перечислении коллекции в конвейере и попытке изменить коллекцию в конвейере Windows PowerShell создает исключение. Например, следующие команды будут работать в Windows PowerShell 1.0, но в Windows PowerShell 2.0 выдадут ошибку после первой итерации конвейера. $h = @{Name="Hello"; Value="Test"} $h.keys | foreach-object {$h.remove($_)} Этой ошибки можно избежать, создав для перечислителя вложенное выражение с помощью символов $(). Пример: $($h.keys) | foreach-object {$h.remove($_)} Дополнительные сведения о Windows PowerShell 2.0 см. на следующих веб-сайтах. -- Веб-сайт Windows PowerShell https://go.microsoft.com/fwlink/?LinkID=106031 -- Блог команды Windows PowerShell: https://go.microsoft.com/fwlink/?LinkId=143696 СМ. ТАКЖЕ about_Data_Sections about_Debuggers about_Functions_Advanced about_Jobs about_Join about_PSSessions about_Remote about_Script_Internationalization about_Split