Школа Geek: обучение использованию объектов в PowerShell

Оглавление:

Школа Geek: обучение использованию объектов в PowerShell
Школа Geek: обучение использованию объектов в PowerShell

Видео: Школа Geek: обучение использованию объектов в PowerShell

Видео: Школа Geek: обучение использованию объектов в PowerShell
Видео: Установка оперативной памяти на ПК.И как проверить - YouTube 2024, Май
Anonim
Понимание объектов - одна из основных концепций «получения» PowerShell. Присоединяйтесь к нам, когда мы исследуем объекты и как они делают PowerShell лучше, чем любая другая оболочка сегодня.
Понимание объектов - одна из основных концепций «получения» PowerShell. Присоединяйтесь к нам, когда мы исследуем объекты и как они делают PowerShell лучше, чем любая другая оболочка сегодня.

Обязательно прочитайте предыдущие статьи в серии:

  • Узнайте, как автоматизировать Windows с помощью PowerShell
  • Обучение использованию командлетов в PowerShell

И оставайтесь настроенными для остальной части серии всю неделю.

Объекты

Вы когда-нибудь задавались вопросом, что отличает PowerShell от традиционной оболочки Linux, такой как Bash, или даже устаревшей командной строки? Ответ на самом деле прост: традиционный shells выводит текст, что затрудняет выполнение таких действий, как форматирование и фильтрация. Конечно, есть инструменты, которые помогут вам выполнить задание (sed и grep приходят на ум), но в конце дня, если вы хотите провести какой-либо синтаксический анализ большого текста, вам нужно знать регулярные выражения, такие как назад вашей руки.

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

Image
Image

Объекты в.Net почти одинаковы, за исключением двух небольших отличий: «Части» называются свойства и «Инструкции» называются методы, Если бы мы хотели представить Службу Windows как объект, мы могли бы решить, что ее следует описывать с использованием трех свойств: Имя службы, Состояние и Описание. Нам также необходимо взаимодействовать с сервисом, поэтому мы могли бы дать объекту метод «Старт», «Стоп» и «Пауза».

Вы можете увидеть свойства и методы объекта, передав их командлету Get-Member. Объекты, которые выводятся командлетом PowerShell, являются в основном базовыми типами из.Net-структуры, но вы можете создавать свои собственные объекты, если вам нужно использовать язык типа C # или использовать тип PSObject.
Вы можете увидеть свойства и методы объекта, передав их командлету Get-Member. Объекты, которые выводятся командлетом PowerShell, являются в основном базовыми типами из.Net-структуры, но вы можете создавать свои собственные объекты, если вам нужно использовать язык типа C # или использовать тип PSObject.

Трубопровод

Существует множество оболочек Linux с конвейером, что позволяет отправлять текст, который одна команда выводит в качестве входных данных для следующей команды в конвейере. PowerShell переходит на следующий уровень, позволяя вам принимать объекты, которые выводит один командлет, и передавать их в качестве ввода в следующий командлет в конвейере. Трюк - это знать, какой тип объекта возвращается командлету, что очень удобно при использовании командлета Get-Member.

Get-Service | Get-Member

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

System.ServiceProcess.ServiceController

Поскольку PowerShell имеет дело с объектами, а не с текстом, не все командлеты могут быть связаны между собой, используя конвейер [1]. Это означает, что нам нужно найти командлет, который хочет принять объект System.ServiceProcess.ServiceController из конвейера.

Get-Command -ParameterType System.ServiceProcess.ServiceController

Обратите внимание, что есть командлет Stop-Service; давайте посмотрим на помощь для этого.
Обратите внимание, что есть командлет Stop-Service; давайте посмотрим на помощь для этого.

Get-Help –Name Stop-Service

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

Get-Help -Name Stop-Service –Full

Наши подозрения были правильными. Итак, в этот момент мы знаем следующее:
Наши подозрения были правильными. Итак, в этот момент мы знаем следующее:
  • Get-Service возвращает объекты ServiceController
  • Stop-Service имеет параметр InputObject, который принимает один или несколько ServiceControllers в качестве входных данных.
  • Параметр InputObject принимает вход конвейера.

Используя эту информацию, мы могли бы сделать следующее:

Get-Service -Name ‘Apple Mobile Device’ | Stop-Service

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

Домашнее задание

Прочитайте на объектной трассе

Если у вас есть какие-либо вопросы, вы можете почитать мне @taybgibb или просто оставить комментарий.

Рекомендуемые: