Новые возможности Windows PowerShell 5.0

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

Windows PowerShell 5.0 обеспечивает обратную совместимость. Командлеты, поставщики, модули, оснастки, сценарии, функции и профили, разработанные для Windows PowerShell 4.0, Windows PowerShell 3.0 и Windows PowerShell 2.0, обычно работают в Windows PowerShell 5.0 без изменений.

Установка Windows PowerShell

Командная оболочка Windows PowerShell 5.0 установлена по умолчанию в Windows Server 2016 Technical Preview и Windows 10.

Чтобы установить Windows PowerShell 5.0 в системе Windows Server 2012 R2, Windows 8.1 Корпоративная или Windows 8.1 Профессиональная, скачайте и установите Windows Management Framework 5.0. Перед тем как устанавливать Windows Management Framework 5.0, прочтите сведения о скачивании и убедитесь, что все требования к системе выполнены.

В этом разделе

Обновления Windows PowerShell 4.0 в накопительном пакете обновления за ноябрь 2014 года (статья базы знаний 3000850)

Многие обновления и улучшения Windows PowerShell Desired State Configuration (DSC) в Windows PowerShell 4.0 доступны в накопительном пакете обновления за ноябрь 2014 г. для Windows RT 8.1, Windows 8.1 и Windows Server 2012 R2 (KB3000850). Чтобы определить, установлен ли KB3000850 в системе, выполните в Get-Hotfix -Id KB3000850 Windows PowerShell.

  • Обновления для существующих командлетов в модуле PSDesiredStateConfiguration:

    • Get-DscResource работает быстрее (особенно в интегрированной среде сценариев).
    • Для Start-DscConfiguration появился новый параметр, -UseExisting, который повторно применяет последнюю конфигурацию.
    • Исправлена работа параметра -Force для Start-DscConfiguration.
    • Get-DscLocalConfigurationManager отображает больше полезной информации о состоянии подсистемы.
    • Test-DscConfiguration теперь возвращает имя компьютера вместе со значением True или False.
    • New-DscChecksum теперь поддерживает пути UNC.
  • Новые командлеты в модуле PSDesiredStateConfiguration:

    • Update-DscConfiguration: выполняет проверку опрашиваемого сервера по запросу.
    • Stop-DscConfiguration: останавливает уже выполняемую конфигурацию.
    • Remove-DscConfigurationDocument: позволяет удалять документы конфигурации на разных этапах (ожидающий, предыдущий и текущий).
  • Усовершенствования языка:

    • DependsOn теперь поддерживает составные ресурсы.
    • DependsOn теперь поддерживает числа в именах экземпляров ресурса.
    • Выражения узла, результатом вычисления которых является пустое значение, больше не приводят к ошибкам.
    • Исправлена ошибка, возникающая, когда вычисление выражения узла дает пустой результат.
    • Конфигурации, вызывающие другие конфигурации, теперь работают в консоли Windows PowerShell.
  • Усовершенствования режима опроса:

    • Режим опроса теперь поддерживает все ZIP-файлы.
    • AllowModuleOverwrite теперь работает правильно.
  • Усовершенствования устойчивости

    • Новый DebugMode позволяет повторно загружать модули ресурсов.
    • В случае сбоя конфигурации файл pending.mof не удаляется.
    • Локальный диспетчер конфигурации (LCM) стал более устойчивым к повреждению параметров метаконфигурации.
  • Усовершенствования диагностики:

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

    • Ресурс LocalConfigurationManager имеет новое свойство ActionAfterReboot.
      • ContinueConfiguration (значение по умолчанию): автоматически возобновляет конфигурацию после перезапуска целевого узла.
      • StopConfiguration: не возобновляет конфигурацию автоматически после перезапуска узла.
    • Проверку согласованности теперь можно выполнять чаще, чем операцию PULL, и наоборот.
    • Поддержка управления версиями: теперь DSC может распознать документ, созданный в более новой версии клиента (входит в состав WMF 5.0).
  • Усовершенствования предотвращения ошибок:

    • Версия модуля теперь применяется принудительно до применения конфигурации.
    • DebugPreference теперь работает правильно для вызовов Get-, Set- или Test-TargetResource.
  • Усовершенствования обработки учетных данных:

    • Сертификат теперь используется, если указан как Certificate, так и PSDscAllowPlainTextPassword.
    • Учетные данные расшифровываются даже для Get-TargetResource.
    • Учетные данные метаконфигурации зашифровываются и расшифровываются.
    • PSCredential теперь расшифровываются, если находятся во внедренном объекте.
  • Улучшения встроенных ресурсов

    • Ресурс Package:
      • больше не устанавливает неправильный пакет (из локальных или интернет-источников);
      • теперь поддерживает протокол HTTPS.
    • Теперь в ресурсе Package реализована поддержка протокола HTTPS.
    • Ресурс Archive теперь поддерживает учетные данные.

Новые функции в Windows PowerShell 5.0

Новые функции в Windows PowerShell

  • Начиная с Windows PowerShell 5.0, можно разрабатывать с помощью классов, формального синтаксиса и семантики, аналогичных другим объектно-ориентированным языкам программирования. Для поддержки новой функции в язык Windows PowerShell были добавлены Class, Enum и другие ключевые слова. Дополнительные сведения о работе с классами см. в разделе about_Classes.

  • В Windows PowerShell 5.0 для передачи структурированных данных между сценарием и вызывающими его объектами (или средой внешнего размещения) можно использовать новый структурированный информационный поток. Теперь можно использовать Write-Host для вывода выходных данных в поток сведений. Информационные потоки также работают для PowerShell.Streams, заданий, запланированных заданий и рабочих процессов. Следующие функции поддерживают информационный поток.

    • Новый командлет Write-Information, позволяющий указать, как Windows PowerShell обрабатывает данные потока сведений для команды. Write-Host является программой-оболочкой для Write-Information. Write-Information также является поддерживаемым действием рабочего процесса.
    • Два новых общих параметра — InformationVariable и InformationAction — позволяют настроить отображение информационных потоков из команды. Допустимые значения для InformationAction: SilentlyContinue, Stop, Continue, Inquire, Ignore и Suspend. По умолчанию используется SilentlyContinue. InformationVariable указывает строку как имя переменной, в которой требуется сохранить данные Write-Host из команды.
    • Новая привилегированная переменная InformationPreference задает настройку по умолчанию для данных информационного потока в сеансе Windows PowerShell. Значение по умолчанию — SilentlyContinue.
    • Были добавлены два новых общих параметра рабочего процесса — PSInformation и InformationAction.
    • Теперь при использовании команды Format-Table столбцы таблицы автоматически форматируются с учетом первых 300 мс данных, проходящих через поток.
  • При сотрудничестве с Microsoft Research был добавлен новый командлет ConvertFrom-String. ConvertFrom-String позволяет извлекать и анализировать структурированные объекты из содержимого текстовых строк. Дополнительные сведения см. в статье "ConvertFrom-String".

  • Новый командлет Convert-String автоматически форматирует текст согласно примеру, указанному в параметре -Example.

  • Новый модуль Microsoft.PowerShell.Archive содержит командлеты, позволяющие сжимать файлы и папки в архивы (которые также называют ZIP-файлами), извлекать файлы из существующих ZIP-файлов и обновлять ZIP-файлы с использованием более поздних версий содержащихся в них файлов.

  • Новый модуль PackageManagement позволяет обнаруживать и устанавливать программные пакеты через Интернет. Модуль PackageManagement (ранее OneGet) — это диспетчер или мультиплексор существующих диспетчеров пакетов (также называемых поставщиками пакетов), который унифицирует управление пакетами Windows с помощью единого интерфейса Windows PowerShell.

  • Новый модуль PowerShellGet позволяет искать, устанавливать, публиковать и обновлять модули и ресурсы DSC в коллекции PowerShell или во внутреннем репозитории модулей, который можно настроить с помощью командлета Register-PSRepository.

  • Добавлено новое ключевое слово языка Hidden, которое указывает, что член (свойство или метод) не отображается по умолчанию в результатах Get-Member (если только не задан параметр -Force). Свойства или методы, которые были помечены как скрытые, также не отображаются в результатах IntelliSense, если только не используется контекст, где элемент должен быть видимым. Например, автоматическая переменная $This должна показывать скрытые элементы при использовании в методе класса.

  • Командлеты New-Item, Remove-Item и Get-ChildItem были усовершенствованы для поддержки создания символьных ссылок и управления ими. Параметр -ItemType для New-Item принимает новое значение SymbolicLink. Теперь символьные ссылки можно создавать в отдельной строке с помощью командлета New-Item.

  • Get-ChildItem также получил новый параметр, -Depth, используемый вместе с параметром -Recurse для ограничения рекурсии. Например, Get-ChildItem -Recurse -Depth 2 возвращает результаты из текущей папки, всех дочерних папок внутри нее и всех вложенных в них папок.

  • Copy-Item теперь позволяет копировать файлы или папки из одного сеанса Windows PowerShell в другой. Таким образом, файлы можно копировать в сеансы, подключенные к удаленным компьютерам (в том числе компьютерам под управлением Nano Server, не имеющим другого интерфейса). Чтобы скопировать файлы, укажите идентификаторы PSSession в качестве значения новых параметров -FromSession и -ToSession, а также добавьте -Path и -Destination, чтобы указать исходный путь и назначение соответственно. Пример: Copy-Item -Path c:\myFile.txt -ToSession $s -Destination d:\destinationFolder.

  • Транскрибирование Windows PowerShell было улучшено и теперь распространяется на все приложения размещения (например, интегрированную среду сценариев Windows), а не только узел консоли (powershell.exe). Параметры транскрибирования (в том числе включение записи во всей системе) можно настроить с помощью параметра групповой политики Включить транскрипции PowerShell, который находится в разделе "Административные шаблоны/Компоненты Windows/Windows PowerShell".

  • Новая функция подробной трассировки сценариев позволяет включить подробное отслеживание и анализ для используемых в системе сценариев Windows PowerShell. После включения этой функции Windows PowerShell записывает все блоки сценариев в журнале событий трассировки Windows — Microsoft-Windows-PowerShell/Operational.

  • Начиная с Windows PowerShell 5.0 новые командлеты синтаксиса криптографических сообщений поддерживают шифрование и расшифровку содержимого с помощью стандартного формата IETF для криптографической защиты сообщений, как описано в RFC5652. Командлеты Get-CmsMessage, Protect-CmsMessage и Unprotect-CmsMessage были добавлены в модуль Microsoft.PowerShell.Security.

  • Новые командлеты в модуле Microsoft.PowerShell.Utility — Get-Runspace, Debug-Runspace, Get-RunspaceDebug, Enable-RunspaceDebug и Disable-RunspaceDebug — позволяют задавать параметры отладки для пространства выполнения, а также запускать и останавливать отладку в нем. Для отладки произвольных пространств выполнения (то есть тех, которые не используются по умолчанию для консоли Windows PowerShell или сеанса интегрированной среды сценариев Windows PowerShell) Windows PowerShell позволяет задавать точки останова в сценарии. Кроме того, доступны дополнительные точки для останова выполнения сценария, чтобы можно было подключить отладчик и отладить сценарий пространства выполнения. В отладчик сценариев Windows PowerShell для пространств выполнения добавлена поддержка вложенной отладки для произвольных пространств выполнения.

  • В модуль Microsoft.PowerShell.Utility добавлен командлет Format-Hex. Format-Hex позволяет просматривать текст или двоичные данные в шестнадцатеричном формате.

  • В модуль Microsoft.PowerShell.Utility добавлены командлеты Get-Clipboard и Set-Clipboard, упрощающие перенос содержимого в сеанс Windows PowerShell и из него. Командлеты Clipboard поддерживают изображения, звуковые файлы, списки файлов и текст.

  • В модуль Microsoft.PowerShell.Management добавлен командлет Clear-RecycleBin, очищающий корзину для фиксированного диска, включающего в себя внешние диски. По умолчанию вам предлагается подтвердить команду Clear-RecycleBin, так как для свойства ConfirmImpact командлета задано значение ConfirmImpact.High.

  • Новый командлет New-TemporaryFile позволяет создать временный файл во время создания сценария. По умолчанию временный файл создается в папке C:\Users\<user name>\AppData\Local\Temp.

  • Теперь у командлетов Out-File, Add-Content и Set-Content появился новый параметр, -NoNewline, который пропускает перевод на новую строку после выходных данных.

  • Командлет New-Guid использует класс Guid .NET Framework для создания идентификатора GUID, что удобно при создании сценариев или ресурсов DSC.

  • Так как сведения о версии файла могут вводить пользователя в заблуждение, особенно после исправления файла, для объектов FileInfo доступны новые свойства сценария FileVersionRaw и ProductVersionRaw. Например, можно выполнить следующую команду, чтобы просмотреть значения этих свойств для powershell.exe, где $pid содержит идентификатор процесса для открытого сеанса Windows PowerShell: Get-Process -Id $pid -FileVersionInfo | Format-List *version* -Force.

  • Новые командлеты Enter-PSHostProcess и Exit-PSHostProcess позволяют отлаживать скрипты Windows PowerShell в процессах отдельно от текущего процесса, выполняемого в консоли Windows PowerShell. Запустите Enter-PSHostProcess, чтобы ввести определенный идентификатор процесса или подключиться к нему, а затем запустите Get-Runspace, чтобы получить активные пространства выполнения внутри этого процесса. После окончания отладки скрипта в процессе запустите Exit-PSHostProcess, чтобы отключиться от него.

  • В модуль Microsoft.PowerShell.Utility добавлен командлет Wait-Debugger. Wait-Debugger можно запустить, чтобы остановить скрипт в отладчике перед выполнением следующего оператора скрипта.

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

  • В модуль Microsoft.PowerShell.Core добавлен командлет Debug-Job, обеспечивающий отладку выполняемых скриптов заданий для рабочего процесса Windows PowerShell, фонового процесса, а также заданий, выполняемых в удаленных сеансах.

  • Для заданий Windows PowerShell добавлено новое состояние AtBreakpoint. Оно применяется, когда задание выполняет сценарий с заданными точками останова и была достигнута такая точка. При остановке задания в точке останова отладки необходимо отладить задание, запустив командлет Debug-Job.

  • Windows PowerShell 5.0 реализует поддержку нескольких версий модуля Windows PowerShell в одной папке внутри $PSModulePath. В класс ModuleSpecification добавлено свойство RequiredVersion, помогающее получить нужную версию модуля. Это свойство является взаимоисключающим со свойством ModuleVersion. RequiredVersion теперь поддерживается как часть значения параметра FullyQualifiedName для командлетов Get-Module, Import-Module и Remove-Module.

  • Теперь проверку версии модуля можно выполнить, запустив командлет Test-ModuleManifest.

  • Результаты командлета Get-Command теперь содержат столбец Version, так как в класс CommandInfo добавлено свойство Version. Get-Command показывает команды из нескольких версий одного модуля. Свойство Version также является частью производных классов CmdletInfo: CmdletInfo и ApplicationInfo.

  • Get-Command имеет новый параметр —ShowCommandInfo, возвращающий сведения ShowCommand в виде объектов PSObject. Эта функция особенно полезна при выполнении Show-Command в Windows PowerShell ISE с использованием Windows PowerShell удаленного взаимодействия. Параметр -ShowCommandInfo заменяет существующую функцию Get-SerializedCommand в модуле Microsoft.PowerShell.Utility, но скрипт Get-SerializedCommand по-прежнему доступен для поддержки скриптов более низкого уровня.

  • Новый командлет Get-ItemPropertyValue позволяет получить значение свойства без использования точечной нотации. Например, в более старых версиях Windows PowerShell можно выполнить следующую команду, чтобы получить значение свойства Application Base для раздела реестра PowerShellEngine: (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name ApplicationBase).ApplicationBase. Начиная с Windows PowerShell 5.0, можно выполнить команду Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name ApplicationBase.

  • Консоль Windows PowerShell теперь использует цветовую разметку синтаксиса, как в интегрированной среде сценариев Windows PowerShell.

  • Новый модуль NetworkSwitch содержит командлеты, позволяющие применять конфигурацию коммутатора, виртуальной локальной сети и портов базового сетевого коммутатора уровня 2 к сетевым коммутаторам, прошедшим сертификацию для Windows Server 2012 R2.

  • Для командлетов Import-Module и Remove-Module добавлен параметр FullyQualifiedName, позволяющий хранить несколько версий одного модуля.

  • Командлеты Save-Help, Update-Help, Import-PSSession, Export-PSSession и Get-Command имеют новый параметр FullyQualifiedModule типа ModuleSpecification. Добавьте этот параметр, чтобы указать модуль по полному имени.

  • Значение $PSVersionTable.PSVersion обновлено до 5.0.

  • WMF 5.0 (PowerShell 5.0) включает в себя модуль Pester. Pester — это платформа модульного тестирования для PowerShell. Она предоставляет несколько простых ключевых слов, позволяющих создавать тесты для скриптов.

Новые функции для настройки требуемого состояния Windows PowerShell

  • Windows PowerShell улучшения языка позволяют определять ресурсы Windows PowerShell Desired State Configuration (DSC) с помощью классов. Import-DscResource теперь — по-настоящему динамическое ключевое слово. Windows PowerShell анализирует корневой модуль указанного модуля, выполняя поиск классов, содержащих атрибут DscResource. Теперь классы можно использовать для определения ресурсов DSC, в которых не требуется ни MOF-файл, ни вложенная папка DSCResource в папке модуля. Файл модуля Windows PowerShell может содержать несколько классов ресурсов DSC.
  • Добавлен новый параметр ThrottleLimit для указанных ниже командлетов в модуле PSDesiredStateConfiguration. Он позволяет указать число конечных компьютеров или устройств, на которых команда должны выполняться одновременно.
    • Get-DscConfiguration
    • Get-DscConfigurationStatus
    • Get-DscLocalConfigurationManager
    • Restore-DscConfiguration
    • Test-DscConfiguration
    • Compare-DscConfiguration
    • Publish-DscConfiguration
    • Set-DscLocalConfigurationManager
    • Start-DscConfiguration
    • Update-DscConfiguration
  • Централизованное ведение отчетов об ошибках DSC позволяет не только заносить полные сведения об ошибке в журнал событий, но и отправлять их в центральное расположение для дальнейшего анализа. В этом центральном расположении можно хранить ошибки конфигурации DSC для любого сервера в среде. После определения сервера отчетов в метаконфигурации все ошибки отправляются на этот сервер, а затем сохраняются в базе данных. Эту функцию можно настроить независимо от того, настроен ли целевой узел для извлечения конфигураций с опрашивающего сервера.
  • Усовершенствования, направленные на упрощение создания ресурсов DSC в интегрированной среде сценариев Windows PowerShell. Теперь вам доступны следующие операции:
    • Вывод всех ресурсов DSC в блоке configuration или node путем нажатия клавиш CTRL+ПРОБЕЛ на пустой строке внутри него.
    • Автозаполнение свойств ресурсов, имеющих тип enumeration.
    • Автозаполнение в свойстве DependsOn ресурсов DSC, основанное на других экземплярах ресурсов в конфигурации.
    • Улучшенное заполнение нажатием клавиши TAB для значений свойств ресурсов.
  • Теперь пользователь может запустить ресурс с заданным набором учетных данных, добавив атрибут PSDscRunAsCredential в блок узла. Например, PSDscRunAsCredential = Get-Credential Contoso\DscUser. Эта функция удобна для создания конфигураций, запускающих установщик Windows и исполняемые программы установки, обращающихся к кусту реестра для конкретного пользователя или выполняющих другие задачи вне контекста текущего пользователя.
  • Для ключевого слова Configuration добавлена 32-разрядная поддержка (на базе x86).
  • Теперь Windows PowerShell поддерживает специальную справку для конфигураций DSC, определяемых путем добавления [CmdletBinding()] в созданную функцию конфигурации.
  • Новый атрибут DscLocalConfigurationManager определяет блок конфигурации как метаконфигурацию, которая используется для настройки локального диспетчера конфигураций DSC. Этот атрибут ограничивает конфигурацию, допуская только элементы для настройки локального диспетчера конфигураций DSC. Во время обработки эта конфигурация создает файл *.meta.mof, который затем отправляется на соответствующие целевые узлы с помощью командлета Set-DscLocalConfigurationManager.
  • Теперь в Windows PowerShell 5.0 разрешены частичные конфигурации. Доставлять документы конфигурации на узел можно фрагментами. Чтобы узел получил несколько фрагментов документа конфигурации, сначала следует настроить его локальный диспетчер конфигураций для указания ожидаемых фрагментов:
  • В DSC для Windows PowerShell 5.0 появилась возможность межкомпьютерной синхронизации. с помощью встроенных ресурсов WaitFor* (WaitForAll, WaitForAny и WaitForSome) теперь можно указать зависимости между компьютерами во время выполнения конфигурации без внешних оркестраций. Эти ресурсы обеспечивают синхронизацию между узлами с помощью подключений CIM по протоколу WS-Man. Конфигурация может ожидать изменения состояния определенного ресурса на другом компьютере.
  • JEA-администрирование — новое средство обеспечения безопасности при делегировании — использует DSC и ограниченные пространства выполнения Windows PowerShell, чтобы защитить предприятие от потери данных и умышленной или случайной компрометации их сотрудниками. Дополнительные сведения о JEA-администрировании, в том числе сведения о том, где можно скачать ресурс DSC xJEA, см. в этой статье.
  • В модуль PSDesiredStateConfiguration добавлены следующие командлеты:
    • Командлет Get-DscConfigurationStatus получает высокоуровневые сведения о состоянии конфигурации с целевого узла. Вы можете получить состояние последней или всех конфигураций.
    • Командлет Compare-DscConfiguration сравнивает указанную конфигурацию с фактическим состоянием одного или нескольких целевых узлов.
    • Командлет Publish-DscConfiguration копирует MOF-файл на целевой узел без применения конфигурации. Она применяется во время следующей проверки согласованности или при запуске командлета Update-DscConfiguration.
    • Новый командлет Test-DscConfiguration позволяет убедиться, что полученная конфигурация соответствует требуемой. Если фактическая конфигурация соответствует требуемой, возвращается значение True, в противном случае — значение False.
    • Новый командлет Update-DscConfiguration выполняет принудительную обработку конфигурации. Если локальный диспетчер конфигураций находится в режиме опроса, командлет получает конфигурацию с опрашивающего сервера перед ее применением.

Новые функции в интегрированной среде сценариев Windows PowerShell

  • Теперь можно редактировать удаленные сценарии и файлы Windows PowerShell в локальной копии интегрированной среды сценариев Windows PowerShell, выполнив сначала Enter-PSSession для открытия удаленного сеанса на компьютере с нужными файлами, а затем запустив путь PSEdit <и имя файла на удаленном компьютере>. Эта функция упрощает редактирование файлов Windows PowerShell, хранящихся в Windows Server только с основными серверными компонентами, где запуск интегрированной среды сценариев Windows PowerShell невозможен.
  • Теперь командлет Start-Transcript поддерживается в интегрированной среде сценариев Windows PowerShell.
  • Можно отлаживать удаленные сценарии Windows PowerShell в интегрированной среде сценариев.
  • Новая команда меню Прервать все (CTRL+B) служит для переключения в режим отладчика как для локальных, так и для удаленных сценариев.

Новая функция в веб-службах Windows PowerShell (расширение IIS OData для управления)

  • Начиная с Windows PowerShell 5.0, можно создать набор командлетов Windows PowerShell на основе функциональности, предоставляемой заданной конечной точкой OData. Для этого используется командлет Export-ODataEndpointProxy, доступный в новом модуле Microsoft.PowerShell.OdataUtils.

Исправления важных ошибок в Windows PowerShell 5.0

  • Windows PowerShell 5.0 содержит новую реализацию COM, обеспечивающую значительное повышение производительности при работе с COM-объектами.
  • Была значительно повышена производительность при первом заполнении нажатием клавиши TAB в сеансе Windows PowerShell. Время завершения сократилось почти на 500 мс.

Новые функции в Windows PowerShell 4.0

Windows PowerShell 4.0 обеспечивает обратную совместимость. Командлеты, поставщики, модули, оснастки, сценарии, функции и профили, разработанные для Windows PowerShell 3.0 и Windows PowerShell 2.0, обычно работают в Windows PowerShell 4.0 без изменений.

Windows PowerShell 4.0 установлен в Windows 8.1 и Windows Server 2012 R2 по умолчанию. Чтобы установить Windows PowerShell 4.0 в Windows 7 с пакетом обновления 1 (SP1) или Windows Server 2008 R2, скачайте и установите Windows Management Framework 4.0. Перед тем как устанавливать Windows Management Framework 4.0., прочтите сведения о загрузке и убедитесь, что все требования к системе выполнены.

Windows PowerShell 4.0 включает приведенные ниже новые функции.

Новые функции в Windows PowerShell

  • Служба настройки требуемого состояния (DSC) Windows PowerShell является новой системой управления в Windows PowerShell 4.0, которая позволяет развертывать данные конфигурации для программных служб и среды, в которой они выполняются, и управлять ими. Дополнительные сведения о службе настройки требуемого состояния см. в статье Начало работы со службой настройки требуемого состояния Windows PowerShell.
  • Save-Help теперь позволяет сохранять справку по модулям, установленным на удаленных компьютерах. Командлет Save-Help можно использовать для того, чтобы загрузить справку по модулю с подключенного к Интернету клиента (на котором установлены не все модули, для которых требуется справка), а затем скопировать сохраненную справку в удаленную общую папку или на удаленный компьютер без доступа к Интернету.
  • Улучшенный отладчик Windows PowerShell разрешает выполнять отладку рабочих процессов Windows PowerShell, а также сценариев, выполняющихся на удаленных компьютерах. Теперь рабочие процессы Windows PowerShell можно отлаживать на уровне сценария из командной строки Windows PowerShell или интегрированной среды сценариев Windows PowerShell. Сценарии Windows PowerShell, включая рабочие процессы сценариев, теперь можно отлаживать в удаленных сеансах. Сеансы удаленной отладки сохраняются в удаленных сеансах Windows PowerShell, которые отключаются, а позже подключаются.
  • Параметр RunNow для Register-ScheduledJob и Set-ScheduledJob избавляет от необходимости задавать дату и время немедленного начала заданий с помощью параметра Trigger .
  • Invoke-RestMethod и Invoke-WebRequest теперь позволяют задавать все заголовки с помощью параметра Headers. Хотя этот параметр всегда существовал, он являлся одним из нескольких параметров для веб-командлетов, вызывающих исключения или ошибки.
  • Get-Module содержит новый параметр FullyQualifiedName типа ModuleSpecification[]. Параметр FullyQualifiedName Get-Module теперь позволяет указать модуль, используя имя модуля, версию и при необходимости его GUID.
  • Параметр политики выполнения по умолчанию в Windows PowerShell 2012 R2 — RemoteSigned. В Windows 8.1 параметр по умолчанию не изменился.
  • Начиная с Windows PowerShell 4.0, поддерживается вызов метода с использованием динамических имен методов. Можно использовать переменную для хранения имени метода, а затем динамически вызвать метод, вызвав переменную.
  • Задания асинхронных рабочих процессов больше не удаляются по истечении времени ожидания, указанного в общем параметре рабочего процесса PSElapsedTimeoutSec.
  • Новый параметр RepeatIndefinitely добавлен в командлеты New-JobTrigger и Set-JobTrigger. Это устраняет необходимость указания значения TimeSpan.MaxValue для параметра RepetitionDuration в целях постоянного запуска запланированного задания в течение неопределенного периода времени.
  • Параметр Passthru добавлен в командлеты Enable-JobTrigger и Disable-JobTrigger. Параметр Passthru отображает все объекты, созданные или измененные вашей командой.
  • Имена параметров для указания рабочей группы в командлетах Add-Computer и Remove-Computer теперь согласованы. Оба командлета теперь используют параметр WorkgroupName.
  • Добавлен новый общий параметр PipelineVariable. PipelineVariable позволяет сохранить результаты выведенной команды (или части выведенной команды) как переменную, которую можно передать через оставшуюся часть конвейера.
  • Теперь поддерживается фильтрация коллекций с использованием синтаксиса метода. Это означает, что теперь можно фильтровать коллекцию объектов с помощью упрощенного синтаксиса, аналогичного синтаксису where() или Where-Object в формате вызова метода. Ниже представлен пример такого кода: (Get-Process).where({$_.Name -match 'powershell'})
  • Командлет Get-Process содержит новый параметр переключения IncludeUserName.
  • Добавлен новый командлет Get-FileHash, который возвращает хэш файла в одном из нескольких форматов для указанного файла.
  • В Windows PowerShell 4.0, если модуль использует ключ DefaultCommandPrefix в манифесте или если пользователь импортирует модуль с параметром Prefix, свойство ExportedCommands модуля отображает команды в модуле с префиксом. При выполнении команд с использованием синтаксиса moduleName\CommandName имена команд должны содержать префикс.
  • Значение $PSVersionTable.PSVersion обновлено до 4.0.
  • Поведение оператора Where() изменено. Collection.Where('property -match name'), принимающий строковое выражение в формате "Property -CompareOperator Value", больше не поддерживается. Однако оператор Where() принимает строковые выражения в формате блока сценария; эта возможность все еще поддерживается.

Новые функции в интегрированной среде сценариев Windows PowerShell

  • Интегрированная среда сценариев Windows PowerShell поддерживает отладку рабочих процессов и удаленную отладку сценариев Windows PowerShell.
  • Для поставщиков и конфигураций службы настройки требуемого состояния Windows PowerShell добавлена поддержка IntelliSense.

Новые функции в рабочем процессе Windows PowerShell

  • Добавлена поддержка нового общего параметра PipelineVariable в контексте итеративных конвейеров, например тех, которые используются System Center Orchestrator; то есть конвейеры, которые выполняют команды, просто слева направо, а не чередуются с использованием потоковой передачи.
  • Привязка параметров значительно улучшила работу за пределами сценариев заполнения с помощью клавиши TAB, например с помощью команд, которые не существуют в текущем пространстве выполнения.
  • Добавлена поддержка действий настраиваемого контейнера в рабочем процессе Windows PowerShell. Если параметр действия имеет тип Activity либо Activity[] (или является универсальной коллекцией действий), а пользователь предоставил блок сценария в качестве аргумента, то рабочий процесс Windows PowerShell преобразует блок сценария в XAML так же, как при обычной компиляции сценария в рабочий процесс Windows PowerShell.
  • После сбоя рабочий процесс Windows PowerShell автоматически повторно подключается к управляемым узлам.
  • Теперь можно регулировать операторы действий Foreach -Parallel с помощью свойства ThrottleLimit .
  • Общий параметр ErrorAction содержит новое допустимое значение Suspend, эксклюзивное для рабочих процессов.
  • Конечная точка рабочих процессов теперь автоматически закрывается, если отсутствуют активные сеансы, выполняющиеся задания и задания в состоянии ожидания. Эта функция сохраняет ресурсы на компьютере, который действует как сервер рабочих процессов, при соответствии условиям автоматического закрытия.

Новые функции в веб-службах Windows PowerShell

  • В случае возникновения ошибки в веб-службах Windows PowerShell (служба PSWS также называется расширением IIS OData для управления) при выполнении командлета вызывающему объекту возвращаются более подробные сообщения об ошибках. Кроме того, коды ошибок следуют руководствам по кодам ошибок Windows Azure REST API.
  • Конечная точка теперь может определить версию API, а также принудительно использовать конкретную версию API. Каждый раз при возникновении несоответствия между клиентом и сервером ошибки отображаются как на клиенте, так и на сервере.
  • Управление схемой диспетчера упрощено путем автоматического создания значений для всех отсутствующих полей в схеме. Создание происходит в виде полезной точки отсчета, даже если схема диспетчера не существует.
  • Усовершенствована обработка типов в PSWS для поддержки типов, которые используют конструктор, отличный от конструктора по умолчанию, с поведением, аналогичным поведению PSTypeConverter в Windows PowerShell. Это позволяет использовать сложные типы с PSWS.
  • PSWS теперь позволяет расширить связанный экземпляр во время выполнения запроса. Для более крупного двоичного содержимого (например, изображений, аудио или видео) стоимость передачи является значительной, и передачу двоичных данных лучше производить без кодирования. PSWS использует именованные потоки ресурсов для передачи без кодирования. Именованный поток ресурсов — это свойство сущности типа Edm.Stream. Каждый именованный поток ресурсов содержит отдельный универсальный код ресурса для операций GET или UPDATE.
  • Действия OData теперь предоставляют механизм вызова методов, отличных от CRUD (Create, Read, Update и Delete), в ресурсе. Можно вызвать действие, отправив запрос HTTP POST в универсальный код ресурса, который определен для действия. Параметры для действия определены в тексте запроса POST.
  • Для соответствия руководствам Microsoft Azure все URL-адреса должны быть упрощены. Изменение, включенное в Key As Segment, позволяет представлять отдельные ключи в виде сегментов. Обратите внимание, что ссылки, которые используют значения нескольких ключей, как и раньше, требуют значений с разделителями-запятыми в нотации со скобками.
  • До этого выпуска PSWS единственным способом выполнения операций Create, Update или Delete было вызвать Post, Put или Delete в ресурсе верхнего уровня. Новые в этом выпуске PSWS операции содержащегося ресурса позволяют пользователям получать те же результаты, достигая того же ресурса не напрямую, а как если бы эти ресурсы были содержащимися.

Новые функции в Windows PowerShell Web Access

  • В веб-консоли Windows PowerShell Web Access можно отключиться от имеющихся сеансов и подключиться к ним. Кнопка Сохранить в веб-консоли позволяет отключиться от сеанса, не удаляя его, и повторно подключиться к нему в следующий раз.
  • Параметры по умолчанию могут отображаться на одной странице входа. Чтобы отобразить параметры по умолчанию, настройте значения для всех параметров, отображающихся в области Дополнительные параметры подключения на странице входа в файле web.config. Файл web.config можно использовать для настройки всех дополнительных параметров подключения, за исключением второго или дополнительного набора учетных данных.
  • Windows Server 2012 R2 позволяет удаленно управлять правилами авторизации для Windows PowerShell Web Access. Командлеты Add-PswaAuthorizationRule и Test-PswaAuthorizationRule теперь включают параметр Credential, который позволяет администраторам управлять правилами авторизации с удаленного компьютера или в сеансе Windows PowerShell Web Access.
  • Теперь вы можете открыть несколько сеансов Windows PowerShell Web Access в одном сеансе браузера, используя новую вкладку для каждого сеанса. Больше не нужно открывать новый сеанс браузера для подключения к новому сеансу в веб-консоли Windows PowerShell.

Исправления важных ошибок в Windows PowerShell 4.0

  • Get-Counter теперь может возвращать счетчики, содержащие знак апострофа в выпусках Windows на французском языке.
  • Метод GetType теперь можно просматривать в десериализованных объектах.
  • Операторы #Requires теперь позволяют пользователям при необходимости запрашивать права доступа администратора.
  • Командлет Import-Csv теперь пропускает пустые строки.
  • Исправлена проблема, из-за которой интегрированная среда сценариев Windows PowerShell потребляла слишком большой объем памяти при выполнении команды Invoke-WebRequest.
  • Get-Module теперь отображает версии модуля в столбце Version.
  • Remove-Item -Recurse теперь удаляет элементы из вложенных папок, как и ожидается.
  • Свойство UserName добавлено к выходным объектам Get-Process.
  • Командлет Invoke-RestMethod теперь возвращает все доступные результаты.
  • Add-Member теперь влияет на хэш-таблицы, даже если доступ к этим таблицам еще не осуществлялся.
  • Select-Object -Expand больше не вызывает сбой или исключение, если значение свойства равно NULL или пусто.
  • Get-Process теперь может использоваться в конвейере с другими командами, которые получают свойство ComputerName из объектов.
  • ConvertTo-Json и ConvertFrom-Json теперь могут принимать условия, заключенные в двойные кавычки, а сообщения об ошибках теперь могут быть локализованы.
  • Get-Job теперь возвращает все завершенные запланированные задания даже в новых сеансах.
  • Устранены проблемы с подключением и отключением виртуальных жестких дисках с помощью поставщика FileSystem в Windows PowerShell 4.0. Windows PowerShell теперь может отслеживать новые диски при подключении в одном сеансе.
  • Вам больше не нужно явно загружать модули ScheduledJob или Workflow для работы с их типами заданий.
  • Повышена производительность импорта рабочих процессов, определяющих вложенные рабочие процессы.

Новые функции в Windows PowerShell 3.0

Windows PowerShell 3.0 включает приведенные ниже новые функции.

рабочий процесс Windows PowerShell

Рабочие процессы Windows PowerShell привносят возможности Windows Workflow Foundation в Windows PowerShell. Рабочие процессы можно записывать на языке XAML или Windows PowerShell и запускать их так же, как командлеты. Командлет Get-Command получает команды рабочих процессов, а Get-Help получает справку для рабочих процессов.

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

Рабочие процессы также являются переносимыми; их можно экспортировать из XAML-файлов или импортировать в них. Вы можете написать конфигурации настраиваемых сеансов, которые позволяют делегированным или подчиненным пользователям запускать рабочий процесс или действия в рабочем процессе.

Преимущества рабочего процесса Windows PowerShell

  • Автоматизация последовательности длительных задач.
  • Удаленный мониторинг длительно выполняемых задач. Состояние и ход выполнения действий видны в любое время.
  • Управление несколькими компьютерами. Одновременный запуск задач как рабочих процессов на сотнях управляемых узлов. Рабочий процесс Windows PowerShell включает встроенную библиотеку общих параметров управления, например PSComputerName, которые поддерживают сценарии управления несколькими компьютерами.
  • Выполнение одной задачи для сложных процессов. Связанные сценарии, реализующие весь сквозной сценарий в одном рабочем процессе, можно совмещать.
  • Сохраняемость. Рабочий процесс сохраняется (или создается его контрольная точка) в точках, определенных автором, чтобы можно было продолжить рабочий процесс с последней сохраненной задачи (или контрольной точки), а не перезапускать его сначала.
  • Надежность. Автоматическое восстановление после сбоя. Рабочие процессы сохраняются при запланированных и незапланированных перезапусках. Выполнение рабочего процесса можно приостановить, а затем продолжить его с последней точки сохранения. Авторы рабочих процессов могут назначить перезапуск определенных действий в случае сбоя на одном или нескольких управляемых узлах.
  • Возможность отключения, повторного подключения и запуска в отключенных сеансах. Пользователи могут подключаться к серверу рабочих процессов и отключаться от него, не прерывая выполнения рабочих процессов. Можно выйти из системы клиентского компьютера или перезагрузить его и отслеживать выполнение рабочих процессов с другого компьютера, не прерывая выполнения рабочего процесса.
  • Планирование. Задачи рабочего процесса можно планировать как любой командлет или сценарий Windows PowerShell.
  • Регулирование рабочих процессов и подключений. Выполнение рабочих процессов и подключений к узлам можно регулировать, включая масштабирование и сценарии высокой доступности.

Windows PowerShell Web Access

Windows PowerShell Web Access — это компонент Windows Server 2012, который позволяет выполнять команды и сценарии Windows PowerShell в веб-консоли. Устройства, использующие веб-консоль, не требуют Windows PowerShell, программного обеспечения для удаленного управления или установки подключаемых модулей браузера. Все, что требуется, — это правильно настроенный шлюз Windows PowerShell Web Access и браузер на клиентском устройстве, поддерживающий JavaScript и принимающий файлы cookie.

Дополнительные сведения см. в статье Развертывание Windows PowerShell Web Access.

Новые функции интегрированной среды сценариев Windows PowerShell

В версии Windows PowerShell 3.0 в интегрированной среде сценариев Windows PowerShell появилось много новых возможностей, включая IntelliSense, окно Show-Command, объединенную область консоли, фрагменты кода, отслеживание парности фигурных скобок, разделы, которые можно развернуть или свернуть, автосохранение, список последних элементов, копирование отформатированного текста в командную строку, блочное копирование и полную поддержку написания рабочих процессов для скриптов Windows PowerShell. Дополнительные сведения см. в статье Об интегрированной среде сценариев Windows PowerShell.

Поддержка Microsoft .NET Framework 4

Служба Windows PowerShell создана на основе среды CLR 4.0. Создатели командлетов, сценариев и рабочих процессов могут использовать новые классы Microsoft .NET Framework 4 в Windows PowerShell с функциями, в которые входит совместимость и развертывание приложений, Managed Extensibility Framework, параллельное вычисление, сети, Windows Communication Foundation и Windows Workflow Foundation.

Поддержка среды предустановки Windows

Windows PowerShell 3.0 является дополнительным компонентом среды предустановки Windows (Windows PE) 4.0 для Windows 8. Windows PE — это минимальная операционная система, которая запускает компьютер без операционной системы и подготавливает его к установке Windows. Windows PE можно использовать для секционирования и форматирования жестких дисков, копирования образов дисков на компьютер и запуска установки Windows из общей сетевой папки. Windows PowerShell 3.0 можно использовать в Windows PE для управления развертыванием, диагностикой и сценариями восстановления.

Отключенные сеансы

Начиная с Windows PowerShell 3.0 постоянные управляемые пользователем сеансы (PSSessions), создаваемые с помощью командлета New-PSSession, сохраняются на удаленном компьютере. Они больше не зависят от сеанса, в котором были созданы.

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

Параметр ComputerName командлета Get-PSSession теперь позволяет получить все сеансы пользователя, которые подключаются к компьютеру, даже если они запущены в другом сеансе на другом компьютере. Можно повторно подключиться к сеансам, получить результаты команд, запустить новые команды, а затем отключиться от сеанса.

Добавлены новые командлеты для поддержки функции отключенных сеансов, в том числе Disconnect-PSSession, Connect-PSSession и Receive-PSSession, а также новые параметры в командлетах, управляющих сеансами PSSession, например параметр InDisconnectedSession командлета Invoke-Command.

Функция отключенных сеансов поддерживается только в том случае, если компьютеры на исходной (client) и завершающей (server) точках подключения запущены под управлением Windows PowerShell 3.0.

Надежное подключение сеансов

Windows PowerShell 3.0 обнаруживает неожиданные потери подключения между клиентом и сервером и пытается повторно установить подключение и продолжить выполнение автоматически. Если подключение "клиент-сервер" невозможно установить повторно в отведенный период времени, пользователь получает уведомление и выполняется отключение сеанса. Во время попытки повторного подключения Windows PowerShell постоянно предоставляет отзывы пользователю.

Если отключенный сеанс был запущен с помощью InvokeCommand, Windows PowerShell создает задание для отключенного сеанса, чтобы упростить повторное подключение и возобновление выполнения.

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

Система обновляемой справки

Теперь можно скачать обновленные файлы справки для командлетов в модулях. Командлет Update-Help идентифицирует новейшие файлы справки, скачивает их из Интернета, распаковывает, проверяет и устанавливает в каталог для соответствующего языка модуля.

Чтобы использовать обновленные файлы справки, просто введите Get-Help. Перезапускать Windows или Windows PowerShell не нужно. Чтобы обновить файлы справки для модулей в каталоге $pshome, запустите Windows PowerShell с параметром "Запуск от имени администратора".

Чтобы обеспечить поддержку для пользователей без доступа к Интернету и пользователей за брандмауэрами, новый командлет Save-Help скачивает файлы справки в каталог файловой системы, например в общую папку. После этого пользователи могут использовать командлет Update-Help для получения обновленных файлов справки из общей папки.

Командлет Update-Help можно использовать для обновления файлов справки для всех или конкретных модулей для всех поддерживаемых языков и региональных параметров пользовательского интерфейса. Можно даже поместить команду Update-Help в ваш профиль Windows PowerShell. По умолчанию Windows PowerShell скачивает файлы справки для модуля не чаще раза в день.

В модули Windows 8 и Windows Server 2012 не входят файлы справки. Чтобы скачать последние файлы справки, введите Update-Help. Для получения дополнительных сведений введите Get-Help (без параметров) или см. статью about_Updatable_Help.

Если файлы справки для командлета не установлены на компьютере, командлет Get-Help теперь показывает автоматически созданную справку. В автоматически созданную справку входит синтаксис команды и инструкции по использованию командлета Update-Help для скачивания файлов справки.

Любой создатель модуля может поддержать обновляемую справку для модуля. Файлы справки можно включить в модуль и использовать обновляемую справку для их обновления, или же можно пропустить файлы справки и использовать обновляемую справку для их установки. Дополнительные сведения о поддержке обновляемой справки см. в этой статье.

Усовершенствованная справка в Интернете

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

Чтобы получить интерактивную справку для любого командлета Windows PowerShell, введите:

Get-Help <cmdlet-name> -Online

Windows PowerShell откроет интернет-версию раздела справки в браузере по умолчанию.

Функция Get-Help -Online в Windows PowerShell 3.0 теперь предоставляет еще больше возможностей, так как она работает, даже если файлы справки для командлета не установлены на компьютере. Функция Get-Help -Online получает универсальный код ресурса для раздела справки в Интернете из свойства HelpUri командлетов и дополнительных функций.

PS C:\>(Get-Command Get-ScheduledJob).HelpUri
https://go.microsoft.com/fwlink/?LinkID=223923

Начиная с Windows PowerShell 3.0, создатели командлетов на C# могут заполнить свойство HelpUri, создав атрибут HelpUri в классе командлета. Авторы дополнительных функций могут определить свойство HelpUri в атрибуте CmdletBinding. Значение свойства HelpUri должно начинаться с http или https.

Можно также включить значение HelpUri в первую связанную ссылку файла справки по командлету на основе XML или директиву .Link справки на основе комментариев в функцию.

Дополнительные сведения о поддержке справки в Интернете см. в разделе Поддержка справки в Интернете.

Интеграция CIM

Windows PowerShell 3.0 включает поддержку модели CIM, которая предоставляет стандартные определения для информации управления для систем, сетей, приложений и служб, позволяя им обмениваться сведениями об управлении между разнородными системами. Поддержка CIM в Windows PowerShell 3.0, включая возможность создавать командлеты Windows PowerShell на основе новых или существующих классов CIM, команды на основе XML-файлов определений командлетов, поддержка CIM .NET Framework. API, командлеты управления CIM и поставщики WMI 2.0.

Файлы конфигурации сеанса

Начиная с Windows PowerShell 3.0, можно разработать настраиваемую конфигурацию сеанса с помощью файла. Файл конфигурации нового сеанса позволяет определить среду сеансов, которые используют конфигурацию сеансов, включая модули, сценарии и файлы форматирования, загруженные в сеансы, командлеты и элементы языка, которые могут использовать пользователи, модули и сценарии, которые они могут запускать, и переменные, которые они могут просматривать.

Можно создать сеанс, в котором пользователи могут только выполнять командлеты из одного конкретного модуля, или сеанс, в котором пользователи получат весь язык, доступ ко всем модулям и доступ к сценариям, которые выполняют дополнительные задачи.

В предыдущих версиях Windows PowerShell функции контроля на этом уровне были доступны только тем, кто мог написать программу на C# или сложный сценарий запуска. Теперь любой участник группы администраторов на компьютере может настроить конфигурацию сеанса с помощью файла конфигурации.

Чтобы создать файл конфигурации сеанса, используйте командлет New-PSSessionConfigurationFile. Чтобы применить файл конфигурации сеанса к конфигурации сеанса, используйте командлеты Register-PSSessionConfiguration или Set-PSSessionConfiguration.

Дополнительные сведения см. в статье о файлах конфигурации сеансов и разделе справки по New-PSSessionConfigurationFile.

Интеграция запланированных заданий и планировщика задач

Теперь планировать фоновые задания Windows PowerShell и управлять ими можно в Windows PowerShell или в планировщике заданий.

Запланированные задания Windows PowerShell являются полезным гибридом фоновых заданий Windows PowerShell и задач планировщика задач.

Как и фоновые задания Windows PowerShell, запланированные задания выполняются асинхронно в фоновом режиме. Экземплярами завершенных запланированных заданий можно управлять с помощью командлетов заданий, таких как Start-Job и Get-Job.

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

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

Дополнительные сведения о запланированных заданиях см. в статье about_Scheduled_Jobs.

Усовершенствования языка Windows PowerShell

Windows PowerShell 3.0 включает много функций, предназначенных для упрощения языка, его использования и предотвращения распространенных ошибок. В усовершенствования входит перечисление свойств, свойства счетчика и длины в скалярных объектах, новые операторы перенаправления, модификатор области $Using, автоматическая переменная PSItem, гибкое форматирование сценариев, атрибуты переменных, упрощенные аргументы атрибутов, имена числовых команд, оператор Stop-Parsing, усовершенствованный сплаттинг массивов, новые двоичные операторы, упорядоченные словари, приведение PSCustomObject и усовершенствованная справка на основе комментариев.

Новые основные командлеты

В установку Windows PowerShell добавлены новые командлеты, включая командлеты для управления запланированными заданиями, отключенными сеансами, интеграцией CIM и системой обновляемой справки.

  • CimCmdlets
    • Get-CimAssociatedInstance
    • Get-CimClass
    • Get-CimInstance
    • Get-CimSession
    • Invoke-CimMethod
    • New-CimInstance
    • New-CimSession
    • New-CimSessionOption
    • Register-CimIndicationEvent
    • Remove-CimInstance
    • Remove-CimSession
    • Set-CimInstance
  • Microsoft.PowerShell.Core
    • Connect-PSSession
    • Disconnect-PSSession
    • New-PSSessionConfigurationFile
    • New-PSTransportOption
    • Receive-PSSession
    • Resume-Job
    • Save-Help
    • Suspend-Job
    • Test-PSSessionConfigurationFile
    • Update-Help
  • Microsoft.PowerShell.Diagnostics
    • New-WinEvent
  • Microsoft.PowerShell.Management
    • Get-ControlPanelItem
    • Rename-Computer
    • Show-ControlPanelItem
  • Microsoft.PowerShell.Utility
    • ConvertFrom-Json
    • ConvertTo-Json
    • Get-TypeData
    • Invoke-RestMethod
    • Invoke-WebRequest
    • Remove-TypeData
    • Show-Command
    • Unblock-File
  • PSScheduledJob
    • Add-JobTrigger
    • Disable-JobTrigger
    • Disable-ScheduledJob
    • Enable-JobTrigger
    • Enable-ScheduledJob
    • Get-JobTrigger
    • Get-ScheduledJob
    • Get-ScheduledJobOption
    • New-JobTrigger
    • New-ScheduledJobOption
    • Register-ScheduledJob
    • Set-JobTrigger
    • Set-ScheduledJob
    • Set-ScheduledJobOption
    • Unregister-ScheduledJob
  • PSWorkflow
    • New-PSWorkflowExecutionOption
    • New-PSWorkflowSession
  • PSWorkflowUtility
    • Invoke-AsWorkflow
  • ISE
    • Get-IseSnippet
    • Import-IseSnippet
    • New-IseSnippet

Усовершенствования существующих основных командлетов и поставщиков

Windows PowerShell 3.0 включает новые функции для существующих командлетов, в том числе упрощенный синтаксис и новые параметры для следующих командлетов: командлеты компьютера, командлеты CSV, Get-ChildItem, Get-Command, Get-Content, Get-History, Measure-Object, командлеты безопасности, командлеты Select-Object, Select-String, Split-Path, Start-Process, Tee-Object, Test-Connection, Add-Member и WMI.

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

Удаленный импорт и обнаружение модулей

Windows PowerShell 3.0 расширяет возможности обнаружения модулей, импорта и неявного удаленного взаимодействия на удаленных компьютерах. Командлеты Module получают модули на удаленных компьютерах и импортируют их на удаленный или локальный компьютер с помощью Windows PowerShell удаленного взаимодействия. Поддержка нового сеанса CIM позволяет использовать CIM и WMI для управления компьютерами, запущенными не под управлением Windows, с помощью импорта команд на локальный компьютер, который неявно выполняется на удаленном компьютере.

Дополнительные сведения см. в разделах справки по командлетам Get-Module и Import-Module.

Усовершенствованное заполнение нажатием клавиши TAB

Заполнение нажатием клавиши TAB в консоли Windows PowerShell теперь заполняет имена командлетов, параметров, значений параметров, перечислений, типов .NET Framework, COM-объектов, скрытых каталогов и многого другого. Функция заполнения нажатием клавиши TAB полностью переписана на основе нового средства синтаксического анализа и дерева абстрактного синтаксиса для поддержки большего количества сценариев, включая деревья анализа внутри памяти и заполнение нажатием клавиши TAB в середине строки.

Автоматическая загрузка модуля

Командлет Get-Command теперь получает все командлеты и функции из всех модулей, установленных на компьютере, даже если модуль не импортируется в текущий сеанс.

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

Автоматический импорт модулей запускается с помощью командлета в команде , запускаемого Get-Command для командлета без подстановочных знаков или для Get-Help командлета без подстановочных знаков.

Вы можете включить, отключить и настроить автоматический импорт модулей с помощью переменной предпочтения $PSModuleAutoLoadingPreference .

Дополнительные сведения см. в статьях о Модулях, привилегированных переменных и в разделах справки по командлетам Get-Command и Import-Module.

Улучшение работы с модулями

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

  1. Ведение журнала модуля для индивидуальных модулей (LogPipelineExecutionDetails) и новый параметр групповой политики "Включить ведение журнала модуля".
  2. Расширенные объекты модуля, предоставляющие значения из манифеста модуля.
  3. Новое свойство ExportedCommands модулей, включая вложенные модули, которые совмещают команды всех типов.
  4. Усовершенствованное обнаружение доступных модулей (не импортированных), включая разрешение параметров Path и ListAvailable в одной команде.
  5. Новый ключ DefaultCommandPrefix в манифестах модуля, предотвращающий конфликты имен без изменения кода модуля.
  6. Усовершенствованные требования модуля, включая полные обязательные модули с версией и GUID, а также автоматический импорт обязательных модулей
  7. Бесперебойная, упрощенная работа командлета New-ModuleManifest.
  8. Новый параметр Module для #Requires.
  9. Усовершенствованный командлет Import-Module с обоими параметрами MinimumVersion и RequiredVersion.

Упрощенное обнаружение команд

Больше не нужно импортировать все модули для обнаружения команд, доступных для сеанса. В Windows PowerShell 3.0 командлет Get-Command получает все команды из всех установленных модулей. При использовании команды модуль, экспортирующий команду, автоматически импортируется в сеанс.

Новый командлет Show-Command предназначен для начинающих. Команды можно искать в окне. Вы можете просматривать все команды или фильтровать их по модулю, использовать текстовые поля и раскрывающиеся списки для создания допустимой команды, а затем копировать или запускать команду в пределах одного окна.

Улучшенная поддержка ведения журнала, диагностики и групповой политики

Windows PowerShell 3.0 усовершенствует поддержку ведения журнала и трассировки для команд и модулей с поддержкой журналов трассировки событий в Windows, редактируемого свойства LogPipelineExecutionDetails модулей и параметра групповой политики "Включить ведение журнала модуля". Теперь вы можете получить значения параметров из сведений журнала, отобразив свойства журнала.

Усовершенствованное форматирование и выходные данные

Новые усовершенствования форматирования и выходных данных повышают эффективность всех пользователей Windows PowerShell. В усовершенствования входит перенаправление выходных данных для всех потоков, улучшенный командлет Update-Type, который добавляет типы динамически, без файлов FORMAT.PS1XML, перенос по словам в выходных данных, свойства форматирования пользовательских объектов по умолчанию, тип PSCustomObject, улучшенное форматирование для объектов WMI и разнородных объектов, а также поддержка обнаружения перегрузок методов.

Усовершенствованное взаимодействие с узлом консоли

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

Новые API командлетов и размещения

Новые API командлетов и API размещения включают открытые API дерева расширенного синтаксиса и API для подкачки конвейеров, вложенных конвейеров, заполнения пулов пространства выполнения нажатием клавиши TAB, Windows RT, атрибута устаревшего командлета и свойств Verb и Noun объекта FunctionInfo.

Повышение производительности

Значительно увеличена производительность в Windows PowerShell благодаря новому средству анализа языка, созданному на основе Dynamic Runtime Language (DLR: язык динамической среды выполнения) в .NET Framework 4, вместе с компиляцией сценариев среды выполнения, повышением надежности подсистемы и изменением алгоритма Get-ChildItem, который увеличивает производительность, особенно при поиске общих сетевых папок.

Поддержка запуска от имени и общего узла

Windows PowerShell 3.0 включает поддержку функций запуска от имени и общего узла.

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

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

Улучшения обработки специальных символов

Чтобы улучшить возможность интерпретации и правильной обработки специальных символов в Windows PowerShell 3.0, параметр LiteralPath, который обрабатывает специальные символы в путях, допустим практически во всех командлетах с параметром Path, включая новые командлеты Update-Help и Save-Help. Средство анализа также включает специальную логику для улучшения обработки обратных апострофов (`) и квадратных скобок в именах и путях файлов.

См. также: