Поделиться через


Что нового в Windows PowerShell 5.0

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

Windows PowerShell 5.0 поддерживает обратную совместимость. Cmdlet, провайдеры, модули, snap-in, скрипты, функции и профили, разработанные для 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 Enterprise или Windows 8.1 Pro, скачайте и установите Windows Management Framework 5.0. Обязательно ознакомьтесь с данными загрузки и выполните все системные требования перед установкой Windows Management Framework 5.0.

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

Обновления Windows PowerShell 4.0 в ноябре 2014 года (KB 3000850)

Многие обновления и улучшения конфигурации желаемого состояния Windows PowerShell (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.

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

  • Новые cmdlets в модуле PSDesiredStateConfiguration

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

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

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

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

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

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

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

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

    • Ресурс Пакета
      • Больше не устанавливает неправильный пакет (ни из локальных, ни из веб-источников).
      • Теперь поддерживает HTTPS.
    • Теперь в ресурсе пакета есть поддержка HTTPS.
    • Архивный ресурс теперь поддерживает идентификационные данные.

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

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

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

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

    • Новый Write-Information cmdlet, который позволяет указать, как 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 был добавлен новый cmdlet ConvertFrom-String. ConvertFrom-String позволяет извлекать и разбирать структурированные объекты из содержимого текстовых строк. Для получения дополнительной информации см. ConvertFrom-String.

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

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

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

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

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

  • Функции New-Item, Redele-Item и Get-ChildItem были улучшены для поддержки создания и управления символическими ссылками. Параметр -ItemType для New-Item принимает новое значение — SymbolicLink. Теперь можно создавать символические ссылки в одной строке, запуская New-Item cmdlet.

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

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

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

  • Новая детальная функция трассировки скриптов позволяет обеспечить детальное отслеживание и анализ использования скриптов Windows PowerShell на системе. После активации подробной трассировки скриптов Windows PowerShell регистрирует все блоки скриптов в журнал событий Event Tracing for Windows (ETW), Microsoft-Windows-PowerShell/Operational.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Для задач Windows PowerShell добавлено новое состояние — AtBreakpoint. Состояние AtBreakpoint применяется, когда задание выполняет скрипт с установленными точками остановки, и скрипт достиг точки остановки. Когда задание останавливается на точке отладки, нужно отладить задание, запустив команду Debug-Job.

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

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

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

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

  • Новый cmdlet 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 ISE.

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

  • Параметр FullyQualifiedName был добавлен для Import-Module и Remove-Module cmdlet, чтобы поддерживать хранение нескольких версий одного модуля.

  • Save-Help, Update-Help, Import-PSSession, Export-PSSession и Get-Command имеют новый параметр FullQualifiedModule типа 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 анализирует корневой модуль указанного модуля, ища классы, содержащие атрибут DscResources. Теперь можно использовать классы для определения ресурсов DSC, при этом не требуется ни файл MOF, ни подпапка DSCResource в папке модуля. Файл модуля Windows PowerShell может содержать несколько классов ресурсов DSC.
  • Новый параметр ThrottleLimit был добавлен к следующим командорам в модуле PSDesiredStateConfiguration. Добавьте параметр ThrottleLimit, чтобы указать количество целевых компьютеров или устройств, на которых команда должна работать одновременно.
    • Get-DscConfiguration
    • Get-DscConfigurationStatus
    • Get-DscLocalConfigurationManager
    • Restore-DscConfiguration
    • Test-DscConfiguration
    • Compare-DscConfiguration
    • Publish-DscConfiguration
    • Set-DscLocalConfigurationManager
    • Start-DscConfiguration
    • Update-DscConfiguration
  • При централизованном отчёте об ошибках DSC богатая информация об ошибках не только записывается в журнал событий, но и может быть отправлена в центральное место для дальнейшего анализа. Вы можете использовать этот центральный адрес для хранения ошибок настройки DSC, которые произошли на любом сервере в их среде. После того как сервер отчётов определен в мета-конфигурации, все ошибки отправляются на сервер отчетов и затем хранятся в базе данных. Эту функцию можно настроить независимо от того, направлен ли целевой узел на получение конфигураций с pull server.
  • Улучшения Windows PowerShell ISE упрощают создание ресурсов DSC. Теперь вы можете сделать следующее.
    • Перечислите все ресурсы DSC внутри блока конфигурации или узла , введя Ctrl+Пробел на пустой строке внутри блока.
    • Автоматическое завершение по свойствам ресурса типа перечисления .
    • Автоматическое завершение свойства DSC-ресурсов DependsOn , основанное на других экземплярах ресурсов в конфигурации.
    • Улучшено завершение значений свойств ресурсов вкладкой.
  • Пользователь теперь может запускать ресурс под заданным набором учетных данных, добавив атрибут PSDscRunAsCredential в блок Node. Например, PSDscRunAsCredential = Get-Credential Contoso\DscUser. Эта функция полезна для создания конфигураций, которые запускают Windows Installer и исполняемые установщики, доступа к улью реестра пользователей или выполняют другие задачи вне текущего пользовательского контекста.
  • Добавлена поддержка 32-битного (на основе x86) для ключевого слова Configuration .
  • Windows PowerShell теперь поддерживает пользовательскую помощь для DSC-конфигураций, определяемую добавлением [CmdletBinding()] к сгенерированной функции конфигурации.
  • Новый атрибут DscLocalConfigurationManager назначает блок конфигурации как мета-конфигурацию, которая используется для настройки DSC Local Configuration Manager. Этот атрибут ограничивает конфигурацию только элементами, которые настраивают DSC Local Configuration Manager. Во время обработки эта конфигурация генерирует файл *.meta.mof, который затем отправляется соответствующим целевых узлам с помощью Set-DscLocalConfigurationManager cmdlet.
  • Частичные конфигурации теперь разрешены в Windows PowerShell 5.0. Вы можете доставлять конфигурационные документы узлу фрагментами. Чтобы узел получил несколько фрагментов конфигурационного документа, локальный менеджер конфигурации должен быть сначала настроен на указание ожидаемых фрагментов
  • Синхронизация между компьютерами — новинка в DSC в Windows PowerShell 5.0. используя встроенные ресурсы WaitFor* (WaitForAll, WaitForAny и WaitForSome), теперь можно задавать зависимости между компьютерами во время выполнения конфигурации без внешних оркестровок. Эти ресурсы обеспечивают синхронизацию между узлами с помощью CIM-соединений по протоколу WS-Man. Конфигурация может подождать, пока изменение конкретного состояния ресурса другого компьютера.
  • Just Enough Administration (JEA), новая функция безопасности делегирования, использует ограничения DSC и Windows PowerShell, чтобы защитить предприятия от потери данных или компрометации со стороны сотрудников, будь то намеренная или непреднамеренная. Для получения дополнительной информации о JEA, включая место скачивания ресурса xJEA DSC, смотрите раздел Just Enough Administration.
  • В модуль PSDesiredStateConfiguration добавлены следующие новые cmdlets.
    • Новый Get-DscConfigurationStatus-cmdlet получает высокоуровневую информацию о статусе конфигурации от целевого узла. Вы можете получить статус последней или всех конфигураций.
    • Новый Compare-DscConfiguration cmdlet сравнивает заданную конфигурацию с фактическим состоянием одного или нескольких целевых узлов.
    • Новый Publish-DscConfiguration cmdlet копирует конфигурационный файл MOF в целевую ноду, но не применяет конфигурацию. Настройка применяется во время следующего прохода согласованности или при запуске Update-DscConfiguration cmdlet.
    • Новый cmdlet Test-DscConfiguration позволяет проверить, что полученная конфигурация соответствует желаемой, возвращая либо True, если конфигурация совпадает с нужной, либо False, если настоящая конфигурация не совпадает с нужной.
    • Новый cmdlet Update-DscConfiguration заставляет обработать конфигурацию. Если Local Configuration Manager работает в режиме pull, cmdlet получает конфигурацию с pull-сервера до её применения.

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

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

Новые функции в Windows PowerShell Web Services (Management OData IIS Extension)

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

Заметные исправления ошибок в Windows PowerShell 5.0

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

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

Windows PowerShell 4.0 поддерживает обратную совместимость. Cmdlet, провайдеры, модули, snap-in, скрипты, функции и профили, разработанные для 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 с SP1 или Windows Server 2008 R2, скачайте и установите Windows Management Framework 4.0. Обязательно ознакомьтесь с деталями загрузки и выполните все системные требования перед установкой Windows Management Framework 4.0.

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

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

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

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

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

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

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

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

  • Когда возникает ошибка в веб-сервисах Windows PowerShell (PSWS, также называемом Management OData IIS Extension), во время работы cmdlet вызывающему возвращаются более подробные сообщения об ошибке. Кроме того, коды ошибок соответствуют рекомендациям ошибок Windows Azure REST API.
  • Конечная точка теперь может определять версию API, а также обеспечивать использование конкретной версии API. Всякий раз, когда между клиентом и сервером возникают несоответствия версий, ошибки отображаются как клиенту, так и серверу.
  • Управление схемой диспетчеризации упрощено за счёт автоматической генерации значений для любых отсутствующих полей в схеме. Генерация происходит как полезная отправная точка, даже если схема диспетчеризации отсутствует.
  • Обработка типов в PSWS была улучшена для поддержки типов, использующих другой конструктор, отличный от стандартного конструктора, работая аналогично PSTypeConverter в Windows PowerShell. Это позволяет использовать сложные типы с PSWS.
  • PSWS теперь позволяет расширять связанный экземпляр во время выполнения запроса. Для больших бинарных материалов (таких как изображения, аудио или видео) стоимость передачи значительна, и лучше передавать бинарные данные без кодирования. PSWS использует именованные потоки ресурсов для передачи без кодирования. Названный поток ресурсов является свойством сущности типа Edm.Stream . Каждый именованный поток ресурсов имеет отдельный URI для операций GET или UPDATE.
  • Действия OData теперь предоставляют механизм для вызова не-CRUD (Создание, Чтение, Обновление и Удаление) методов на ресурсе. Вы можете вызвать действие, отправив HTTP-POST запрос на URI, определённый для этого действия. Параметры действия определены в теле запроса POST.
  • Чтобы соответствовать требованиям Windows 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. Cmdlets Add-PswaAuthorizationRule и Test-PswaAuthorizationRule теперь включают параметр учетных данных, который позволяет администраторам управлять правилами авторизации с удалённого компьютера или в сессии Windows PowerShell Web Access.
  • Теперь вы можете провести несколько сессий Windows PowerShell Web Access в одной сессии браузера, используя новую вкладку браузера для каждой сессии. Вам больше не нужно открывать новую сессию браузера, чтобы подключиться к новой сессии в веб-консоли Windows PowerShell.

Заметные исправления ошибок в Windows PowerShell 4.0

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

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

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

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

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

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

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

Ниже приведены преимущества рабочего процесса Windows PowerShell

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

Windows PowerShell Web Access

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

Для получения дополнительной информации см. раздел «Развернуть Windows PowerShell Web Access».

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

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

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

Windows PowerShell построен на базе Common Language Runtime 4.0. Авторы cmdlet, скриптов и рабочих процессов могут использовать новые классы Microsoft .NET Framework 4 в Windows PowerShell с такими функциями, как совместимость и развертывание приложений, управляемый фреймворк расширения, параллельные вычисления, сети, 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"), создаваемые с помощью cmdlet New-PSSession, сохраняются на удалёном компьютере. Они больше не зависят от сессии, в которой были созданы.

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

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

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

Функция «Отключённые сессии» поддерживается только тогда, когда компьютеры на исходном («клиентском») и завершающем («серверном») конце соединения работают под управлением Windows PowerShell 3.0.

Надёжная связь сессий

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

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

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

Обновленная система помощи

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

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

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

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

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

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

Любой автор модуля может поддержать Updatable Help для своего модуля. Вы можете добавить файлы помощи в модуль и использовать Updatable Help для их обновления или опустить файлы помощи и использовать Updatable Help для их установки. Для получения дополнительной информации о поддержке Updatable Help см. раздел «Поддержка Updatable Help».

Расширенная онлайн-помощь

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

Чтобы получить онлайн-помощь по любому cmdlet Windows PowerShell, введите:

Get-Help <cmdlet-name> -Online

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

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

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

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

Вы также можете включить значение HelpUri в первую связанную ссылку файла помощи cmdlet на основе XML или в . Ссылка на помощь на основе комментариев в функции.

Для получения дополнительной информации о поддержке онлайн-помощи смотрите раздел «Поддержка онлайн-помощи».

Интеграция с CIM

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

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

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

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

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

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

Для получения дополнительной информации см. about_Session_Configuration_Files и New-PSSessionConfigurationFile.

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

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

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

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

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

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

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

Улучшения языка Windows PowerShell

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

Новые основные командования

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

  • 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
    • Переименовать-Компьютер
    • 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 включает новые функции для существующих cmdlet, включая упрощённый синтаксис, а также новые параметры для следующих cmdlet: Computer cmdlet, CSV cmdlet, Get-ChildItem, Get-Command, Get-Content, Get-History, Measure-Object, Security cmledets, Select-Object, Select-String, Split-Path, Start-Process, Tee-Object, Test-Connection, Add-Member и WMI-cmdlet.

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

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

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

Для получения дополнительной информации смотрите в разделах помощи по Get-Module и Import-Module cmdlet.

Расширенное завершение вкладок

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

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

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

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

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

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

Для получения дополнительной информации смотрите about_Modules, about_Preference_Variables и темы помощи для Get-Command cmdlets Import-Module .

Улучшение опыта в модулях

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

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

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

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

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

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

Windows PowerShell 3.0 улучшает поддержку логирования и трассировки команд и модулей, поддерживая трассировку событий в логах Windows (ETW), редактируемое свойство модулей LogPipelineExecutionDetails и групповую политику «Включить регистрацию модулей». Теперь вы можете получить значения параметров из деталей лога, отобразив свойства логарифма.

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

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

Улучшенный опыт хоста консоли

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

Новые cmdlet и API хостинга

Новые API Cmdlet и Hosting API включают публичные API расширенного синтаксического дерева (AST), а также API для пейджинга конвейеров, вложенных конвейеров, завершения вкладок пулов пространства runspace, Windows RT, атрибута Obsolete cmdlet и свойств Verb и Noun объекта FunctionInfo.

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

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

Поддержка RunAs и совместного хоста

Windows PowerShell 3.0 поддерживает функции RunAs и Shared Host.

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

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

Улучшения управления специальными персонажами

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

См. также