PowerShell создает хэш-таблицу в фоновом режиме для вывода? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь понять, как работают объекты и хеш-таблицы в Powershell.Я знаю разницу между этими двумя, но я немного смущен одним тоном.Если я запускаю Get-Service, чтобы получить вывод с именами, отображаемыми именами и т. Д., Значит ли это, что это Hashtable, который Powershell создает в фоновом режиме?Я знаю, что hashtable - это ключ = значение, но когда я получаю вывод из get-service, это больше, чем 2 столбца.Я просто немного озадачен тем, что вижу в Powershell:)

1 Ответ

0 голосов
/ 26 октября 2018

Мне нравится объяснять так:

  1. В PowerShell все является объектом.
  • Хеш-таблицы являются объектами.
  • Строки - это объекты.
  • Целые числа - это объекты.
  • Массивы - это объекты.
  • Массивы объектов - это объекты
  • и т. Д.
В PowerShell Функции и Cmdlts взаимодействуют с объектами и возвращают объекты.

Функции и командлеты, такие как Get-Service, возвращают объект.Напримерrun:

$Services = Get-Service
$Services.GetType()


IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

Здесь вы видите, что $Services - это тип Object[] (массив объектов).Поскольку командлет Get-Service выводит объект, мы можем затем передать его другой функции, отправив ее по конвейеру.т.е.

$Services = Get-Service
$Services | Export-Csv -Path 'C:\services.csv'

Это выведет объект в файл CSV.Вы можете выполнить дальнейшие операции, такие как добавление в Where-Object, чтобы выполнить некоторую фильтрацию и т. Д. Все это подводит нас к сути вопроса:

Как вы визуализируете объект?

Когда вы запускаете Get-Service, он выводит объект и передает его на консоль PowerShell.На консоли PowerShell интерпретируется того, как должен выглядеть объект типа Object[].Точно так же можно интерпретировать хеш-таблицы и 2 массива столбцов, и отображать одинаково, хотя в серверной части они отличаются типами объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...