Мне нравится объяснять так:
- В 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 массива столбцов, и отображать одинаково, хотя в серверной части они отличаются типами объектов.