Windows PowerShell — это новая командная оболочка Windows, разработанная в первую очередь для системных администраторов. Оболочка Windows PowerShell включает интерактивную командную строку и среду исполнения сценариев, которые можно использовать вместе или по отдельности. Оболочка Windows PowerShell разработана на основе среды CLR и платформы .NET Framework, принимает и возвращает объекты .NET Framework.

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

В этом разделе содержится описание следующих элементов Windows PowerShell: языка, команд (они называются «командлетами»), поставщиков и использования объектов.

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

Windows PowerShell обладает следующими отличительными возможностями:

Windows PowerShell работает с широким набором продуктов Майкрософт, в том числе Microsoft Forefront Protection 2010 for Exchange Server (FPE).

Windows PowerShell — это инструмент, который можно использовать вместе с графическим пользовательским интерфейсом и любыми созданными сценариями VBScript. Windows PowerShell дополняет VBScript и другие технологии управления. Можно использовать Windows PowerShell вместо Консоль администрирования Forefront Protection 2010 for Exchange Server, однако удобнее всего использовать эту оболочку для повторяющихся задач.

Windows PowerShell включает полную интерактивную среду. Когда пользователь вводит в командной строке команду, она обрабатывается и вывод отображается в окне оболочки. Выходные данные можно отправить в файл или на принтер. Кроме того, с помощью оператора конвейерной обработки (|) их можно отправить другой команде.

Командлеты

В Windows PowerShell реализована новая концепция командлетов — простых узкоспециализированных средств командной строки, встроенных в оболочку. Командлеты можно использовать и по отдельности, однако по-настоящему их достоинства проявляются тогда, когда эти простые средства используются в комбинации друг с другом для решения сложных задач. В Windows PowerShell содержится более 100 основных командлетов. Около 80 командлетов используются для FPE.

Командлет — это команда Windows PowerShell, предназначенная для работы с объектами и выполняющая единственную функцию. Командлеты можно идентифицировать по формату имени — глаголу и существительному, разделенным дефисом (-), например Get-Help, Set-FseSignatureUpdate и Set-FseRealtimeScan.

Примечание.
Заглавные буквы добавлены в синтаксис для упрощения чтения, но оболочка Windows PowerShell не учитывает регистр.

В Windows PowerShell большинство командлетов выполняют какую-либо одну простую функцию. Например, командлеты "get" только получают данные, а командлеты "set" только задают или изменяют данные.

Объекты

Хотя на первый взгляд это не очевидно, при работе с оболочкой Windows PowerShell на самом деле идет работа с объектами .NET. По мере накопления опыта достоинства обработки объектов станут для вас более очевидными, и вы начнете даже думать «объектами».

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

Например, при возврате службы в Windows PowerShell на самом деле возвращается объект, представляющий соответствующую службу. При просмотре сведений о службе отображаются свойства объекта-службы. При запуске службы используется метод объекта службы.

Все объекты одного типа имеют одни и те же свойства и методы, однако значения свойств каждого экземпляра объекта могут быть разными. Например, каждый объект-служба имеет свойства Name и Status. Однако имя и статус одной службы могут отличаться от имени и статуса любой другой службы.

Можно использовать оператор конвейера (|) для передачи результатов одного командлета (указанного слева от оператора) другому командлету (указанному справа от оператора). Чтобы узнать тип объекта, получаемого командлетом, используйте командлет Get-Member, который получает сведения об объектах или семействах объектов. Для отправки результатов команды Get командлету -Member используйте конвейерный оператор (|). Например, следующая команда передает объекты, полученные командой Get-Service, команде Get-Member.

  Копирование кода
Get-Service | Get-Member

В данном случае возвращается информация об объекте службы:

  Копирование кода
	 TypeName: System.ServiceProcess.ServiceController
  Копирование кода
Name					MemberType	Definition
----					 ----------   ----------
Name					AliasProperty Name = ServiceName
add_Disposed			Method		System.Void add_Disposed(EventHandler value)
Close					 Method		System.Void Close()
Continue				Method		System.Void Continue()
...

Чтобы узнать значения всех свойств конкретного объекта, нужно передать результат выполнения команды Get команде Format-List или Format-Table с помощью оператора конвейерной обработки (|). (Командлеты Format используются для того, чтобы сделать выходные данные более удобными для чтения. Дополнительные сведения см. в разделе Форматирование выходных данных). Используйте параметр -property командлета Format со значением «все» (*). Например, чтобы просмотреть значения всех свойств службы Schedule, введите следующую команду:

  Копирование кода
get-service schedule | format-list -property *

В данном случае возвращается информация свойствах в формате списка:

  Копирование кода
Name				: Schedule
CanPauseAndContinue : True
CanShutdown		 : True
CanStop			 : True
DisplayName		 : Task Scheduler
DependentServices   : {}
MachineName		 : .
ServiceName		 : Schedule
ServicesDependedOn  : {RpcSs}
ServiceHandle	 : SafeServiceHandle
Status			: Running
ServiceType		 : Win32ShareProcess
Site				:
Container		 :

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

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

В следующем примере результат выполнения команды IpConfig передается команде Findstr. Оператор конвейерной обработки (|) отправляет результат выполнения левой команды правой команде. При работе с не требуется работать со строками и вычислять смещения данных.

  Копирование кода
PS> ipconfig | findstr "Address"
		IP Address. . . . . . . . . . . . : 172.28.21.5
		IP Address. . . . . . . . . . . . : 172.30.160.225

Сценарии

Если вы часто используете конкретные команды или их последовательности или разрабатываете алгоритм решения сложной задачи, команды можно сохранить в файле с расширением .PSL. Тогда вместо ввода команд в командной строке можно будет запустить этот файл (он называется сценарием).

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

Например, следующие строки эквивалентны:

  Копирование кода
		c:\test\testscript.ps1
		c:\test\testscript
Примечание.
При запуске сценария нужно указывать полный путь к его файлу, даже если он хранится в текущей папке. Чтобы указать текущую папку, нужно ввести ее имя или точку (.), чтобы указать текущую папку. Например:
  Копирование кода
		.\testscript.ps1
Важно.
Сценарии очень полезны, а иногда даже необходимы для решения той или иной задачи, однако злоумышленники могут использовать их для распространения вредоносного кода. Чтобы определить, возможно ли выполнение сценариев и должны ли они включать цифровую подпись, в оболочке Windows PowerShell используется политика обеспечения безопасности. Ради устранения явного риска ни одна политика безопасности, доступная в оболочке Windows PowerShell, не позволяет выполнить сценарий, дважды щелкнув его значок. Чтобы получить дополнительные сведения, введите следующую команду:
  Копирование кода
		Get-help about_signing

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

Запуск Windows PowerShell

Запуск Windows PowerShell из меню «Пуск»
  • Выполните одно из следующих действий.

    • Если программа FPE не установлена, в меню Пуск выберите Все программы, Windows PowerShell 1.0 и щелкните Windows PowerShell.

    • Если программа FPE установлена, нажмите кнопку Пуск, выберите Все программы, Microsoft Forefront Server Security и Командная консоль Forefront.

Запуск Windows PowerShell из командной строки
  • Откройте окно командной строки, введите команду powershell и нажмите клавишу ВВОД.

Просмотр допустимых параметров при запуске Windows PowerShell
  • В командной строке введите команду powershell -? и нажмите клавишу ВВОД.

Поскольку консоль Windows PowerShell работает наподобие консоли командной строки, можно запускать все программы, предназначенные для командной строки, из консоли Windows PowerShell (например, ipconfig); также из консоли Windows PowerShell можно запускать сценарии VBScript и пакетные файлы. Как и в любой консоли, введите нужную команду и нажмите клавишу ВВОД.

Получение технической поддержки

Для получения справки о командлетах Windows PowerShell используйте командлет Get-Help.

Использование командлета Get-Help
  • Чтобы использовать командлет Get-Help, в командной консоли Windows PowerShell введите gethelp и нажмите клавишу ВВОД.

Просмотр всех материалов справки Windows PowerShell
  • Чтобы просмотреть справку обо всех элементах Windows PowerShell, введите gethelp about_* и нажмите клавишу ВВОД.

Получение справки о каком-либо элементе
  • Чтобы получить справку о каком-либо элементе, введите имя этого элемента после слова «about_». Например, введите get-help about_wildcard и нажмите клавишу ВВОД.

Просмотр всех доступных командлетов
  • Для просмотра списка всех доступных командлетов введите get-command и нажмите клавишу ВВОД.

    Примечание.
    Командлет Get-Command также получает команды и элементы команд, отличные от командлетов, в том числе псевдонимы команд, функции и исполняемые файлы, доступные в оболочке Windows PowerShell.
Получение справки о каком-либо командлете
  • Каждый командлет снабжен файлом справки, который можно просмотреть в окне Windows PowerShell. Чтобы просмотреть справку по определенному командлету, введите get-help имя_командлета и нажмите клавишу ВВОД.

Например, чтобы получить справку о командлете Set-FseSignatureUpdate, введите следующую команду:

get-help Set-FseSignatureUpdate

Получение подробной справки о каком-либо командлете
  • Для каждого командлета доступна подробная справка, содержащая описание всех параметров и примеры. Чтобы просмотреть подробную справку по определенному командлету, введите get-help имя_командлета-detailed и нажмите клавишу ВВОД.

Например, чтобы получить подробную справку о командлете Set-FseSignatureUpdate, введите следующую команду:

        get-help Set-FseSignatureUpdate

Просмотр примеров какого-либо командлета
  • Чтобы просмотреть только примеры по определенному командлету, введите get-help имя_командлетаexamples и нажмите клавишу ВВОД.

Например, чтобы получить примеры командлета Set-FseSignatureUpdate, введите следующую команду:

get-help Set-FseSignatureUpdate -examples

Просмотр сведений о параметре какого-либо командлета
  • Чтобы просмотреть только определенный параметр определенного командлета, введите get-help имя_командлета -parameter имя_параметра и нажмите клавишу ВВОД.

Например, чтобы просмотреть справку только для параметра ScheduleStart командлета Set-FseSignatureUpdate, введите следующую команду:

get-help Set-FseSignatureUpdate -parameter ScheduleStart

Просмотр списка всех командлетов с одинаковым глаголом
  • Для просмотра списка всех командлетов с одинаковым глаголом введите этот глагол, затем дефис (-) и звездочку(*), потом нажмите клавишу ВВОД.

Например, для просмотра списка командлетов с глаголом Set:

get-help set-*

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

У некоторых командлетов есть параметры, начинающиеся с дефиса (-), позволяющие выбрать различные варианты выполнения команды. Например, у командлета Set-FseSignatureUpdate есть несколько параметров, в том числе Engine, ScheduleStart и EnableSchedule. У многих командлетов нет параметров. Чаще всего параметры встречаются у командлетов группы Set.

Все командлеты поддерживают параметры, которые называются общими параметрами. Примеры таких параметров — Verbose, Debug и ErrorAction. Они обеспечивают согласованность интерфейса оболочки Windows PowerShell. Чтобы просмотреть описание общих параметров, введите:

  Копирование кода
		get-help about_commonparameters

Установка условий «true» и «false»

Многие командлеты семейства Set имеют параметры, позволяющие включать и выключать разные условия при помощи указателей «true» и «false». В Windows PowerShell перед логическими значениями «true» и «false» нужно ставить знак доллара ($).

Например, чтобы обновлять определения ядра проверки при каждом запуске службы Forefront, установите параметру -UpdateAtStartup командлета SetFseSignatureOptions значение «true» следующим образом:

  Копирование кода
		Set-FseSignatureOptions -UpdateAtStartup $true

Форматирование выходных данных

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

Командлет Функция

format-list

Форматирует выходные данные в виде списка, каждое свойство в отдельной строке.

format-table

Форматирует выходные данные в виде таблицы со столбцами.

format-wide

Форматирует выходные данные в виде широкой таблицы, в которой отображается только одно свойство каждого объекта.

format-custom

Форматирует выходные данные на базе представлений в файле PX1XML.

Для получения дополнительных сведений о каждом командлете запустите с каждым из них командлет Get-Help. Ниже приведен пример:.

  Копирование кода
		Get-help format-list

Командлеты FSE

FPE поддерживает следующие командлеты. Они сгруппированы по функциям, чтобы можно было быстрее найти нужные командлеты.

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

Командлет Функция

Set-FseScheduledScan

Устанавливает конфигурацию проверки по расписанию.

Get-FseScheduledScan

Получает конфигурацию проверки по расписанию.

Start-FseScheduledScan

Немедленно начинает проверку хранилища почтового ящика.

Stop-FseScheduledScan

Останавливает запущенную проверку хранилища почтового ящика.

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

Командлет Функция

Set-FseRealtimeScan

Устанавливает конфигурацию проверки в реальном времени.

Get-FseRealtimeScan

Получает конфигурацию проверки в реальном времени.

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

Командлет Функция

Set-FseTransportScan

Устанавливает конфигурацию проверки транспорта.

Get-FseTransportScan

Получает конфигурацию проверки транспорта.

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

Командлет Функция

Set-FseOnDemandScan

Устанавливает конфигурацию проверки по требованию.

Get-FseOnDemandScan

Получает конфигурацию проверки по требованию.

Start-FseOnDemandScan

Запускает проверку по требованию.

Stop-FseOnDemandScan

Останавливает проверку по требованию.

Suspend-FseOnDemandScan

Приостанавливает запущенную проверку по требованию.

Resume-FseOnDemandScan

Возобновляет приостановленную проверку по требованию.

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

Командлет Функция

New-FseFilterList

Создает новый список фильтров.

Get-FseFilterList

Получает списки фильтров.

Set-FseFilterList

Изменяет свойства списка фильтров.

Clear-FseFilterList

Очищает все записи в списке фильтров.

Remove-FseFilterList

Удаляет список фильтров.

Add-FseFilterListEntry

Добавляет один или несколько элементов в существующий список фильтров.

Remove-FseFilterListEntry

Удаляет один или несколько элементов из списка фильтров.

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

Командлет Функция

Set-FseScheduledFilter

Создает фильтр, настраивает его и связывает его с заданием проверки по расписанию.

Get-FseScheduledFilter

Получает настроенные фильтры задания проверки по расписанию.

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

Командлет Функция

Set-FseRealtimeFilter

Создает фильтр, настраивает его и связывает его с заданием проверки в реальном времени.

Get-FseRealtimeFilter

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

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

Командлет Функция

Set-FseTransportFilter

Создает фильтр, настраивает его и связывает его с заданием проверки транспорта.

Get-FseTransportFilter

Получает настроенные фильтры задания проверки транспорта.

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

Командлет Функция

Set-FseOnDemandFilter

Создает фильтр, настраивает его и связывает его с заданием проверки по требованию.

Get-FseOnDemandFilter

Получает настроенные фильтры задания проверки по требованию.

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

Командлет

Функция

Set-FseEngineManagement

Настраивает параметры ядра.

Get-FseEngineManagement

Получает параметры ядра.

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

Командлет Функция

Set-FseSignatureOptions

Устанавливает параметры обновления определений.

Get-FseSignatureOptions

Получает параметры обновления определений.

Set-FseSignatureUpdate

Устанавливает расписание обновления определений.

Get-FseSignatureUpdate

Получает расписание обновления определений.

Start-FseSignatureUpdate

Начинает немедленное обновление определений.

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

Командлет Функция

Set-FseAdvancedOptions

Устанавливает дополнительные параметры.

Get-FseAdvancedOptions

Получает дополнительные параметры.

Set-FseLoggingOptions

Устанавливает параметры ведения журнала и диагностики.

Get-FseLoggingOptions

Получает параметры ведения журнала.

Set-FseTracing

Устанавливает параметры трассировки.

Get-FseTracing

Получает параметры трассировки.

Get-FseExchangeManagementStatus

Подтверждает, доступна ли защита от нежелательной почты.

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

Командлет Функция

Get-FseIncident

Получает записи из базы данных происшествий.

Remove-FseIncident

Удаляет элемент из базы данных происшествий.

Set-FseIncidentOptions

Устанавливает параметры базы данных происшествий.

Get-FseIncidentOptions

Получает параметры базы данных происшествий.

Get-FseQuarantine

Получает записи из базы данных карантина.

Export-FseQuarantine

Сохраняет помещенные на карантин элементы на диске.

Remove-FseQuarantine

Удаляет элементы из базы данных карантина.

Send-FseQuarantine

Доставляет помещенный на карантин элемент указанным получателям.

Set-FseQuarantineOptions

Устанавливает параметры базы данных карантина.

Get-FseQuarantineOptions

Получает параметры базы данных карантина.

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

Командлет Функция

Set-FseNotification

Устанавливает значения уведомлений.

Get-FseNotification

Получает значения уведомлений.

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

Командлет Функция

Get-FseReport

Получает статистические отчеты о действиях FPE.

Clear-FseReport

Сбрасывает отчет о действиях FPE.

Get-FseSpamReport

Получает отчет о блокировке нежелательной почты

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

Командлет Функция

Get-FseProductInfo

Получает сведения о сервере и о продукте Forefront.

Set-FseLicensing

Устанавливает необходимые параметры лицензирования для FPE.

Get-FseLicensing

Получает текущее состояние лицензии продукта.

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

Командлет Функция

Import-FseSettings

Импортирует параметры конфигурации из XML-файла.

Export-FseSettings

Экспортирует параметры конфигурации в XML-файл.

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

Командлет Функция

Set-FseExtendedOption

Устанавливает расширенный параметр.

Get-FseExtendedOption

Получает значение расширенного параметра.

New-FseExtendedOption

Создает новый расширенный параметр.

Remove-FseExtendedOption

Удаляет расширенный параметр.

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

Командлет Функция

Set-FseSpamContentFilter

Устанавливает параметры конфигурации для фильтра содержимого нежелательной почты.

Get-FseSpamContentFilter

Получает параметры конфигурации для фильтра содержимого нежелательной почты.

Set-FseSpamFiltering

Включает или отключает фильтрацию нежелательной почты.

Get-FseSpamFiltering

Получает состояние фильтрации нежелательной почты.

Set-FseSpamConnectionFilter

Устанавливает параметры конфигурации для списка блокировки DNS (DNSBL).

Get-FseSpamConnectionFilter

Получает параметры конфигурации для фильтра блокировки DNSBL.

Get-FseSpamAgentLog

Получает записи журналов от всех агентов защиты от нежелательной почты.

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

Командлет

Функция

Set-FseBackscatterFilter

Настраивает агент защиты от возвращаемых писем.

Get-FseBackscatterFilter

Получает параметры настройки агента защиты от возвращаемых писем.

New-FseBackscatterKeys

Создает новый набор ключей возвращаемых писем.

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

Командлет

Функция

Get-FseHealth

Получает текущее состояние системы FSE.