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


Глава 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.

Get-Help

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

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

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

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

Get-Help -Name Get-Help

Начиная с PowerShell версии 3.0 содержимое справки не отправляет предварительно установленную операционную систему. При первом запуске 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 с повышенными привилегиями, запущенного от имени администратора.

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

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

  • ИМЯ
  • Краткий обзор
  • SYNTAX
  • ОПИСАНИЕ
  • Связанные ссылки
  • ПРИМЕЧАНИЯ

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

Параметры

При выполнении команды в 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СИНТАКСИСа обратите внимание, что информация, как представляется, повторяется шесть раз. Каждый из этих блоков представляет собой отдельный набор параметров, указывающий 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 может принимать несколько значений.

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

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

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

[-List]

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

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

Get-Help -Name Get-Help -Full

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

  • ИМЯ
  • Краткий обзор
  • SYNTAX
  • ОПИСАНИЕ
  • PARAMETERS
  • ВХОДНЫЕ ДАННЫЕ
  • ВЫХОДНЫЕ ДАННЫЕ
  • ПРИМЕЧАНИЯ
  • Примеры
  • Связанные ссылки

Указав полный параметр с командлетом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 и хотите просмотреть статью справки, help эта функция может оказаться полезной. Он передает выходные данные Get-Helpmore.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-Helphelp функцию, а третья строка пропускает параметр Name при использовании help функции. Так как Имя является позициальным параметром, третий пример использует его позицию вместо явного указания имени параметра.

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

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

В следующем примере функция с параметром Параметра используется help для возврата сведений из справки для параметра Get-HelpName .

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 открывает статью справки в веб-браузере по умолчанию. Веб-содержимое — это самое актуальное содержимое. Браузер позволяет искать содержимое справки и просматривать другие связанные статьи справки.

Примечание.

Параметр 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

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

Ранее в этой главе вы обновили статьи справки PowerShell на компьютере при первом запуске командлета Get-Help . Для получения обновлений содержимого справки периодически следует запускать 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-Help SourcePath, чтобы указать расположение сохраненного обновленного содержимого справки.

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
...

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

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. Является ли параметр DisplayNameGet-Service позиционным?
  2. Сколько наборов параметров содержится в командлете Get-Process?
  3. Какие команды PowerShell используются для работы с журналами событий?
  4. Что такое команда PowerShell для возврата списка процессов PowerShell, выполняемых на компьютере?
  5. Как обновить содержимое справки PowerShell, хранящееся на компьютере?

Ссылки

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

Следующие шаги

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