Содержание этого руководством
Раздел | Определение |
---|---|
Как создать поставщика Windows PowerShell | в этом разделе описано, как создать поставщик Windows PowerShell для Windows PowerShell. |
создание ведущего приложения Windows PowerShell | В этом разделе описывается написание ведущего приложения, управляющего пространством выполнения и написание ведущего приложения, реализующего собственный пользовательский узел. |
Как создать оснастку Windows PowerShell | В этом разделе описывается создание оснастки, которая используется для регистрации всех командлетов и поставщиков в сборке, а затем создание пользовательской оснастки. |
Создание оболочки консоли | В этом разделе описывается создание оболочки консоли, которая не является расширяемой. |
Основные понятия Windows PowerShell | в этом разделе содержатся общие сведения, которые помогут понять Windows PowerShell от точки зрения разработчика. |
Запуск скрипта
Перед запуском скрипта в Windows необходимо изменить политику выполнения PowerShell по умолчанию. Политика выполнения не применяется к PowerShell, работающей на платформах, отличных от Windows.
Политика выполнения по умолчанию запрещает выполнение всех скриптов, включая скрипты, которые вы пишете на локальном компьютере. Подробнее см. в разделе about_Execution_Policies.
Политика выполнения сохраняется в реестре, поэтому ее необходимо изменить только один раз на каждом компьютере.
Чтобы изменить политику выполнения, используйте следующую процедуру.
В командной строке введите:
или
Это изменение действует немедленно.
Чтобы запустить скрипт, введите полное имя и полный путь к файлу скрипта.
Например, чтобы запустить скрипт Get-ServiceLog.ps1 в каталоге C:\Scripts, введите:
Чтобы запустить скрипт в текущем каталоге, введите путь к текущему каталогу или используйте точку для представления текущего каталога, за которым следует обратная косая черта пути ().
Например, чтобы запустить скрипт ServicesLog.ps1 в локальном каталоге, введите:
Если скрипт имеет параметры, введите параметры и значения параметров после имени файла скрипта.
Например, следующая команда использует параметр ServiceName скрипта Get-ServiceLog для запроса журнала действий службы WinRM.
В качестве функции безопасности PowerShell не выполняет скрипты при двойном щелчке значка скрипта в проводник или при вводе имени скрипта без полного пути, даже если скрипт находится в текущем каталоге. Дополнительные сведения о выполнении команд и скриптов в PowerShell см. в about_Command_Precedence.
Запуск с помощью PowerShell
Начиная с PowerShell 3.0, можно запускать скрипты из проводник.
Чтобы использовать функцию «Запуск с помощью PowerShell», выполните следующие действия.
Запустите проводник, щелкните правой кнопкой мыши имя файла скрипта и выберите команду «Выполнить с помощью PowerShell».
Функция «Запуск с помощью PowerShell» предназначена для выполнения скриптов, которые не имеют необходимых параметров и не возвращают выходные данные в командную строку.
Дополнительные сведения см. в разделе about_Run_With_PowerShell.
Выполнение скриптов на других компьютерах
Чтобы запустить скрипт на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета .
Введите путь и имя файла скрипта в качестве значения параметра FilePath . Скрипт должен находиться на локальном компьютере или в каталоге, к которому локальный компьютер может получить доступ.
Следующая команда запускает скрипт на удаленных компьютерах с именами Server01 и Server02.
Передача аргументов в собственные команды
При выполнении собственных команд из PowerShell аргументы сначала анализируются с помощью PowerShell. Затем проанализированные аргументы объединяются в одну строку с каждым параметром, разделенным пробелом.
Например, следующая команда вызывает программу.
Чтобы выполнить эту команду в PowerShell 2.0, необходимо использовать escape-символы, чтобы предотвратить неправильное интерпретацию круглых скобок PowerShell.
Токен остановки синтаксического анализа
Начиная с PowerShell 3.0, можно использовать токен остановки анализа (), чтобы остановить интерпретацию входных данных в PowerShell в виде команд или выражений PowerShell.
Примечание
Токен остановки анализа предназначен только для использования на платформах Windows.
При вызове собственной команды поместите токен остановки синтаксического анализа перед аргументами программы. Этот метод гораздо проще, чем использовать escape-символы для предотвращения неправильной интерпретации.
При обнаружении маркера остановки синтаксического анализа PowerShell обрабатывает оставшиеся символы в строке как литерал. Единственная интерпретация заключается в замене значений переменных среды, использующих стандартную нотацию Windows, например .
PowerShell отправляет в программу следующую командную строку:
Маркер остановки синтаксического анализа действует только до следующей новой строки или символа конвейера. Нельзя использовать символ продолжения () для расширения его эффекта или использования разделителя команд () для завершения его действия.
Кроме ссылок на переменные среды, нельзя внедрить в команду другие динамические элементы. Экранирование символа как , способ выполнения внутри пакетных файлов, не поддерживается. маркеры неизменно расширяются. Если не ссылается на определенную переменную среды, маркер передается как есть.
Вы не можете использовать перенаправление потоков (например ), так как они передаются в качестве аргументов в целевую команду.
Использование токена остановки синтаксического анализа также является лучшим способом обеспечить правильную обработку строк, передаваемых в кавычки в виде параметров или файлов пакета Windows ( или ) файлов.
В следующем примере первый шаг выполняет команду без использования токена остановки синтаксического анализа. PowerShell вычисляет строку с кавычками и передает значение (без кавычек), что приводит к ошибке.
Примечание
Некоторые команды в системах Windows реализуются как пакетный файл Windows. Например, эта команда для Azure CLI является пакетным файлом Windows.
Передача аргументов, содержащих символы кавычки
Некоторые собственные команды ожидают аргументы, содержащие символы кавычек. Как правило, синтаксический анализ командной строки PowerShell удаляет предоставленный символ кавычки. Затем проанализированные аргументы объединяются в одну строку с каждым параметром, разделенным пробелом. Затем эта строка назначается свойству Arguments объекта. Кавычки в строке должны быть экранироваться с помощью дополнительных кавычек или символов обратной косой черты ().
Примечание
Символ обратной косой черты () не распознается как escape-символ PowerShell. Это escape-символ, используемый базовым API для .
Дополнительные сведения о требованиях escape см. в документации по ProcessStartInfo.Arguments.
В следующих примерах используется средство. Это средство используется тестами Pester в исходном репозитории PowerShell. Цель этих примеров — передать путь к каталогу в собственную команду, чтобы он получил путь в виде строки в кавычках.
Параметр echoargs отображает значения, полученные в качестве аргументов исполняемому файлу. Это средство можно использовать для проверки правильности экранирования символов в аргументах.
Выходные данные одинаковы для всех примеров:
Вы можете выполнить сборку из исходного кода. См. раздел TestExe.
PowerShellGet
PowerShellGet — это модуль PowerShell, который содержит команды для обнаружения, установки, публикации и обновления модулей PowerShell (и других артефактов) в репозиторий NuGet или из него. PowerShellGet поставляется с PowerShell версии 5.0 и выше. Он доступен в виде отдельного скачиваемого файла для PowerShell версии 3.0 и более поздних версий.
Корпорация Майкрософт размещает в Интернете репозиторий NuGet, который называется Коллекция PowerShell.
Хотя этот репозиторий размещается Майкрософт, большинство модулей, которые в нем содержатся, пишутся не корпорацией. Любой код, полученный из коллекции PowerShell, необходимо тщательно проверить в изолированной тестовой среде, прежде чем считать его подходящим для использования в рабочей среде.
Многим компаниям понадобится разместить собственный внутренний репозиторий NuGet, где они могут публиковать только внутренние модули, а также модули, загруженные ими из других источников, после того как они проверят, что эти модули не являются вредоносными.
Используйте командлет , входящий в состав модуля PowerShellGet, чтобы найти модуль в коллекции PowerShell, который я написал, с именем MrToolkit.
При первом использовании одной из команд из модуля PowerShellGet вам будет предложено установить поставщик NuGet.
Чтобы установить модуль MrToolkit, передайте предыдущую команду в .
Так как коллекция PowerShell является недоверенным репозиторием, она предложит вам подтвердить установку модуля.
Для чего предназначена оболочка PowerShell?
С тех пор, как PowerShell применялась только в Windows, область ее действия значительно расширилась. Она по-прежнему используется для автоматизации задач Windows, но сейчас с ней можно работать для выполнения различных задач, некоторые из которых приведены ниже.
- Управление облаком. PowerShell можно использовать для управления облачными ресурсами. Например, можно получать сведения об облачных ресурсах, а также обновлять ресурсы или развертывать новые.
- CI/CD. PowerShell можно также использовать в рамках конвейера непрерывной интеграции и непрерывного развертывания.
- Автоматизация задач для Active Directory и Exchange. PowerShell можно использовать для автоматизации практически любой задачи в Windows, например создание пользователей в Active Directory и почтовых ящиков в Exchange.
Существует гораздо больше областей использования, но предыдущий список дает понять, что PowerShell удалось добиться значительного прогресса.
Подробное описание
PowerShell 5.0 добавляет формальный синтаксис для определения классов и других пользовательских типов. Добавление классов позволяет разработчикам и ИТ-специалистам использовать PowerShell для широкого спектра вариантов использования. Это упрощает разработку артефактов PowerShell и ускоряет покрытие поверхностей управления.
Объявление класса — это схема, используемая для создания экземпляров объектов во время выполнения. При определении класса имя класса — это имя типа. Например, если объявить класс с именем Device и инициализировать переменную для нового экземпляра Device, это объект или экземпляр типа Device. Каждый экземпляр устройства может иметь разные значения в своих свойствах.
Подробное описание
Все типы значений можно хранить в переменных PowerShell. Например, сохраните результаты команд и сохраните элементы, используемые в командах и выражениях, таких как имена, пути, параметры и значения.
Переменная — это единица памяти, в которой хранятся значения. В PowerShell переменные представлены текстовыми строками, начинающимися со знака доллара (), например , или .
Имена переменных не чувствительны к регистру и могут содержать пробелы и специальные символы. Но имена переменных, включающие специальные символы и пробелы, трудно использовать и следует избегать. Дополнительные сведения см. в .
В PowerShell существует несколько различных типов переменных.
-
Созданные пользователем переменные: созданные пользователем переменные создаются и обслуживаются пользователем. По умолчанию переменные, создаваемые в командной строке PowerShell, существуют только тогда, когда открыто окно PowerShell. При закрытии окон PowerShell переменные удаляются. Чтобы сохранить переменную, добавьте ее в профиль PowerShell. Вы также можете создавать переменные в скриптах с глобальной областью, сценарием или локальной областью.
-
Автоматические переменные: автоматические переменные хранят состояние PowerShell. Эти переменные создаются с помощью PowerShell, и PowerShell изменяет их значения в соответствии с требованиями к их точности. Пользователи не могут изменить значение этих переменных. Например, переменная сохраняет путь к каталогу установки PowerShell.
Дополнительные сведения, список и описание автоматических переменных см. в about_Automatic_Variables.
-
Переменные предпочтения: переменные предпочтений хранят пользовательские настройки для PowerShell. Эти переменные создаются PowerShell и заполняются значениями по умолчанию. Пользователи могут изменять значения этих переменных. Например, переменная определяет максимальное количество записей в журнале сеансов.
Дополнительные сведения, список и описание переменных предпочтения см. в about_Preference_Variables.
Выходные данные в методах класса
Методы должны иметь определенный тип возвращаемого значения. Если метод не возвращает выходные данные, тип выходных данных должен быть .
В методах класса объекты не отправляются в конвейер, кроме упомянутых в инструкции . Нет случайных выходных данных в конвейер из кода.
Примечание
Это существенно отличается от того, как функции PowerShell обрабатывают выходные данные, где все идет в конвейер.
Неустранимые ошибки, записанные в поток ошибок внутри метода класса, не передаются. Необходимо использовать для отображения завершающего ошибки.
С помощью командлетов вы по-прежнему можете записывать выходные потоки PowerShell из метода класса. Однако этого следует избегать, чтобы метод выпустил объекты только с помощью инструкции .
Использование переменных в командах и выражениях
Чтобы использовать переменную в команде или выражении, введите имя переменной перед знаком доллара ().
Если имя переменной и знак доллара не заключены в кавычки или если они заключены в двойные кавычки () знаки, значение переменной используется в команде или выражении.
Если имя переменной и знак доллара заключены в одинарные кавычки () знаки, имя переменной используется в выражении.
Дополнительные сведения об использовании кавычек в PowerShell см. в about_Quoting_Rules.
В этом примере возвращается значение переменной , которая является путем к файлу профиля пользователя PowerShell в консоли PowerShell.
В этом примере показаны две команды, которые могут открыть профиль PowerShell в notepad.exe. В примере с двойными кавычками () используется значение переменной.
В следующих примерах используются одноцитарные () знаки, которые обрабатывают переменную как литеральный текст.
Фильтрация по левому краю
Результаты команд, приведенные в этой главе, отфильтрованы по подмножеству. Например, использовался с параметром Name для фильтрации списка служб, которые были возвращены только службе времени Windows.
В конвейере всегда нужно как можно раньше отфильтровать результаты по параметрам поиска. Это выполняется с помощью параметров в первой команде или той, которая расположена в крайнем левом углу.
Иногда этот способ называется фильтрация слева.
В следующем примере используется параметр Name для немедленной фильтрации результатов только в службе времени Windows.
Нередко встречаются примеры, в которых команда передается для выполнения фильтрации.
В первом примере фильтрация выполняется в источнике и результаты возвращаются только для службы времени Windows.
Во втором примере возвращаются все службы, а затем они передаются другой команде для выполнения фильтрации
Хотя это может быть не так важно в следующем примере, но представьте, что вы запрашиваете список пользователей Active Directory. Вы точно хотите вернуть данные для нескольких тысяч учетных записей пользователей из Active Directory только для передачи их в другую команду, которая фильтрует учетные записи в небольшом подмножестве? Я советую всегда выполнять фильтрацию по левому краю, даже если это кажется неважным
Вы привыкнете использовать этот способ и будете выполнять фильтрацию по левому краю автоматически, когда это действительно важно.
Однажды мне кто-то сказал, что порядок, в котором указываются команды, не имеет значения. Это далеко от истины. Порядок, в котором указываются команды, действительно важен при выполнении фильтрации. Например, рассмотрим ситуацию, при котором вы используете , чтобы выбрать только несколько свойств, и для фильтрации по свойствам, которые не будут находиться в выделенном фрагменте. В этом сценарии фильтрация должна выполняться первой, иначе свойство не будет существовать в конвейере при попытке выполнить фильтрацию.
Команда в предыдущем примере не возвращает результаты, так как свойство CanStopAndContinue не существует при передаче результатов из в . Именно это свойство было «не выбрано». По сути, оно было отфильтровано. Обратная последовательность и выдает нужные результаты.
Изучение объектов с помощью Get-Member
Научившись находить нужный командлет, вы, возможно, захотите узнать больше о результате его выполнения, то есть о выходных данных. Выходные данные представляют интерес по нескольким причинам, в число которых входят следующие:
- Автономность. Можно выполнить всего одну команду и отобразить результаты в каком-либо отчете. Вопрос в том, какой результат выдает команда: подходящий или требующий изменений.
- Использование в конвейере. В PowerShell распространена возможность включения нескольких команд в конвейер для получения данных, фильтрации и преобразования. Чтобы команда подходила для использования в конвейере, необходимо иметь представление о ее входных и выходных данных. Суть в том, что выходные данные команды являются входными данными другой команды.
Командлет отображает тип, свойства и методы объекта результата. Передайте выходные данные, которые требуется изучить, в командлет .
В выходных данных отображается возвращаемый тип, а затем — все свойства и методы объекта. Вот фрагмент такого результата:
Как правило, объект обычно имеет множество свойств и методов, поэтому чтобы упростить поиск нужного компонента, можно отфильтровать результаты. С помощью параметра можно указать, к примеру, отображение всех методов, как показано в приведенном ниже примере.
При получении ответа PowerShell обычно выводит лишь несколько свойств. В приведенном выше ответе отображаются , и . Чтобы изменить эти выходные данные, можно воспользоваться командлетом . позволяет указать необходимые для отображения столбцы. В командлете можно указать имя столбца, список с разделителями-запятыми или подстановочный знак . Ниже приведен пример использования командлета используется для извлечения и .
Поиск по типу
Другой способ поиска нужной команды заключается в поиске команд, работающих с одним и тем же типом. При выполнении вы получили возвращаемый тип в виде первой строки ответа, как показано ниже:
Теперь вы можете использовать этот тип и искать команды следующим образом:
Результатом выполнения приведенной выше команды является список команд, которые работают исключительно с типом :
Как видите, зная тип команды, можно значительно сузить область поиска интересующих команд.
Поиск команд с помощью командлета Get-Command
Командлет возвращает список всех доступных команд, установленных в системе.
Этот список довольно большой. Чтобы упростить поиск команд, рекомендуется ограничить объем возвращаемой информации. Можно отфильтровать ответ с помощью параметров или вспомогательных командлетов.
Фильтрация по имени
Выходные данные можно отфильтровать с помощью различных параметров. В этом случае фильтрация работает как запрос определенного свойства в команде. Суть в том, что необходимо указать свойство, которое будет условием фильтрации, после чего следует задать строку, с которой нужно выполнить сопоставление. В итоге вы получите сравнение, которое выглядит следующим образом:
На этом этапе фильтрация пытается выполнить точное сопоставление с указанным строковым аргументом.
Если при сравнении требуется больший уровень гибкости, можно использовать подстановочный знак , который выполняет сопоставление шаблону. Следующий код будет искать все команды, имена которых заканчиваются «process»:
Здесь для фильтрации используется параметр . Кроме , можно фильтровать, к примеру, по и .
Фильтрация по существительным и глаголам
Вы узнали, как можно выполнять фильтрацию по . Но есть и другие параметры для фильтрации. Глагол и существительное также могут быть условиями фильтра. Такая фильтрация используется для части имени команды.
-
Фильтрация по глаголу. Глагол в имени команды является ее левой частью. В команде частью глагола является . Для фильтрации по глагольной части укажите в качестве параметра, как показано ниже:
Приведенная выше команда выводит список всех команд, частью глагола в которых является .
-
Фильтрация по существительному. Правая часть команды — это часть существительного. Глагол должен входить в список глаголов, возвращаемых при вызове , а существительное может быть любым. В команде часть существительного представлена значением . Чтобы выполнить фильтрацию по существительному, укажите в качестве параметра и строкового аргумента, как показано ниже:
При фильтрации только по глаголу или только по существительному может быть выведен слишком большой результирующий набор. Чтобы сузить область поиска, рекомендуется объединить два параметра, как показано в примере ниже:
Результат выглядит следующим образом:
Таким образом, вы немного сократили объем выходных данных, так как знали глагол и то, что он вызывает.
Использование вспомогательных командлетов для фильтрации результатов
Выполнять фильтрацию можно не только с помощью параметров, но и с помощью команд. Ниже приведены некоторые команды, которые могут работать в качестве фильтров:
-
. Это очень универсальная команда для выбора конкретных свойств из одного объекта или нескольких. А с помощью ее параметров можно ограничить возвращаемый ответ.
Ниже приведен пример использования для запроса ограниченного числа записей:Результатом выполнения приведенной выше команды являются три первые верхние команды. Результат имеет следующий вид:
Стоит рассмотреть эту команду более подробно, так как с ее помощью можно выполнять гораздо больше задач (см. статью Select-Object).
-
. Помогает выбрать объекты из коллекции на основе значений свойств. Команда принимает выражение, в котором можно указать, какие столбцы должны соответствовать каким значениям. Чтобы найти все объекты process, где начинается с , можно использовать следующим образом:
В примере выше командлет создает коллекцию объектов process. Чтобы отфильтровать ответ, нужно передать команду через конвейер. Передача через конвейер означает, что две или более команды соединены с помощью символа вертикальной черты . Выходные данные одной команды служат входными данными для следующей команды. Чтение выполняется слева направо. использует для фильтрации выражение. Выражение использует оператор и строковый аргумент, который содержит выражение с подстановочными знаками.
Приступая к работе
Майкрософт
Name Used (GB) Free (GB) Provider Root ---- --------- --------- -------- ---- Alias Alias C 16.56 63.44 FileSystem C:\ cert Certificate \ D .11 53.92 FileSystem D:\ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan
Set-Location HKLM: # Или, если вы из людей подосёвее, набирайте cd HKLM:
SKC VC Name Property --- -- ---- -------- 2 0 BCD00000000 {} 4 0 HARDWARE {} 1 0 SAM {} Get-ChildItem : Requested registry access is not allowed. At line:1 char:3 + ls <<<< -force + CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACHINE\SECURITY:St ring) , SecurityException + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.Power Shell.Commands.GetChildItemCommand 35 0 SOFTWARE {} 8 0 SYSTEM {}
Подробное описание
Вы можете создавать объекты в 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: выбирает свойства объекта. Вы можете использовать для создания пользовательских и вычисляемых свойств для уже созданного экземпляра объекта.
В этой статье рассматриваются следующие дополнительные методы:
- Путем вызова конструктора типа с помощью статического метода
- Путем ввода хэш-таблиц имен свойств и значений свойств
Подробное описание
Вы можете создавать объекты в 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: выбирает свойства объекта. Вы можете использовать для создания пользовательских и вычисляемых свойств для уже созданного экземпляра объекта.
В этой статье рассматриваются следующие дополнительные методы:
- Путем вызова конструктора типа с помощью статического метода
- Путем ввода хэш-таблиц имен свойств и значений свойств
Изучение объектов с помощью Get-Member
Научившись находить нужный командлет, вы, возможно, захотите узнать больше о результате его выполнения, то есть о выходных данных. Выходные данные представляют интерес по нескольким причинам, в число которых входят следующие:
- Автономность. Можно выполнить всего одну команду и отобразить результаты в каком-либо отчете. Вопрос в том, какой результат выдает команда: подходящий или требующий изменений.
- Использование в конвейере. В PowerShell распространена возможность включения нескольких команд в конвейер для получения данных, фильтрации и преобразования. Чтобы команда подходила для использования в конвейере, необходимо иметь представление о ее входных и выходных данных. Суть в том, что выходные данные команды являются входными данными другой команды.
Командлет отображает тип, свойства и методы объекта результата. Передайте выходные данные, которые требуется изучить, в командлет .
В выходных данных отображается возвращаемый тип, а затем — все свойства и методы объекта. Вот фрагмент такого результата:
Как правило, объект обычно имеет множество свойств и методов, поэтому чтобы упростить поиск нужного компонента, можно отфильтровать результаты. С помощью параметра можно указать, к примеру, отображение всех методов, как показано в приведенном ниже примере.
При получении ответа PowerShell обычно выводит лишь несколько свойств. В приведенном выше ответе отображаются , и . Чтобы изменить эти выходные данные, можно воспользоваться командлетом . позволяет указать необходимые для отображения столбцы. В командлете можно указать имя столбца, список с разделителями-запятыми или подстановочный знак . Ниже приведен пример использования командлета используется для извлечения и .
Поиск по типу
Другой способ поиска нужной команды заключается в поиске команд, работающих с одним и тем же типом. При выполнении вы получили возвращаемый тип в виде первой строки ответа, как показано ниже:
Теперь вы можете использовать этот тип и искать команды следующим образом:
Результатом выполнения приведенной выше команды является список команд, которые работают исключительно с типом :
Как видите, зная тип команды, можно значительно сузить область поиска интересующих команд.
Упражнение. Поиск связанных команд
Цель этого упражнения — получить дополнительные сведения о команде. В итоге вы также узнаете, с каким типом работает команда, и какие другие аналогичные команды работают с тем же типом.
-
Запустите оболочку PowerShell.
-
Выполните команду .
Результат будет примерно таким:
Вы получаете типы, возвращаемые командой . Теперь вы можете узнать, какая другая команда также работает с этими типами.
-
Выполните команду .
Результат будет примерно таким:
Поздравляем! Вы смогли найти другие команды, которые работают с одним и тем же типом .
Использование является хорошей отправной точкой, чтобы понять, какие другие команды следует изучить дальше.
Имена переменных, включающие специальные символы
Имена переменных начинаются со знака доллара () и могут включать буквенно-цифровые символы и специальные символы. Длина имени переменной ограничена только доступной памятью.
Рекомендуется, чтобы имена переменных включали только буквенно-цифровые символы и символ подчеркивания (). Имена переменных, включающие пробелы и другие специальные символы, трудно использовать и следует избегать.
Буквенно-цифровые имена переменных могут содержать следующие символы:
- Символы Юникода из этих категорий: Lu, Ll, Lt, Lm, Lo или Nd.
- Символ подчеркивания ().
- Знак вопроса () символ.
В следующем списке содержатся описания категорий Юникода. Дополнительные сведения см. в разделе UnicodeCategory.
- Lu — UppercaseLetter
- Ll — LowercaseLetter
- Lt — TitlecaseLetter
- Lm — ModifierLetter
- Lo — OtherLetter
- Nd — DecimalDigitNumber
Чтобы создать или отобразить имя переменной, включающее пробелы или специальные символы, заключите имя переменной с фигурными скобками () символами.
Фигурные скобки направляют PowerShell для интерпретации символов имени переменной как литералы.
Имена специальных переменных символов могут содержать следующие символы:
- Любой символ Юникода со следующими исключениями:
- Закрывающая фигурная скобка () (U+007D).
- Символ обратной черты () (U+0060). Обратная черта используется для экранирования символов Юникода, поэтому они обрабатываются как литералы.
PowerShell имеет зарезервированные переменные, такие как , и содержащие буквенно-цифровые и специальные символы. Дополнительные сведения см. в статье about_Automatic_Variables.
Например, следующая команда создает переменную с именем . Фигурные скобки () необходимы, так как имя переменной включает специальный символ дефиса ().
Следующая команда получает дочерние элементы в каталоге, представленном переменной среды.
Чтобы ссылаться на имя переменной, включающую фигурные скобки, заключите имя переменной в фигурные скобки и используйте символ обратного ввода для экранирования фигурных скобок. Например, чтобы создать переменную именованного типа: