Поделиться через


Глава 2 — Система справки

В эксперименте, предназначенном для оценки знаний в PowerShell, две отдельные группы ИТ-специалистов — начинающих и экспертов — сначала дали письменный экзамен без доступа к компьютеру. Удивительно, оценка теста указала сопоставимые навыки в обеих группах. Затем был проведен повторяющий первый тест, но с одним ключевым различием: участники имели доступ к автономному компьютеру, оснащённому PowerShell. Результаты показали значительный разрыв навыков между двумя группами на этот раз.

Какие факторы способствовали результатам, наблюдаемых между двумя оценками?

Эксперты не всегда знают ответы, но они знают, как выяснить ответы.

Результаты, наблюдаемые в результатах двух тестов, были потому, что эксперты не запоминают тысячи команд PowerShell. Вместо этого они отлично используют систему справки в PowerShell, что позволяет им обнаруживать и разбираться в использовании команд при необходимости.

Стать опытным в системе справки является ключом к успеху в PowerShell.

Я слышал Джеффри Snover, создатель PowerShell, поделиться аналогичной историей несколько раз.

Возможность обнаружения

Скомпилированные команды в PowerShell называются командлетами, которые называются "command-let", а не "CMD-let". Соглашение об именовании для командлетов следует формату Глагол-Существительное, чтобы их было легко находить. Например, командлет определяет Get-Process , какие процессы выполняются, и Get-Service является командлетом для получения списка служб. Функции, также известные как командлеты скриптов и псевдонимы, являются другими типами команд PowerShell, которые рассматриваются далее в этой книге. Термин "Команда PowerShell" описывает любую команду в PowerShell независимо от того, является ли она командлетом, функцией или псевдонимом.

Вы также можете запускать собственные команды операционной системы из PowerShell, например традиционные программы командной строки, такие ping.exe как и ipconfig.exe.

Три основных командлета в PowerShell

  • Get-Help
  • Get-Command
  • Get-Member (описано в главе 3)

Я часто спрашиваю: "Как вы узнаете, какие команды находятся в PowerShell?". Get-Command Оба Get-Help и являются бесценными ресурсами для обнаружения и понимания команд в PowerShell.

Получить-Помощь

Первое, что необходимо знать о системе справки в PowerShell, заключается в том, как использовать Get-Help командлет.

Get-Help — это многоцелевая команда, которая помогает узнать, как использовать команды после их поиска. Вы также можете использовать Get-Help для поиска команд, но в другом и более косвенном способе по сравнению с Get-Command.

При использовании Get-Help для поиска команд сначала выполняется поиск команд с использованием подстановочных знаков на основе вашего ввода. Если не найдено совпадений, выполняется полный полнотекстовый поиск по всем статьям справки PowerShell на вашей системе. Если это также не дает результатов, выводится ошибка.

Вот как использовать Get-Help для просмотра содержимого справки для командлета Get-Help .

Get-Help -Name Get-Help

Начиная с версии 3.0 PowerShell, содержимое справки не поставляется с операционной системой. При первом запуске Get-Help сообщение запрашивает, нужно ли скачать файлы справки PowerShell на компьютер.

Выбор "Да", нажав клавишу Y, выполняет Update-Help командлет, загружая содержимое справки.

Do you want to run Update-Help?
The Update-Help cmdlet downloads the most current Help files for Windows
PowerShell modules, and installs them on your computer. For more information
about the Update-Help cmdlet, see
https:/go.microsoft.com/fwlink/?LinkId=210614.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

Если вы не получаете это сообщение, запуститесь Update-Help из сеанса PowerShell с повышенными привилегиями, запущенного от имени администратора.

После завершения обновления отобразится статья справки.

Найдите время, чтобы запустить пример на своем компьютере, просмотрите выходные данные и наблюдайте, как система справки упорядочивает информацию.

  • ИМЯ
  • СИНОПСИС
  • СИНТАКСИС
  • ОПИСАНИЕ
  • Связанные ссылки
  • ПРИМЕЧАНИЯ

При просмотре содержимого следует помнить, что статьи справки часто содержат огромный объем информации, и то, что вы видите по умолчанию, не является полной статьей справки.

Параметры

При выполнении команды в PowerShell может потребоваться предоставить дополнительные сведения или входные данные в команду. Параметры позволяют указать параметры и аргументы, которые изменяют поведение команды. В разделе СИНТАКСИС в каждой статье справки излагаются доступные параметры для команды.

Get-Help имеет несколько параметров, которые можно указать, чтобы вернуть всю статью справки или часть статьи, относящуюся к команде. Чтобы просмотреть все доступные параметры для Get-Help, см. раздел «СИНТАКСИС» в статье справки, как показано в следующем примере.

...
SYNTAX
    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Full]
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Detailed
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Examples
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Online [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Parameter <System.String> [-Path <System.String>]
    [-Role <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] [-Path <System.String>] [-Role <System.String[]>]
    -ShowWindow [<CommonParameters>]
...

Наборы параметров

При просмотре раздела СИНТАКСИС для Get-Help, обратите внимание, что информация, похоже, повторяется шесть раз. Каждый из этих блоков представляет собой отдельный набор параметров, указывающий на то, что командлет содержит шесть отдельных наборов параметров. Более подробный взгляд показывает, что каждый набор параметров содержит по крайней мере один уникальный параметр, что отличается от других.

Наборы параметров являются взаимоисключающими. После указания уникального параметра, который существует только в одном наборе параметров, PowerShell ограничивает использование параметров, содержащихся в этом наборе параметров. Например, нельзя использовать полные и подробные параметры Get-Help вместе, так как они относятся к разным наборам параметров.

Каждый из следующих параметров принадлежит другому набору параметров для командлета Get-Help .

  • Полный
  • Подробный
  • Примеры
  • Онлайн
  • Параметр
  • ShowWindow

Синтаксис команды

Если вы не знакомы с PowerShell, понимание криптографических сведений , характеризуемых квадратными и угловыми скобками, в разделе СИНТАКСИСа может показаться подавляющим. Однако изучение этих элементов синтаксиса является важным для того, чтобы стать опытным с помощью PowerShell. Чем чаще используется система справки PowerShell, тем проще запоминать все нюансы.

Просмотрите синтаксис командлета Get-EventLog .

Get-Help Get-EventLog

В следующих результатах представлена соответствующая часть статьи справки.

...
SYNTAX
    Get-EventLog [-LogName] <System.String> [[-InstanceId]
    <System.Int64[]>] [-After <System.DateTime>] [-AsBaseObject] [-Before
    <System.DateTime>] [-ComputerName <System.String[]>] [-EntryType {Error
    | Information | FailureAudit | SuccessAudit | Warning}] [-Index
    <System.Int32[]>] [-Message <System.String>] [-Newest <System.Int32>]
    [-Source <System.String[]>] [-UserName <System.String[]>]
    [<CommonParameters>]

    Get-EventLog [-AsString] [-ComputerName <System.String[]>] [-List]
    [<CommonParameters>]
...

Сведения о синтаксисе включают пары квадратных скобок ([]). В зависимости от их использования эти квадратные скобки служат двумя разными целями.

  • Элементы, заключенные в квадратные скобки, являются необязательными.
  • Пустой набор квадратных скобок после типа данных, например <string[]>, указывает, что параметр может принимать несколько значений, передаваемых в виде массива или объекта коллекции.

Позиционные параметры

Некоторые командлеты предназначены для принятия позиционных параметров. Позиционные параметры позволяют указать значение без указания имени параметра. При использовании параметра позиционально необходимо указать его значение в правильной позиции в командной строке. Вы можете найти позиционные сведения для параметра в разделе ПАРАМЕТРОВ статьи справки команды. При явном указании имен параметров можно использовать параметры в любом порядке.

Для командлета первый параметр в первом наборе Get-EventLog параметров — LogName. LogName заключен в квадратные скобки, указывая, что это позиционный параметр.

Get-EventLog [-LogName] <System.String>

Так как LogName является позициальным параметром, его можно указать по имени или позиции. Согласно угловым скобкам после имени параметра, значение для LogName должно быть одной строкой. Отсутствие квадратных квадратных скобок, включающих имя параметра и тип данных, указывает, что LogName является обязательным параметром в этом конкретном наборе параметров.

Второй параметр в этом наборе параметров — InstanceId. Имя параметра и тип данных полностью заключены в квадратные скобки, что означает, что InstanceId является необязательным параметром.

[[-InstanceId] <System.Int64[]>]

Кроме того, InstanceId имеет собственную пару квадратных скобок, указывающую, что это позиционный параметр, аналогичный параметру LogName . После типа данных пустой набор квадратных скобок означает, что InstanceId может принимать несколько значений.

Параметры переключения

Параметр, который не требует значения, называется параметром switch. Вы можете легко определить параметры коммутатора, так как нет типа данных после имени параметра. При указании параметра коммутатора его значение равно true. Если параметр коммутатора не указан, его значение равно false.

Второй набор параметров включает параметр List , который является параметром switch. При указании параметра List он возвращает список журналов событий на локальном компьютере.

[-List]

Упрощенный подход к синтаксису

Существует более удобный метод для получения той же информации, что и синтаксис криптографических команд для некоторых команд, за исключением обычного английского языка. PowerShell возвращает полную статью справки при использовании Get-Help с полным параметром, что упрощает понимание использования команды.

Get-Help -Name Get-Help -Full

Запустите пример на компьютере, просмотрите выходные данные и посмотрите, как система справки упорядочивает информацию.

  • ИМЯ
  • СИНОПСИС
  • СИНТАКСИС
  • ОПИСАНИЕ
  • ПАРАМЕТРЫ
  • ВХОДНЫЕ ДАННЫЕ
  • ВЫХОДНЫЕ ДАННЫЕ
  • ПРИМЕЧАНИЯ
  • ПРИМЕРЫ
  • Связанные ссылки

Указав полный параметр с командлетом Get-Help , выходные данные содержат несколько дополнительных разделов. В этих разделах ПАРАМЕТРЫ часто содержат подробное описание каждого параметра. Однако объем этой информации зависит от конкретной команды, которую вы изучаете.

...
    -Detailed <System.Management.Automation.SwitchParameter>
        Adds parameter descriptions and examples to the basic help display.
        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Examples <System.Management.Automation.SwitchParameter>
        Displays only the name, synopsis, and examples. This parameter is
        effective only when the help files are installed on the computer. It
        has no effect on displays of conceptual ( About_ ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Full <System.Management.Automation.SwitchParameter>
        Displays the entire help article for a cmdlet. Full includes
        parameter descriptions and attributes, examples, input and output
        object types, and additional notes.

        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false
...

Когда вы выполнили предыдущую команду, чтобы отобразить справку для команды Get-Help, вы, вероятно, заметили, что выходные данные пролистывались слишком быстро, чтобы прочитать их.

Если вы используете консоль PowerShell, терминал Windows или VS Code и хотите просмотреть статью справки, эта функция может быть полезна. Он передает выходные данные из Get-Help в more.com, отображая по одной странице содержимого справки за раз. Я рекомендую использовать функцию help вместо командлета Get-Help, так как это обеспечивает лучший пользовательский опыт и требует меньше ввода.

Примечание.

ISE не поддерживает использование more.com, поэтому выполнение help работает так же, как Get-Help.

Выполните каждую из следующих команд в PowerShell на компьютере.

Get-Help -Name Get-Help -Full
help -Name Get-Help -Full
help Get-Help -Full

Вы заметили какие-либо изменения в выходных данных при выполнении предыдущих команд?

В предыдущем примере первая строка использует Get-Help командлет, вторая использует help функцию, а третья строка пропускает параметр Name при использовании help функции. Так как Имя является позициальным параметром, третий пример использует его позицию вместо явного указания имени параметра.

Разница заключается в том, что последние две команды отображают выходные данные одной страницы за раз. При использовании функции help нажмите клавишу ПРОБЕЛ, чтобы отобразить следующую страницу содержимого или Q, чтобы выйти. Если вам нужно завершить выполнение любой команды в интерактивном режиме в PowerShell, нажмите клавиши CTRL+C.

Чтобы быстро найти сведения о конкретном параметре, используйте параметр Parameter . Этот подход возвращает содержимое, содержащее только сведения о параметрах, а не всю статью справки. Это самый простой способ найти сведения о конкретном параметре.

В следующем примере функция help с параметром Parameter используется, чтобы вернуть информацию из статьи помощи для параметра Name в Get-Help.

help Get-Help -Parameter Name

Сведения справки показывают, что параметр Name является позиционным и должен быть указан в первой позиции (нулевой позиции) при указании позиции.

-Name <System.String>
    Gets help about the specified command or concept. Enter the name of a
    cmdlet, function, provider, script, or workflow, such as `Get-Member`,
    a conceptual article name, such as `about_Objects`, or an alias, such
    as `ls`. Wildcard characters are permitted in cmdlet and provider
    names, but you can't use wildcard characters to find the names of
    function help and script help articles.

    To get help for a script that isn't located in a path that's listed in
    the `$env:Path` environment variable, type the script's path and file
    name.

    If you enter the exact name of a help article, `Get-Help` displays the
    article contents.

    If you enter a word or word pattern that appears in several help
    article titles, `Get-Help` displays a list of the matching titles.

    If you enter any text that doesn't match any help article titles,
    `Get-Help` displays a list of articles that include that text in their
    contents.

    The names of conceptual articles, such as `about_Objects`, must be
    entered in English, even in non-English versions of PowerShell.

    Required?                    false
    Position?                    0
    Default value                None
    Accept pipeline input?       True (ByPropertyName)
    Accept wildcard characters?  true

Параметр Name ожидает строковое значение, определяемое типом данных рядом <String> с именем параметра.

Существует несколько других параметров, при помощи Get-Help которых можно вернуть подмножество справочной статьи. Чтобы узнать, как они работают, выполните следующие команды на компьютере.

Get-Help -Name Get-Command -Full
Get-Help -Name Get-Command -Detailed
Get-Help -Name Get-Command -Examples
Get-Help -Name Get-Command -Online
Get-Help -Name Get-Command -Parameter Noun
Get-Help -Name Get-Command -ShowWindow

Обычно используется help <command name> с параметром Full или Online . Если у вас есть интерес только к примерам, используйте параметр Examples . Если у вас есть только интерес к конкретному параметру, используйте параметр Parameter .

При использовании параметра ShowWindow отображается содержимое справки в отдельном окне поиска. Это окно можно переместить в другой монитор, если у вас несколько мониторов. Однако параметр ShowWindow имеет известную ошибку, которая может препятствовать отображению всей статьи справки. Параметр ShowWindow также требует операционной системы с графическим пользовательским интерфейсом (GUI). Он возвращает ошибку при попытке использовать его в Windows Server Core.

Если у вас есть доступ к Интернету, вместо этого можно использовать параметр Online . Параметр Online открывает статью справки в веб-браузере по умолчанию. Веб-содержимое является наиболее up-to-date content. Браузер позволяет искать содержимое справки и просматривать другие связанные справочные статьи.

Примечание.

Параметр Online не поддерживается для статей About .

help Get-Command -Online

Поиск команд с помощью Get-Help

Чтобы найти команды с Get-Help, укажите термин поиска, окруженный звездочкой (*) подстановочными знаками для значения параметра Name . В следующем примере используется параметр Name позиционально.

help *process*
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
Exit-PSHostProcess                Cmdlet    Microsoft.PowerShell.Core Clo...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Invoke-LapsPolicyProcessing       Cmdlet    LAPS                      Inv...
ConvertTo-ProcessMitigationPolicy Cmdlet    ProcessMitigations        Con...
Get-ProcessMitigation             Cmdlet    ProcessMitigations        Get...
Set-ProcessMitigation             Cmdlet    ProcessMitigations        Set...

В этом сценарии не требуется добавлять * подстановочные знаки. Если Get-Help не удается найти команду, соответствующую указанному значению, он выполняет полнотекстовый поиск этого значения. В следующем примере создаются те же результаты, что и при указании * подстановочного processзнака в каждом конце.

help process

При указании подстановочного знака в значении Get-Help выполняется поиск только команд, соответствующих предоставленному шаблону. Он не выполняет полнотекстовый поиск. Следующая команда не возвращает результаты.

help pr*cess

PowerShell создает ошибку, если указать значение, начинающееся с дефиса, не заключая его в кавычки, так как оно интерпретирует его как имя параметра. Для командлета Get-Help не существует такого имени параметра.

help -process

Если вы пытаетесь найти команды, которые заканчиваются -process, необходимо добавить * в начало значения.

help *-process

При поиске команд PowerShell с помощью Get-Help лучше быть менее точными, а не слишком конкретными.

При поиске process ранее результаты показывали только команды, которые содержали process в своем названии. Но при поиске processesон не находит совпадений для имен команд. Как уже говорилось ранее, когда справка не находит совпадений, выполняется полнотекстовый поиск по каждой статье справки в вашей системе, и возвращаются полученные результаты. Этот тип поиска часто создает больше результатов, чем ожидалось, включая сведения, не относящиеся к вам.

help processes
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Disconnect-PSSession              Cmdlet    Microsoft.PowerShell.Core Dis...
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
ForEach-Object                    Cmdlet    Microsoft.PowerShell.Core Per...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Get-PSSessionConfiguration        Cmdlet    Microsoft.PowerShell.Core Get...
New-PSSessionOption               Cmdlet    Microsoft.PowerShell.Core Cre...
New-PSTransportOption             Cmdlet    Microsoft.PowerShell.Core Cre...
Out-Host                          Cmdlet    Microsoft.PowerShell.Core Sen...
Start-Job                         Cmdlet    Microsoft.PowerShell.Core Sta...
Where-Object                      Cmdlet    Microsoft.PowerShell.Core Sel...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Get-WmiObject                     Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Clear-Variable                    Cmdlet    Microsoft.PowerShell.U... Del...
Convert-String                    Cmdlet    Microsoft.PowerShell.U... For...
ConvertFrom-Csv                   Cmdlet    Microsoft.PowerShell.U... Con...
ConvertFrom-Json                  Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Html                    Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Xml                     Cmdlet    Microsoft.PowerShell.U... Cre...
Debug-Runspace                    Cmdlet    Microsoft.PowerShell.U... Sta...
Export-Csv                        Cmdlet    Microsoft.PowerShell.U... Con...
Export-FormatData                 Cmdlet    Microsoft.PowerShell.U... Sav...
Format-List                       Cmdlet    Microsoft.PowerShell.U... For...
Format-Table                      Cmdlet    Microsoft.PowerShell.U... For...
Get-Unique                        Cmdlet    Microsoft.PowerShell.U... Ret...
Group-Object                      Cmdlet    Microsoft.PowerShell.U... Gro...
Import-Clixml                     Cmdlet    Microsoft.PowerShell.U... Imp...
Import-Csv                        Cmdlet    Microsoft.PowerShell.U... Cre...
Measure-Object                    Cmdlet    Microsoft.PowerShell.U... Cal...
Out-File                          Cmdlet    Microsoft.PowerShell.U... Sen...
Out-GridView                      Cmdlet    Microsoft.PowerShell.U... Sen...
Select-Object                     Cmdlet    Microsoft.PowerShell.U... Sel...
Set-Variable                      Cmdlet    Microsoft.PowerShell.U... Set...
Sort-Object                       Cmdlet    Microsoft.PowerShell.U... Sor...
Tee-Object                        Cmdlet    Microsoft.PowerShell.U... Sav...
Trace-Command                     Cmdlet    Microsoft.PowerShell.U... Con...
Write-Information                 Cmdlet    Microsoft.PowerShell.U... Spe...
Export-BinaryMiLog                Cmdlet    CimCmdlets                Cre...
Get-CimAssociatedInstance         Cmdlet    CimCmdlets                Ret...
Get-CimInstance                   Cmdlet    CimCmdlets                Get...
Import-BinaryMiLog                Cmdlet    CimCmdlets                Use...
Invoke-CimMethod                  Cmdlet    CimCmdlets                Inv...
New-CimInstance                   Cmdlet    CimCmdlets                Cre...
Remove-CimInstance                Cmdlet    CimCmdlets                Rem...
Set-CimInstance                   Cmdlet    CimCmdlets                Mod...
Compress-Archive                  Function  Microsoft.PowerShell.A... Cre...
Get-Counter                       Cmdlet    Microsoft.PowerShell.D... Get...
Invoke-WSManAction                Cmdlet    Microsoft.WSMan.Manage... Inv...
Remove-WSManInstance              Cmdlet    Microsoft.WSMan.Manage... Del...
Get-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Dis...
New-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Cre...
Set-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Mod...
about_Arithmetic_Operators        HelpFile
about_Arrays                      HelpFile
about_Environment_Variables       HelpFile
about_Execution_Policies          HelpFile
about_Functions                   HelpFile
about_Jobs                        HelpFile
about_Logging                     HelpFile
about_Methods                     HelpFile
about_Objects                     HelpFile
about_Pipelines                   HelpFile
about_Preference_Variables        HelpFile
about_Remote                      HelpFile
about_Remote_Jobs                 HelpFile
about_Session_Configuration_Files HelpFile
about_Simplified_Syntax           HelpFile
about_Switch                      HelpFile
about_Variables                   HelpFile
about_Variable_Provider           HelpFile
about_Windows_PowerShell_5.1      HelpFile
about_WQL                         HelpFile
about_WS-Management_Cmdlets       HelpFile
about_Foreach-Parallel            HelpFile
about_Parallel                    HelpFile
about_Sequence                    HelpFile

При поиске process он выдал 12 результатов. Однако при поиске processes это показало 78 результатов. Если поиск находит только одно совпадение, Get-Help показывает содержимое справки вместо перечисления результатов поиска.

help *hotfix*
NAME
    Get-HotFix

SYNOPSIS
    Gets the hotfixes that are installed on local or remote computers.


SYNTAX
    Get-HotFix [-ComputerName <System.String[]>] [-Credential
    <System.Management.Automation.PSCredential>] [-Description
    <System.String[]>] [<CommonParameters>]

    Get-HotFix [[-Id] <System.String[]>] [-ComputerName <System.String[]>]
    [-Credential <System.Management.Automation.PSCredential>]
    [<CommonParameters>]


DESCRIPTION
    > This cmdlet is only available on the Windows platform. The
    `Get-HotFix` cmdlet uses the Win32_QuickFixEngineering WMI class to
    list hotfixes that are installed on the local computer or specified
    remote computers.


RELATED LINKS
    Online Version: https://learn.microsoft.com/powershell/module/microsoft.
    powershell.management/get-hotfix?view=powershell-5.1&WT.mc_id=ps-gethelp
    about_Arrays
    Add-Content
    Get-ComputerRestorePoint
    Get-Credential
    Win32_QuickFixEngineering class

REMARKS
    To see the examples, type: "Get-Help Get-HotFix -Examples".
    For more information, type: "Get-Help Get-HotFix -Detailed".
    For technical information, type: "Get-Help Get-HotFix -Full".
    For online help, type: "Get-Help Get-HotFix -Online"

Вы также можете найти команды, которые не имеют статьи справки с помощью Get-Help, хотя эта возможность широко не известна. Функция more является одной из команд, для которых нет справочной статьи. Чтобы убедиться, что вы можете найти команды без Get-Help, которые не включают статьи справки, используйте функцию help для нахождения more.

help *more*

Поиск нашел только одно совпадение, поэтому он вернул основные сведения о синтаксисе, которые вы видите, когда команда не содержит статью справки.

NAME
    more

SYNTAX
    more [[-paths] <string[]>]

ALIASES
    None

REMARKS
    None

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

Используйте следующую команду, чтобы вернуть список всех статей справки О программе на вашей системе.

help About_*

При ограничении результатов до одной статьи о справкеGet-Help отображает содержимое этой статьи.

help about_Updatable_Help

Обновление справки

Ранее в этой главе вы впервые запустили командлет Get-Help и обновили статьи справочной документации PowerShell на своем компьютере. Для периодического получения обновлений содержимого справки запускайте командлет Update-Help на вашем компьютере.

Это важно

В Windows PowerShell 5.1 необходимо запустить Update-Help от имени администратора в сеансе PowerShell с повышенными привилегиями.

В следующем примере скачивает содержимое справки PowerShell для всех модулей, Update-Help установленных на компьютере. Чтобы скачать последнюю версию содержимого справки, следует использовать параметр Force .

Update-Help -Force

Как показано в следующих результатах, модуль вернул ошибку. Ошибки не являются редкими и обычно возникают, когда автор модуля не настраивает обновляемую справку правильно.

Update-Help : Failed to update Help for the module(s) 'BitsTransfer' with UI
culture(s) {en-US} : Unable to retrieve the HelpInfo XML file for UI culture
en-US. Make sure the HelpInfoUri property in the module manifest is valid or
check your network connection and then try the command again.
At line:1 char:1
+ Update-Help
+ ~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [Update-Help], Except
   ion
    + FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShe
   ll.Commands.UpdateHelpCommand

Update-Help требуется доступ к Интернету для скачивания содержимого справки. Если у компьютера нет доступа к Интернету, используйте Save-Help командлет на компьютере с доступом к Интернету для загрузки и сохранения обновленного содержимого справки. Затем используйте параметр Update-HelpSourcePath, чтобы указать расположение сохраненного обновленного содержимого справки.

Get-Command

Get-Command — это другая многоцелевая команда, которая помогает находить команды. При выполнении Get-Command без параметров возвращается список всех команд PowerShell в системе. Можно также использовать Get-Command для получения синтаксиса команды, аналогичного Get-Help.

Как определить синтаксис для Get-Command? Вы можете использовать Get-Help для отображения справки по статье Get-Command, как показано в разделе Get-Help этой главы. Для просмотра синтаксиса для любой команды можно также использовать Get-Command с параметром Синтаксиса . Это сочетание клавиш помогает быстро определить, как использовать команду без навигации по содержимому справки.

Get-Command -Name Get-Command -Syntax

Использование Get-Command с параметром Синтаксиса обеспечивает более краткое представление синтаксиса, отображающего параметры и их типы значений, без перечисления определенных допустимых значений, как Get-Help показано.

Get-Command [[-ArgumentList] <Object[]>] [-Verb <string[]>]
[-Noun <string[]>] [-Module <string[]>]
[-FullyQualifiedModule <ModuleSpecification[]>] [-TotalCount <int>]
[-Syntax] [-ShowCommandInfo] [-All] [-ListImported]
[-ParameterName <string[]>] [-ParameterType <PSTypeName[]>]
[<CommonParameters>]

Get-Command [[-Name] <string[]>] [[-ArgumentList] <Object[]>]
[-Module <string[]>] [-FullyQualifiedModule <ModuleSpecification[]>]
[-CommandType <CommandTypes>] [-TotalCount <int>] [-Syntax]
[-ShowCommandInfo] [-All] [-ListImported] [-ParameterName <string[]>]
[-ParameterType <PSTypeName[]>] [<CommonParameters>]

Если вам нужна более подробная информация об использовании команды, используйте Get-Help.

help Get-Command -Full

Раздел СИНТАКСИСаGet-Help предоставляет более удобное для пользователя отображение путем расширения перечисленных значений для параметров. В нем показаны фактические значения, которые можно использовать, что упрощает понимание доступных вариантов.

...
    Get-Command [[-Name] <System.String[]>] [[-ArgumentList]
    <System.Object[]>] [-All] [-CommandType {Alias | Function | Filter |
    Cmdlet | ExternalScript | Application | Script | Workflow |
    Configuration | All}] [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-ParameterName <System.String[]>]
    [-ParameterType <System.Management.Automation.PSTypeName[]>]
    [-ShowCommandInfo] [-Syntax] [-TotalCount <System.Int32>]
    [<CommonParameters>]

    Get-Command [[-ArgumentList] <System.Object[]>] [-All]
    [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-Noun <System.String[]>] [-ParameterName
    <System.String[]>] [-ParameterType
    <System.Management.Automation.PSTypeName[]>] [-ShowCommandInfo]
    [-Syntax] [-TotalCount <System.Int32>] [-Verb <System.String[]>]
    [<CommonParameters>]
...

Раздел PARAMETERS справки Get-Command показывает, что параметры Name, Noun и Verb принимают подстановочные знаки.

...
    -Name <System.String[]>
        Specifies an array of names. This cmdlet gets only commands that
        have the specified name. Enter a name or name pattern. Wildcard
        characters are permitted.

        To get commands that have the same name, use the All parameter. When
        two commands have the same name, by default, `Get-Command` gets the
        command that runs when you type the command name.

        Required?                    false
        Position?                    0
        Default value                None
        Accept pipeline input?       True (ByPropertyName, ByValue)
        Accept wildcard characters?  true

    -Noun <System.String[]>
        Specifies an array of command nouns. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified noun. Enter one or more nouns or noun
        patterns. Wildcard characters are permitted.

        Required?                    false
        Position?                    named
        Default value                None
        Accept pipeline input?       True (ByPropertyName)
        Accept wildcard characters?  true
    -Verb <System.String[]>
        Specifies an array of command verbs. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified verb. Enter one or more verbs or verb
        patterns. Wildcard characters are permitted.

        Required?                    false
        Position?                    named
        Default value                None
        Accept pipeline input?       True (ByPropertyName)
        Accept wildcard characters?  true
...

В следующем примере символ подстановки * используется со значением параметра Name в Get-Command.

Get-Command -Name *service*

При использовании подстановочных знаков с параметром Get-CommandName он возвращает команды PowerShell и собственные команды, как показано в следующих результатах.


CommandType     Name                                               Version
-----------     ----                                               -------
Function        Get-NetFirewallServiceFilter                       2.0.0.0
Function        Set-NetFirewallServiceFilter                       2.0.0.0
Cmdlet          Get-Service                                        3.1.0.0
Cmdlet          New-Service                                        3.1.0.0
Cmdlet          New-WebServiceProxy                                3.1.0.0
Cmdlet          Restart-Service                                    3.1.0.0
Cmdlet          Resume-Service                                     3.1.0.0
Cmdlet          Set-Service                                        3.1.0.0
Cmdlet          Start-Service                                      3.1.0.0
Cmdlet          Stop-Service                                       3.1.0.0
Cmdlet          Suspend-Service                                    3.1.0.0
Application     SecurityHealthService.exe                          10.0.2...
Application     SensorDataService.exe                              10.0.2...
Application     services.exe                                       10.0.2...
Application     services.msc                                       0.0.0.0
Application     TieringEngineService.exe                           10.0.2...
Application     Windows.WARP.JITService.exe                        10.0.2...

Можно ограничить результаты Get-Command для команд PowerShell, используя параметр CommandType.

Get-Command -Name *service* -CommandType Cmdlet, Function, Alias, Script

Другим вариантом может быть использование параметра Verb или Noun или обоих, так как только команды PowerShell имеют глаголы и существительные.

В следующем примере Get-Command используется для поиска команд на вашем компьютере, которые работают с процессами. Используйте параметр Noun и укажите Process его значение.

Get-Command -Noun Process
CommandType     Name                                               Version
-----------     ----                                               -------
Cmdlet          Debug-Process                                      3.1.0.0
Cmdlet          Get-Process                                        3.1.0.0
Cmdlet          Start-Process                                      3.1.0.0
Cmdlet          Stop-Process                                       3.1.0.0
Cmdlet          Wait-Process                                       3.1.0.0

Сводка

В этой главе вы узнали, как найти команды с Get-Help и Get-Command. Вы также узнали, как использовать систему справки, чтобы понять, как использовать команды после их поиска. Кроме того, вы узнали, как обновить систему справки на компьютере, когда доступно новое содержимое справки.

Отзыв

  1. Является ли параметр Get-ServiceDisplayName позициальным?
  2. Сколько наборов Get-Process параметров имеет командлет?
  3. Какие команды PowerShell существуют для работы с журналами событий?
  4. Что такое команда PowerShell для возврата списка процессов PowerShell, выполняемых на компьютере?
  5. Как обновить содержимое справки PowerShell, хранящееся на компьютере?

Ссылки

Дополнительные сведения о концепциях, описанных в этой главе, см. в следующих статьях справки PowerShell.

Дальнейшие действия

В следующей главе вы узнаете о объектах, свойствах, методах и командлете Get-Member .