Все, что вы хотели знать о pscustomobject

Windows PowerShell и WPF

  • Статья
  • 07/02/2015
  • Чтение занимает 17 мин

Дуг Финк

Продукты и технологии:

Windows PowerShell, Windows Presentation Foundation, Microsoft .NET Framework
В статье рассматриваются:

  • использование функций PowerShell;
  • диапазоны и конвейеры;
  • создание WPF GUI;
  • импорт модулей;
  • интеграция .NET.

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

PowerShell — технология автоматизации, представленная в виде интерфейса командной строки (command-line interface, CLI), скриптового языка и API.

В этой статье я детально рассмотрю основные методики использования PowerShell и создам калькулятор приведенной стоимости (present value calculator) (bit.ly/7oEij1) с графическим пользовательским интерфейсом (GUI) на основе Windows Presentation Foundation (WPF) (рис. 1).

Рис. 1. PowerShell — калькулятор приведенной стоимости

Я ознакомлю вас с несколькими ключевыми элементами PowerShell: WPF PowerShell Kit (WPK), объектным конвейером, функциями, объектами PSObject со свойствами, бесшовной интеграцией с Microsoft .NET Framework, модулями и др.

PowerShell опирается на .NET Framework, что позволяет вам обращаться к этой инфраструктуре так же, как из любых других .NET-языков. Кроме того, вы получаете доступ к остальной части операционной системы Windows OS и к таким ее компонентам, как сервисы, процессы, Windows Management Instrumentation (WMI) и возможности обращения к удаленным серверам (на которых установлена PowerShell версия 2 и включена служба Windows Remote Management).

Все это достигается благодаря новому скриптовому языку, предоставляемому PowerShell. Вам потребуются лишь Notepad (Блокнот) и несколько командлетов PowerShell (cmdlets, произносятся как «command-lets»; это облегченные команды, используемые в среде PowerShell). Хорошая новость в том, что все это уже есть: командлеты встроены в PowerShell, а Notepad поставляется с Windows. Три ключевых командлета: Get-Help (отображает информацию о командах и концепциях PowerShell), Get-Command (получает базовые сведения о командлетах и других элементах команд PowerShell) и Get-Member (получает «члены» объектов — свойства и методы).

Эти командлеты помогают ориентироваться в новой платформе автоматизации задач.

Для чего предназначена оболочка PowerShell?

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

  • Управление облаком. PowerShell можно использовать для управления облачными ресурсами. Например, можно получать сведения об облачных ресурсах, а также обновлять ресурсы или развертывать новые.
  • CI/CD. PowerShell можно также использовать в рамках конвейера непрерывной интеграции и непрерывного развертывания.
  • Автоматизация задач для Active Directory и Exchange. PowerShell можно использовать для автоматизации практически любой задачи в Windows, например создание пользователей в Active Directory и почтовых ящиков в Exchange.

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

Диски PowerShell

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

Список провайдеров, доступных в данный момент оболочке, можно получить командой . Изначально в PowerShell присутствуют следующие «диски» — псевдонимы (Alias), переменные среды (Env), физические диски системы (C, D, и т. д.), функции, системный реестр, внутренние переменные (Variable) и хранилище сертификатов.

Вот пример чтения содержимого ветки реестра
Как видно, использованы те же команды, что для получения сведений о файловой системе. Но структура получаемых данных, естественно, различна. Кроме названия и свойств для каждого элемента выводится номер подраздела (SKC) и номер записи (VC). С помощью PowerShell пользователь может просматривать сведения о реестре, добавлять, удалять и модифицировать ключи. Позволю привести себе что-то вроде шпаргалки по работе с элементами реестра:
И код для примера выполнения различных манипуляций с ключами реестра и их параметрами:

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

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

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

Работа с объектами WMI

WMI (Windows Management Interface, интерфейс управления Windows) — набор интерфейсов для управления ОС Windows с помощью специальных компонентов. Возможно управление локальным компьютером, и находящимся в сети. WMI — разновидность Web-Based Enterprise Management (WBEM) и Common Information Model (CIM), разработанная Microsoft. Входит в состав Windows Vista, Windows Server 2003, Windows XP, Windows Me и Windows 2000. Для Windows 95 и Windows 98 доступна в виде отдельно устанавливаемого компонента. Поддерживает использование скриптовых языков, таких как VBScript или Windows PowerShell для управления персональными компьютерами и серверами, работающими под управлением Microsoft Windows.

Объекты WMI являются для PowerShell вполне «родными». Достаточно выполнить команду:

чтобы увидеть большое количество классов, обеспечивающих доступ к объектам WMI в оболочке. В случае подключения к WMI на удаленном компьютере, состав классов будет зависеть от ОС и установленных на нем расширений WMI. Для получения сведений о доступных классах на удаленной машине, необходимо указать его IP-адрес или имя в качестве параметра:

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

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

А вот небольшой пример опроса всех компьютеров в локальной сети с адресом 192.168.1.0 и маской подсети 255.255.255.0:

В первом элементе конвейера генерируется массив чисел от 1 до 254. На втором этапе каждое число из массива подставляется в IP-адрес, который будет пинговаться при помощи средств WMI. Результаты будут выводиться в таблицу с тремя столбцами — адрес хоста, время отклика и статус ответа. В случае ответа хоста возвращается статус с кодом «0».

Получение сведений об объектах

Возможно, у читателя уже возник вопрос — а как, вообще говоря, можно узнать, какую информацию можно получить в результате выполнения той или иной команды? Какие действия можно произвести с полученными данными? Например, в вышеописанном случае, откуда можно было узнать, что мы сможем получить дату создания файла? Одним из простых способов анализа объекта, возвращаемого командой, является передача этого объекта на вход командлета . Этот командлет выводит сведения о типе объекта и всех его элементов. Как правило, объекты имеют большое количество разнообразных свойств и результатом работы может стать весьма объемный текст, который не очень удобно просматривать. В этом случае можно либо разделять информацию на части, либо ее отфильтровывать. Пример получения информации об объекте, возвращаемом командлетом , просмотр которой можно осуществлять постранично:

По заполнении страницы, пользователь может выбрать один из вариантов — вывести еще одну страницу, вывести еще одну строку или прекратить вывод данных.
Фильтрация данных выполняется при помощи параметра MemberType, определяющего, сведения какого рода должны быть выведены. Например, команда

выведет лишь свойства объекта, а

— лишь его методы. Еще один способ посмотреть свойства объекта — присвоить переменной объект, затем набрать в консоли имя переменной, поставить точку и нажать клавишу Tab. С каждым нажатием клавиши PowerShell будет перебирать и подставлять методы и свойства объекта. Перебор в обратную сторону возможен с помощью сочетания клавиш Shift+Tab.

Добавление ключевого слова function

Я назову функцию Get-PresentValue. Вы должны следовать соглашению по именованию функций в PowerShell «глагол-существительное» — это фундаментальный принцип в использовании и разработке для PowerShell. В ней есть предопределенные глаголы, такие как Get, Invoke, New и Remove (введите Get-Verb, чтобы увидеть полный список). Попробуйте ввести Get-Command; вы получите все командлеты (и кое-что еще), определенные в вашем сеансе PowerShell. Учтите, что этот список огромен.

Для создания функции достаточно набрать function Get-PresentValue {}. После этого я создам параметры со значениями по умолчанию и тело самой функции, как показано на рис. 4.

Сравнив рис. 3 и 4, вы увидите, что я переношу переменные (как имена, так и значения) в одну строку и разделяю их запятыми, заключаю их в скобки и помещаю после имени функции; это и превращает их в параметры функции. У этих параметров теперь имеются значения по умолчанию. Я оставлю вычисление приведенной стоимости в том виде, как есть. Ключевой принцип в PowerShell — вводить как можно меньше. В строке 3 на рис. 4 я мог бы указать выражение return. Однако его можно опустить, и это никак не отразится на поведении функции, хотя временами вы предпочтете вставлять выражение return для разбиения потока логики.

В этом примере я покажу несколько способов вызова функции Get-PresentValue. Первый — без параметров, все значения по умолчанию. Параметры можно передавать либо по позиции (см. строку 8 на рис. 4), либо по имени (см. строку 9). Я рекомендую специально изучить параметры в PowerShell; эта платформа поддерживает мощный механизм связывания параметров.

Следующий шаг — модифицируем функцию Get-PresentValue так, чтобы она возвращала .NET-объект вместо простого текста.

Windows PowerShell

  • Статья
  • 07/03/2015
  • Чтение занимает 15 мин

В этой статье

Создание дружественных к пользователю XML-интерфейсов с помощью Windows PowerShell

Продукты и технологии:

Windows PowerShell, Windows Forms, XML, XPath

В статье рассматриваются:

  • создание механизма разбора XML;
  • конструирование Windows Forms;
  • поиск или редактирование XML-файлов с использованием XPath-запросов.

Скриптовый язык Windows PowerShell делает все, что можно пожелать для инструмента командной строки, и даже настолько больше, что в конечном счете он мог бы заменить такие технологии, как VBScript. Хорошее общее описание того, что такое Windows PowerShell, и основы его применения см. по ссылкам bit.ly/LE4SU6 и bit.ly/eBucBI.

В этой статье исследуются возможности Windows PowerShell в представлении XML-данных и манипуляций над ними с целью создания относительно простого UI для чтения и редактирования XML-файлов. Идея в том, чтобы упростить и сделать это более удобным, используя алгоритмы, «понимающие» отношения одного уровня и предок-потомок в любом конкретном файле, даже ничего не зная о его схеме. Я также рассмотрю применение Windows Forms в Windows PowerShell, запросы XPath и другие релевантные технологии. Предлагаемое мной приложение может обрабатывать XML-файл и генерировать XPath-запросы.

Давайте обсудим, как анализировать любой XML-файл в Windows PowerShell и представить его в формате, которым смогут пользоваться люди без глубоких технических познаний. На рис. 1 показан предварительный набросок того типа GUI, который вы можете создать.

Рис. 1. Предварительный набросок GUI

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

Таким образом, нужен механизм разбора, способный читать любой XML-файл и генерировать XPath-запросы для поиска и редактирования XML-файлов, которые могли бы применять обычные пользователи с минимальным уровнем познаний в этой области.

Подробное описание

Вы можете создавать объекты в PowerShell и использовать объекты, создаваемые в командах и скриптах.

Существует множество способов создания объектов. Этот список не является окончательным:

  • New-Object: создает экземпляр объекта платформа .NET Framework или COM-объекта.
  • Import-CSV / ConvertFrom-CSV: создает пользовательские объекты (PSCustomObject) из элементов, определенных как символьные значения.
  • ConvertFrom-Json: создает пользовательские объекты, определенные в нотации объектов JavaScript (JSON).
  • ConvertFrom-String: созданная на основе FlashExtract, создает пользовательские объекты из структурированных строковых данных. В этом разделе демонстрируется и обсуждается каждый из этих методов.
  • ConvertFrom-StringData: создает пользовательские объекты, определенные как пары «ключ-значение».
  • Add-Type: позволяет определить класс в сеансе PowerShell, экземпляра которой можно создать с помощью .
  • New-Module: параметр AsCustomObject создает пользовательский объект, определяемый с помощью блока скрипта.
  • Add-Member: добавляет свойства в существующие объекты. Можно использовать для создания пользовательского объекта из простого типа, например .
  • Select-Object: выбирает свойства объекта. Вы можете использовать для создания пользовательских и вычисляемых свойств для уже созданного экземпляра объекта.

В этой статье рассматриваются следующие дополнительные методы:

  • Путем вызова конструктора типа с помощью статического метода
  • Путем ввода хэш-таблиц имен свойств и значений свойств

Создание нестандартных объектов из хэш-таблиц

Хэш-таблицы также можно использовать для создания объектов для нестандартных классов. При создании объекта для нестандартного класса требуется имя типа с указанием пространства имен, хотя можно опустить любой исходный компонент пространства имен System .

Например, следующая команда создает объект параметра сеанса.

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

Функцию хэш-таблицы можно также использовать при установке значений параметров. Например, значение параметра SessionOption объекта .
Командлет может быть хэш-таблицей.

Командлеты PowerShell

В состав PowerShell входят сотни предустановленных команд. Команды PowerShell называются командлетами. Слово cmdlet произносится как командлет.

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

Использование командлетов для изучения PowerShell

Первое знакомство с PowerShell может показаться пугающим, так как кажется, что предстоит очень многому научиться.
Изучение PowerShell происходит постепенно и по мере необходимости.

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

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

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

Команда

Глагол является важным понятием в PowerShell. Это стандарт именования, которому следует большинство командлетов. Этого стандарта должны придерживаться и вы в процессе написания собственных команд. Суть в том, что глагол означает действие, которое будет выполняться, например чтение или изменение данных. В PowerShell имеется стандартизированный список глаголов. Чтобы получить полный список всех возможных команд, выполните командлет :

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

Создание пользовательских объектов из хэш-таблиц

Пользовательские объекты очень полезны и легко создавать с помощью метода хэш-таблицы. Класс PSCustomObject разработан специально для этой цели.

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

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

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

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

Объекты типа PSObject поддерживают список элементов в том порядке, в который они были добавлены в объект . Несмотря на то, что объекты Hashtable не гарантируют порядок пар «ключ-значение», приведение литеральной хэш-строки к поддержанию порядка.

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

Типы свойств

Здесь ничего нового. Также как и параметрам функций, свойствам классов можно задавать типы и значения по умолчанию. Более того, задавать типы желательно всегда, так как Powershell не всегда корректно определяет типы сам, что может вылезти боком в дальнейшем. Например:

PSC:\>$Verter.Birthday.GetType().NameString

Powershell определил тип свойства, отвечающего за дату создания, как строку, в то время как мы подразумевали дату. Поэтому добавим в наш класс типы свойств:

ClassRobot
{
    [String$NameInt$IdDateTime$Birthday
}

Теперь при задании свойства $Birthday, экземпляра класса Robot, Powershell будет ожидать дату:

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

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

Поиск команд с помощью командлета Get-Command

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

Фильтрация по имени

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

На этом этапе фильтрация пытается выполнить точное сопоставление с указанным строковым аргументом.
Если при сравнении требуется больший уровень гибкости, можно использовать подстановочный знак , который выполняет сопоставление шаблону. Следующий код будет искать все команды, имена которых заканчиваются «process»:

Здесь для фильтрации используется параметр . Кроме , можно фильтровать, к примеру, по и .

Фильтрация по существительным и глаголам

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

  • Фильтрация по глаголу. Глагол в имени команды является ее левой частью. В команде частью глагола является . Для фильтрации по глагольной части укажите в качестве параметра, как показано ниже:

    Приведенная выше команда выводит список всех команд, частью глагола в которых является .

  • Фильтрация по существительному. Правая часть команды — это часть существительного. Глагол должен входить в список глаголов, возвращаемых при вызове , а существительное может быть любым. В команде часть существительного представлена значением . Чтобы выполнить фильтрацию по существительному, укажите в качестве параметра и строкового аргумента, как показано ниже:

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

Результат выглядит следующим образом:

Таким образом, вы немного сократили объем выходных данных, так как знали глагол и то, что он вызывает.

Использование вспомогательных командлетов для фильтрации результатов

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

  • . Это очень универсальная команда для выбора конкретных свойств из одного объекта или нескольких. А с помощью ее параметров можно ограничить возвращаемый ответ.
    Ниже приведен пример использования для запроса ограниченного числа записей:

    Результатом выполнения приведенной выше команды являются три первые верхние команды. Результат имеет следующий вид:

    Стоит рассмотреть эту команду более подробно, так как с ее помощью можно выполнять гораздо больше задач (см. статью Select-Object).

  • . Помогает выбрать объекты из коллекции на основе значений свойств. Команда принимает выражение, в котором можно указать, какие столбцы должны соответствовать каким значениям. Чтобы найти все объекты process, где начинается с , можно использовать следующим образом:

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

Создание пользовательских объектов из хэш-таблиц

Пользовательские объекты очень полезны и легко создавать с помощью метода хэш-таблицы. Класс PSCustomObject разработан специально для этой цели.

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

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

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

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

Объекты типа PSObject поддерживают список элементов в том порядке, в который они были добавлены в объект . Несмотря на то, что объекты hashtable не гарантируют порядок пар «ключ-значение», приведение хэш-сводки литерала для поддержания порядка.

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

Использование Internet Explorer из PowerShell

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

Экземпляр Internet Explorer создается указанием программного идентификатора этого приложения InternetExplorer.Application:

Эта команда запускает Internet Explorer, но не делает его видимым. Если ввести , вы увидите, что выполняется процесс с именем . На самом деле, если вы выйдете из PowerShell, процесс будет продолжать выполняться. Для завершения процесса необходимо перезагрузить компьютер или использовать такое средство, как диспетчер задач.

Примечание

СОМ-объекты, запускаемые в виде отдельных процессов, обычно называются исполняемыми файлами ActiveX. При их запуске окно пользовательского интерфейса отображается не всегда. Если они создают окно, но не делают его видимым, например Internet Explorer, фокус обычно перемещается на рабочий стол Windows. Для взаимодействия с ним необходимо сделать окно видимым.

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

Затем можно перейти к определенному веб-адресу с помощью метода :

Используя другие элементы объектной модели Internet Explorer, можно извлечь текстовое содержимое с веб-страницы. Следующая команда отображает html-текст в тексте текущей веб-страницы:

Чтобы закрыть Internet Explorer из PowerShell, вызовите метод :

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

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

Примечание

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

Создание пользовательских объектов из хэш-таблиц

Пользовательские объекты очень полезны и легко создавать с помощью метода хэш-таблицы. Класс PSCustomObject разработан специально для этой цели.

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

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

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

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

Объекты типа PSObject поддерживают список элементов в том порядке, в который они были добавлены в объект . Несмотря на то, что объекты hashtable не гарантируют порядок пар «ключ-значение», приведение хэш-сводки литерала для поддержания порядка.

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: