Поддерживаемые командлеты
Следующие командлеты поддерживают вычисляемые значения свойств для параметра Property . Командлеты также поддерживают вычисляемые значения для параметра GroupBy .
Следующий список содержит командлеты, поддерживающие вычисляемые свойства и пары «ключ-значение», поддерживаемые каждым командлетом.
-
expression
-
- / — необязательно (добавлено в PowerShell 6.x)
- — необязательный
- — необязательный
-
- — необязательный
-
- / — необязательный
- — необязательный
Этот же набор пар «ключ-значение» также применяется к вычисляемым значениям свойств, передаваемым параметру GroupBy для всех командлетов.
-
- / — необязательный
- — необязательный
- — необязательный
- — необязательный
-
- — необязательный
-
expression
-
- Поддерживает только блок скрипта для выражения, а не хэш-файл.
- Не поддерживается в PowerShell 5.1 и более ранних версиях.
-
- / — необязательный
-
- / — необязательный
Примечание
Значением может быть блок скрипта, а не хэш-файл. Дополнительные сведения см. в разделе .
Перечисление параметров рабочего стола
Для начала рассмотрим команду, собирающую сведения о рабочих столах локального компьютера.
При этом возвращаются сведения для всех рабочих столов, независимо от того, используются они или нет.
Примечание
Сведения, возвращаемые некоторыми классами WMI, могут быть очень подробными и часто содержат метаданные о классе WMI.
Так как имена большинства этих свойств метаданных начинаются с Cim, эти свойства можно отфильтровать с помощью . Укажите параметр -ExcludeProperty, используя «Cim*» как значение. Пример:
Чтобы отфильтровать метаданные, используйте оператор конвейера (|) для отправки результатов команды в .
Описание
Командлет сортирует объекты по возрастанию или убыванию на основе значений свойств объекта. Если свойства сортировки не включены в команду, PowerShell использует свойства сортировки по умолчанию первого входного объекта. Если тип входного объекта не имеет свойств сортировки по умолчанию, PowerShell пытается сравнить сами объекты. Дополнительные сведения см. в разделе .
Объекты можно сортировать по одному свойству или нескольким свойствам. Несколько свойств используют хэш-таблицы для сортировки по возрастанию, убыванию или сочетанию порядка сортировки. Свойства сортируются как с учетом регистра или без учета регистра. Используйте параметр Unique , чтобы удалить дубликаты из выходных данных.
Перечисление параметров рабочего стола
Для начала рассмотрим команду, собирающую сведения о рабочих столах локального компьютера.
При этом возвращаются сведения для всех рабочих столов, независимо от того, используются они или нет.
Примечание
Сведения, возвращаемые некоторыми классами WMI, могут быть очень подробными и часто содержат метаданные о классе WMI.
Так как имена большинства этих свойств метаданных начинаются с Cim, эти свойства можно отфильтровать с помощью . Укажите параметр -ExcludeProperty, используя «Cim*» как значение. Пример:
Чтобы отфильтровать метаданные, используйте оператор конвейера (|) для отправки результатов команды в .
Упражнение. Поиск связанных команд
Цель этого упражнения — получить дополнительные сведения о команде. В итоге вы также узнаете, с каким типом работает команда, и какие другие аналогичные команды работают с тем же типом.
-
Запустите оболочку PowerShell.
-
Выполните команду .
Результат будет примерно таким:
Вы получаете типы, возвращаемые командой . Теперь вы можете узнать, какая другая команда также работает с этими типами.
-
Выполните команду .
Результат будет примерно таким:
Поздравляем! Вы смогли найти другие команды, которые работают с одним и тем же типом .
Использование является хорошей отправной точкой, чтобы понять, какие другие команды следует изучить дальше.
Упражнение. Поиск связанных команд
Цель этого упражнения — получить дополнительные сведения о команде. В итоге вы также узнаете, с каким типом работает команда, и какие другие аналогичные команды работают с тем же типом.
-
Запустите оболочку PowerShell.
-
Выполните команду .
Результат будет примерно таким:
Вы получаете типы, возвращаемые командой . Теперь вы можете узнать, какая другая команда также работает с этими типами.
-
Выполните команду .
Результат будет примерно таким:
Поздравляем! Вы смогли найти другие команды, которые работают с одним и тем же типом .
Использование является хорошей отправной точкой, чтобы понять, какие другие команды следует изучить дальше.
Get-Command
облегчает поиск команд. Выполнение без указания параметров возвращает список всех команд в системе. В приведенном ниже примере показано использование командлета , который определяет команды, работающие с процессами.
Заметьте: в предыдущем примере, где выполнялся командлет , используется параметр Noun, а командлет указан в качестве значения для параметра Noun. Что делать, если вы не знаете, как использовать командлет ? можно использовать для вывода раздела справки для .
Параметры Name, Noun и Verb поддерживают добавление подстановочных знаков. В приведенном ниже примере показаны подстановочные знаки, используемые с параметром Name.
Я стараюсь не использовать подстановочные знаки с параметром Name для , так как он возвращает и исполняемые файлы, которые не являются собственными командами PowerShell.
При использовании подстановочных знаков с параметром Name рекомендую ограничить результаты с помощью параметра CommandType.
Оптимально использовать параметр Verb или Noun либо оба этих параметра, так как только команды PowerShell состоят из глаголов и существительных.
Что делать, есть в разделе справки найдены ошибки? Можете не волноваться: материалы разделов справки в PowerShell открыты и доступны в репозитории PowerShell-Docs на сайте GitHub. Исправив неверную информацию, вы поможете не только себе, но и другим пользователям. Для этого разместите репозиторий документации PowerShell на сайте GitHub, обновите раздел справки и отправьте запрос на включение внесенных изменений.
После того как этот запрос будет принят, исправленный документ появится в общем доступе.
Aliases
Псевдоним в PowerShell — это более короткое имя команды. PowerShell содержит набор встроенных псевдонимов, а также позволяет определять собственные псевдонимы.
Для поиска псевдонимов используется командлет . Если псевдоним для команды уже известен, параметр Name поможет определить команду, с которой он связан.
В качестве значения параметра Name можно указать несколько псевдонимов.
Вы заметите, что параметр Name опускается, так как он является позиционным параметром.
Чтобы найти псевдонимы для команды, необходимо использовать параметр Definition.
Параметр Definition не может использоваться позиционно, поэтому он должен быть задан.
Псевдонимы ускоряют ввод значений и эффективны при вводе команд в консоль.
Их не следует использовать в сценариях или коде, который вы сохраняете или используете совместно с другими пользователями. Как говорилось ранее в этой книге, полные имена командлетов и параметров являются самодокументируемыми, что упрощает их понимание.
Будьте внимательны при создании собственных псевдонимов, так как они будут существовать только в текущем сеансе PowerShell на вашем компьютере.
Поддерживаемые командлеты
Следующие командлеты поддерживают вычисляемые значения свойств для параметра Property . Командлеты также поддерживают вычисляемые значения для параметра GroupBy .
Следующий список содержит командлеты, поддерживающие вычисляемые свойства и пары «ключ-значение», поддерживаемые каждым командлетом.
-
expression
-
- / — необязательно (добавлено в PowerShell 6.x)
- — необязательный
- — необязательный
-
- — необязательный
-
- / — необязательный
- — необязательный
Этот же набор пар «ключ-значение» также применяется к вычисляемым значениям свойств, передаваемым параметру GroupBy для всех командлетов.
-
- / — необязательный
- — необязательный
- — необязательный
- — необязательный
-
- — необязательный
-
expression
-
- Поддерживает только блок скрипта для выражения, а не хэш-файл.
- Не поддерживается в PowerShell 5.1 и более ранних версиях.
-
- / — необязательный
-
- / — необязательный
Примечание
Значением может быть блок скрипта, а не хэш-файл. Дополнительные сведения см. в разделе .
Упражнение. Поиск связанных команд
Цель этого упражнения — получить дополнительные сведения о команде. В итоге вы также узнаете, с каким типом работает команда, и какие другие аналогичные команды работают с тем же типом.
-
Запустите оболочку PowerShell.
-
Выполните команду .
Результат будет примерно таким:
Вы получаете типы, возвращаемые командой . Теперь вы можете узнать, какая другая команда также работает с этими типами.
-
Выполните команду .
Результат будет примерно таким:
Поздравляем! Вы смогли найти другие команды, которые работают с одним и тем же типом .
Использование является хорошей отправной точкой, чтобы понять, какие другие команды следует изучить дальше.
Обновление справки
Локальная копия разделов справки PowerShell была ранее впервые обновлена с помощью запрошенной команды. Рекомендуется периодически обновлять справочную систему, так как содержимое справки может обновляться. Для обновления разделов справки используется командлет .
Для этого требуется доступ к Интернету по умолчанию, а вам необходимо запустить PowerShell с повышенными правами администратора.
Два модуля вернули распространенные ошибки. Если на компьютере отсутствует доступ к Интернету, можно использовать командлет на другом компьютере с доступом к Интернету, чтобы сначала сохранить обновленную справочную информацию в общей папке, а затем использовать параметр SourcePath для , чтобы указать это сетевое расположение для разделов справки.
Для периодического обновления содержимого справки на компьютере настройте запланированную задачу или добавление логики в скрипт профилирования в PowerShell. Сценарии профилирования будут рассматриваться в следующей главе.
Для чего предназначена оболочка PowerShell?
С тех пор, как PowerShell применялась только в Windows, область ее действия значительно расширилась. Она по-прежнему используется для автоматизации задач Windows, но сейчас с ней можно работать для выполнения различных задач, некоторые из которых приведены ниже.
- Управление облаком. PowerShell можно использовать для управления облачными ресурсами. Например, можно получать сведения об облачных ресурсах, а также обновлять ресурсы или развертывать новые.
- CI/CD. PowerShell можно также использовать в рамках конвейера непрерывной интеграции и непрерывного развертывания.
- Автоматизация задач для Active Directory и Exchange. PowerShell можно использовать для автоматизации практически любой задачи в Windows, например создание пользователей в Active Directory и почтовых ящиков в Exchange.
Существует гораздо больше областей использования, но предыдущий список дает понять, что PowerShell удалось добиться значительного прогресса.
Feel the power of the object-based PowerShell
PowerShell is object orientated. What does this mean and what does this bring? Well, in object orientated environments someone has already done something for you. Such a nice person. Who was that? I don’t know. Surely a developer of Micrsosoft, or rather several.
I can’t say it better than Bruce Payette, the author of Windows PowerShell in Action (Second Edition):
What’s the point? Let me give you an example. You certainly know ipconfig, it’s a command to show your IP settings. Ipconfig outputs plain text.
So far so good. What if you want to display only the IPv4 Address? Yeah I hear you shouting out loud: “This is possible, use find”. Ok, let’s do it.
Now let’s say we want only the IPv4 Address and the IPv6 Address in table format. Now it’s getting really complicated. It’s a huge effort to output or to call up single items from a text output.
Ok, the equivalent command to ipconfig is Get-NetIPAddress.
And now look at this:
The second one is much sweeter. Let me give you another example: dir in cmd and Get-ChildItem in PowerShell.
Dir (if entered in cmd) outputs plain text.
Get-ChildItem outputs objects.
Side Note: If you run dir in PowerShell, Get-ChildItem is executed. This could be a little confusing.
Here’s a small taster for the upcoming topic. Get-ChilIdtem and Objects in Action.
Get-ChildItem -File C:\Temp | Select-Object Name,LastWriteTime,CreationTime,Directory,Length
Now we will take a deep dive into PowerShell Objects.
Примечания
PowerShell включает следующие псевдонимы для :
- Windows:
Командлет сортирует объекты на основе свойств, указанных в команде, или свойств сортировки по умолчанию для типа объекта. Свойства сортировки по умолчанию определяются с помощью имени в файле . Дополнительные сведения см. в разделе about_Types.ps1xml.
Если объект не имеет ни одного из указанных свойств, значение свойства для этого объекта интерпретируется как Null и помещается в конце порядка сортировки.
Если свойства сортировки недоступны, PowerShell пытается сравнить сами объекты.
использует метод Compare для каждого свойства. Если свойство не реализует IComparable, командлет преобразует значение свойства в строку и использует метод Compare для System.String. Дополнительные сведения см. в разделе Метод PSObject.CompareTo(Object).
При сортировке по перечислению свойства, например Status, выполняет сортировку по значениям перечисления. Для служб Windows параметр Stopped имеет значение 1 , а running — значение 4.
Остановлено отсортировано перед выполнением из-за перечисленных значений. Дополнительные сведения см. в разделе ServiceControllerStatus.
Производительность алгоритма сортировки снижается при выполнении стабильной сортировки.
Параметры
-Bottom
Указывает количество объектов, которые необходимо получить из конца отсортированного массива объектов. Это приводит к стабильной сортировке.
Этот параметр появился в PowerShell 6.0.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CaseSensitive
Указывает, что сортировка учитывает регистр. По умолчанию при сортировке регистр не учитывается.
Type: | SwitchParameter |
Position: | Named |
Default value: | Case-insensitive |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Указывает культурную конфигурацию, используемую для сортировки. Используйте для отображения конфигурации языка и региональных параметров системы.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Descending
Указывает, что сортирует объекты в порядке убывания. По умолчанию результаты сортируются по возрастанию.
Чтобы отсортировать несколько свойств с разными порядками сортировки, используйте хэш-таблицу. Например, с помощью хэш-таблицы можно сортировать одно свойство в порядке возрастания, а другое — в порядке убывания.
Type: | SwitchParameter |
Position: | Named |
Default value: | Ascending |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Чтобы отсортировать объекты, отправьте их по конвейеру в . Если вы используете параметр InputObject для отправки коллекции элементов, получает один объект, представляющий коллекцию. Так как один объект не может быть отсортирован, возвращает всю коллекцию без изменений.
Type: | PSObject |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Property
Задает имена свойств, которые используются для сортировки объектов. Разрешено использовать подстановочные знаки.
Объекты сортируются на основе значений свойств. Если свойство не указано, выполняет сортировку по свойствам по умолчанию для типа объекта или самих объектов.
Используйте запятые для разделения нескольких свойств. Несколько свойств можно отсортировать по возрастанию, по убыванию или по сочетанию порядка сортировки. При указании нескольких свойств объекты сортируются по первому свойству. Если несколько объектов имеют одинаковое значение для первого свойства, эти объекты сортируются по второму свойству. Это продолжается до тех пор, пока не закончатся все указанные свойства или группы объектов.
Значение параметра Property может быть вычисляемым свойством. Чтобы создать вычисляемое свойство, используйте scriptblock или хэш-строку.
Ниже приведены допустимые ключи для хэш-таблицы.
- — или
- Или —
Дополнительные сведения см. в разделе about_Calculated_Properties.
Type: | Object |
Position: | |
Default value: | Default properties |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Stable
Отсортированные объекты доставляются в том порядке, в каком они были получены, если критерии сортировки равны.
Этот параметр был добавлен в PowerShell версии 6.2.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Top
Указывает количество объектов, которые необходимо получить с начала отсортированного массива объектов. Это приводит к стабильной сортировке.
Этот параметр появился в PowerShell 6.0.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Unique
Указывает, что удаляет дубликаты и возвращает только уникальные члены коллекции. Первый экземпляр уникального значения включается в отсортированные выходные данные.
Уникальность не учитывает регистр. Строки, отличающиеся только регистром символов, считаются одинаковыми.
Например, character и CHARACTER.
Type: | SwitchParameter |
Position: | Named |
Default value: | All |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Назначение домена DNS для сетевого адаптера
Чтобы назначить домен DNS для автоматического разрешения имен, нужно использовать метод SetDNSDomain класса Win32_NetworkAdapterConfiguration. Параметр Запрос со значением принимает строку WQL-запроса. Командлет вызывает метод, указанный для каждого экземпляра, возвращаемого запросом.
Фильтрация по необходима, так как даже в сети, которая использует только TCP/IP, некоторые конфигурации сетевых адаптеров на компьютере не являются истинными адаптерами TCP/IP. они являются общими программными элементами, поддерживающими RAS, VPN, QoS и другие службы для всех адаптеров и поэтому не имеют собственного адреса.
Создание новых элементов
Чтобы создать новый элемент в файловой системе, используйте командлет . Включите параметр Path с путем к элементу и параметр ItemType со значением или .
Например, чтобы создать каталог с именем в каталоге , введите:
Чтобы создать файл, измените значение параметра ItemType на . Например, чтобы создать каталог с именем в каталоге , введите:
Тот же метод можно использовать для создания нового раздела реестра. На самом деле, раздел реестра создать проще, так как единственный тип элементов в реестре Windows — это раздел. (Записи реестра — это свойства элемента.) Например, чтобы создать ключ с именем в подразделе, введите :
При вводе пути реестра не забудьте добавить двоеточие () в имена дисков Windows PowerShell — и . Без двоеточия PowerShell не распознает имя диска в пути.
Подробное описание
PowerShell защищает доступ к переменным, псевдонимам, функциям и дискам PowerShell (PSDrive), ограничивая их чтение и изменение. PowerShell использует правила области, чтобы непреднамеренно не изменять элемент, который не следует изменять.
Ниже приведены основные правила области.
-
Области могут вложиться. Внешняя область называется родительской. Все вложенные области являются дочерними областями этого родительского элемента.
-
Элемент отображается в области, в которой он был создан, и в любых дочерних областях, если вы явно не сделаете его закрытым.
-
Вы можете объявить переменные, псевдонимы, функции и диски PowerShell для области за пределами текущей области.
-
Элемент, созданный в области, можно изменить только в области, в которой он был создан, если только вы явно не укажет другую область.
Если вы создаете элемент в области, а элемент разделяет его имя с элементом в другой области, исходный элемент может быть скрыт под новым элементом, но он не переопределяется или не изменяется.
Родительские и дочерние области
Вы можете создать новую дочернюю область, вызвав скрипт или функцию. Область вызова является родительской областью. Вызываемая скрипт или функция является дочерней областью.
Вызываемые функции или скрипты могут вызывать другие функции, создавая иерархию дочерних областей, корневая область которой является глобальной.
Если вы явно не сделаете элементы закрытыми, элементы в родительской области доступны дочерней области. Однако элементы, создаваемые и изменяемые в дочерней области, не влияют на родительскую область, если только вы явно не укажете область при создании элементов.
Примечание
Функции из модуля не выполняются в дочерней области области вызова.
Модули имеют собственное состояние сеанса, связанное с глобальной областью.
Весь код модуля выполняется в иерархии областей, относящихся к модулю, с собственной корневой областью.
Вывод списка установленных исправлений
Список всех установленных исправлений можно получить с помощью Win32_QuickFixEngineering:
Этот класс возвращает список исправлений в следующем виде:
Для получения более кратких сведений нужно исключить некоторые свойства. Параметр Property в позволяет выбрать только идентификаторы HotFixID, однако на самом деле возвращается больше данных, так как по умолчанию отображаются все метаданные:
Дополнительные данные выводятся, так как параметр Property в ограничивает свойства, возвращаемые из экземпляров класса WMI, но не объекты, возвращаемые оболочке PowerShell. Командлет позволяет сократить возвращаемые выходные данные: