Compartir a través de


Capítulo 2: El sistema de ayuda

En un experimento diseñado para evaluar la competencia en PowerShell, dos grupos distintos de profesionales de TI (principiantes y expertos) se dieron por primera vez un examen escrito sin acceso a un equipo. Sorprendentemente, las puntuaciones de prueba indicaron aptitudes comparables en ambos grupos. A continuación, se administraba una prueba posterior, que reflejaba la primera, pero con una diferencia clave: los participantes tenían acceso a un equipo sin conexión equipado con PowerShell. Los resultados mostraron una brecha significativa de aptitudes entre los dos grupos esta vez.

¿Qué factores han contribuido a los resultados observados entre las dos evaluaciones?

Los expertos no siempre conocen las respuestas, pero saben cómo averiguarlas.

Los resultados observados en los resultados de las dos pruebas fueron porque los expertos no memorizan miles de comandos de PowerShell. En su lugar, se destacan en el uso del sistema de Ayuda en PowerShell, lo que les permite detectar y aprender a usar comandos cuando sea necesario.

Convertirse en experto con el sistema de ayuda es la clave para el éxito con PowerShell.

Escuché a Jeffrey Snover, el creador de PowerShell, compartir una historia similar en varias ocasiones.

Detectabilidad

Los comandos compilados en PowerShell se conocen como cmdlets, que se pronuncian como "command-let", no "CMD-let". La convención de nomenclatura de los cmdlets sigue un singular formato Verb-Noun para que se puedan detectar fácilmente. Por ejemplo, Get-Process es el cmdlet para determinar qué procesos se ejecutan y Get-Service es el cmdlet para recuperar una lista de servicios. Las funciones, también conocidas como cmdlets de script y alias, son otros tipos de comandos de PowerShell que se describen más adelante en este libro. El término "Comando de PowerShell" describe cualquier comando de PowerShell, independientemente de si es un cmdlet, una función o un alias.

También puede ejecutar comandos nativos del sistema operativo desde PowerShell, como programas tradicionales de línea de comandos como ping.exe y ipconfig.exe.

Los tres cmdlets principales de PowerShell

  • Get-Help
  • Get-Command
  • Get-Member (se aborda en el capítulo 3)

A menudo se me pregunta: "¿Cómo puede averiguar cuáles son los comandos en PowerShell?". Tanto como Get-Help Get-Command son recursos valiosos para detectar y comprender comandos en PowerShell.

Get-Help

Lo primero que debe saber sobre el sistema de ayuda en PowerShell es cómo usar el Get-Help cmdlet .

Get-Help es un comando multipropósito que le ayuda a aprender a usar comandos una vez que los encuentre. También puede usar Get-Help para buscar comandos, pero de una manera diferente y más indirecta cuando se compara con Get-Command.

Al usar Get-Help para buscar comandos, inicialmente realiza una búsqueda de caracteres comodín para los nombres de comandos en función de la entrada. Si eso no encuentra ninguna coincidencia, realiza una búsqueda completa de texto completo en todos los artículos de ayuda de PowerShell en el sistema. Si esto también no encuentra ningún resultado, devuelve un error.

Aquí se muestra cómo usar Get-Help para ver el contenido de ayuda del Get-Help cmdlet.

Get-Help -Name Get-Help

A partir de la versión 3.0 de PowerShell, el contenido de ayuda no se incluye previamente con el sistema operativo. Cuando se ejecuta Get-Help por primera vez, un mensaje pregunta si desea descargar los archivos de ayuda de PowerShell en el equipo.

Para responder a Sí, presione Y ejecuta el Update-Help cmdlet y descarga el contenido de la ayuda.

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"):

Si no recibe este mensaje, ejecute Update-Help desde una sesión de PowerShell con privilegios elevados que se ejecuta como administrador.

Una vez completada la actualización, se muestra el artículo de ayuda.

Dedique un momento a ejecutar el ejemplo en el equipo, revise la salida y observe cómo el sistema de ayuda organiza la información.

  • NOMBRE
  • SINOPSIS
  • SINTAXIS
  • DESCRIPCIÓN
  • VÍNCULOS RELACIONADOS
  • COMENTARIOS

Al revisar la salida, tenga en cuenta que los artículos de ayuda a menudo contienen una gran cantidad de información y lo que ve de forma predeterminada no es todo el artículo de ayuda.

Parámetros

Al ejecutar un comando en PowerShell, es posible que tenga que proporcionar información adicional o entrada al comando. Los parámetros permiten especificar opciones y argumentos que cambian el comportamiento de un comando. En la sección SINTAXIS de cada artículo de ayuda se describen los parámetros disponibles para el comando.

Get-Help tiene varios parámetros que puede especificar para devolver todo el artículo de ayuda o un subconjunto para un comando. Para ver todos los parámetros disponibles para Get-Help, vea la sección SINTAXIS de su artículo de ayuda, como se muestra en el ejemplo siguiente.

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

Conjuntos de parámetros

Al revisar la sección SINTAXIS de Get-Help, observe que la información parece repetirse seis veces. Cada uno de esos bloques es un conjunto de parámetros individual, que indica que el Get-Help cmdlet incluye seis conjuntos distintos de parámetros. Una mirada más detallada revela que cada conjunto de parámetros contiene al menos un parámetro único, lo que lo convierte en diferente de los demás.

Los conjuntos de parámetros se excluyen mutuamente. Una vez que especifique un parámetro único que solo exista en un conjunto de parámetros, PowerShell limita el uso de los parámetros incluidos en ese conjunto de parámetros. Por ejemplo, no puede usar los parámetros Full y Detailed de juntos porque pertenecen a diferentes conjuntos de Get-Help parámetros.

Cada uno de los parámetros siguientes pertenece a un conjunto de parámetros diferente para el Get-Help cmdlet .

  • Completo
  • Detallado
  • Ejemplos
  • En línea
  • Parámetro
  • showWindow

Sintaxis del comando

Si no está familiarizado con PowerShell, comprender la información críptica ,que se caracteriza por corchetes y angulares, en la sección SINTAXIS puede parecer abrumador. Sin embargo, el aprendizaje de estos elementos de sintaxis es esencial para convertirse en experto con PowerShell. Cuanto más frecuente sea el sistema de ayuda de PowerShell, más fácil será recordar todos los matices.

Vea la sintaxis del Get-EventLog cmdlet.

Get-Help Get-EventLog

En la salida siguiente se muestra la parte pertinente del artículo de ayuda.

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

La información de sintaxis incluye pares de corchetes ([]). Dependiendo de su uso, estos corchetes sirven para dos propósitos diferentes.

  • Los elementos entre corchetes son opcionales.
  • Un conjunto vacío de corchetes después de un tipo de datos, como <string[]>, indica que el parámetro puede aceptar varios valores pasados como una matriz o un objeto de colección.

Parámetros posicionales

Algunos cmdlets están diseñados para aceptar parámetros posicionales. Los parámetros posicionales permiten proporcionar un valor sin especificar el nombre del parámetro. Al usar un parámetro de forma posicional, debe especificar su valor en la posición correcta en la línea de comandos. Puede encontrar la información posicional de un parámetro en la sección PARAMETERS del artículo de ayuda de un comando. Al especificar explícitamente nombres de parámetro, puede usar los parámetros en cualquier orden.

Para el Get-EventLog cmdlet, el primer parámetro del primer conjunto de parámetros es LogName. LogName se incluye entre corchetes, lo que indica que es un parámetro posicional.

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

Dado que LogName es un parámetro posicional, puede especificarlo por nombre o posición. Según los corchetes angulares que siguen al nombre del parámetro, el valor de LogName debe ser una sola cadena. La ausencia de corchetes que incluyan el nombre del parámetro y el tipo de datos indican que LogName es un parámetro necesario dentro de este conjunto de parámetros concreto.

El segundo parámetro de ese conjunto de parámetros es InstanceId. Tanto el nombre del parámetro como el tipo de datos están completamente entre corchetes, lo que significa que InstanceId es un parámetro opcional.

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

Además, InstanceId tiene su propio par de corchetes, lo que indica que es un parámetro posicional similar al parámetro LogName . Después del tipo de datos, un conjunto vacío de corchetes implica que InstanceId puede aceptar varios valores.

Parámetros de modificador

Un parámetro que no requiere un valor se denomina parámetro de modificador. Puede identificar fácilmente los parámetros del modificador porque no hay ningún tipo de datos que siga el nombre del parámetro. Cuando se especifica un parámetro switch, su valor es true. Cuando no se especifica un parámetro switch, su valor es false.

El segundo conjunto de parámetros incluye un parámetro List , que es un parámetro switch. Al especificar el parámetro List , devuelve una lista de registros de eventos en el equipo local.

[-List]

Un enfoque simplificado para la sintaxis

Hay un método más fácil de usar para obtener la misma información que la sintaxis de comandos crípticos para algunos comandos, excepto en inglés sin formato. PowerShell devuelve el artículo de ayuda completo al usar Get-Help con el parámetro Full , lo que facilita la comprensión del uso de un comando.

Get-Help -Name Get-Help -Full

Dedique un momento a ejecutar el ejemplo en el equipo, revise la salida y observe cómo el sistema de ayuda organiza la información.

  • NOMBRE
  • SINOPSIS
  • SINTAXIS
  • DESCRIPCIÓN
  • PARAMETERS
  • ENTRADAS
  • SALIDAS
  • NOTAS
  • EJEMPLOS
  • VÍNCULOS RELACIONADOS

Al especificar el parámetro Full con el Get-Help cmdlet , la salida incluye varias secciones adicionales. Entre estas secciones, PARAMETERS a menudo proporciona una explicación detallada de cada parámetro. Sin embargo, la extensión de esta información varía en función del comando específico que esté investigando.

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

Cuando ejecutó el comando anterior para mostrar la ayuda del Get-Help comando, probablemente notó que la salida se desplazaba demasiado rápido para leerlo.

Si usa la consola de PowerShell, Terminal Windows o VS Code y necesita ver un artículo de ayuda, la help función puede ser útil. Canaliza la salida de Get-Help a more.com, mostrando una página de contenido de ayuda a la vez. Recomiendo usar la help función en lugar del Get-Help cmdlet porque proporciona una mejor experiencia de usuario y es menor que escribir.

Nota:

El ISE no admite el uso more.comde , por lo que la ejecución help funciona de la misma manera que Get-Help.

Ejecute cada uno de los siguientes comandos en PowerShell en el equipo.

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

¿Ha observado alguna variación en la salida cuando ejecutó los comandos anteriores?

En el ejemplo anterior, la primera línea usa el Get-Help cmdlet , el segundo usa la help función y la tercera línea omite el parámetro Name mientras se usa la help función . Dado que Name es un parámetro posicional, el tercer ejemplo aprovecha su posición en lugar de indicar explícitamente el nombre del parámetro.

La diferencia es que los dos últimos comandos muestran su salida de una página a la vez. Al usar la help función , presione la barra espaciadora para mostrar la página siguiente del contenido o Q para salir. Si necesita finalizar cualquier comando que se ejecute de forma interactiva en PowerShell, presione Ctrl+C.

Para encontrar rápidamente información sobre un parámetro específico, use el parámetro Parameter . Este enfoque devuelve contenido que contiene solo la información específica del parámetro, en lugar del artículo de ayuda completo. Esta es la manera más fácil de encontrar información sobre un parámetro específico.

En el ejemplo siguiente se usa la help función con el parámetro Parameter para devolver información del artículo de ayuda para el parámetro Name de Get-Help.

help Get-Help -Parameter Name

La información de ayuda muestra que el parámetro Name es posicional y debe especificarse en la primera posición (posición cero) cuando se usa posicionalmente.

-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

El parámetro Name espera un valor de cadena identificado por el <String> tipo de datos junto al nombre del parámetro.

Hay otros parámetros con los que puede especificar Get-Help para devolver un subconjunto de un artículo de ayuda. Para ver cómo funcionan, ejecute los siguientes comandos en el equipo.

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

Normalmente, uso help <command name> con el parámetro Full u Online. Si solo tiene interés en los ejemplos, use el parámetro Examples . Si solo tiene interés en un parámetro específico, use el parámetro Parameter .

Cuando se usa el parámetro ShowWindow , se muestra el contenido de ayuda en una ventana de búsqueda independiente. Puede mover esa ventana a otro monitor si tiene varios monitores. Sin embargo, el parámetro ShowWindow tiene un error conocido que podría impedir que muestre todo el artículo de ayuda. El parámetro ShowWindow también requiere un sistema operativo con una interfaz gráfica de usuario (GUI). Devuelve un error al intentar usarlo en Windows Server Core.

Si tiene acceso a Internet, puede usar el parámetro Online en su lugar. El parámetro Online abre el artículo de ayuda en el explorador web predeterminado. El contenido en línea es el contenido más actualizado. El explorador le permite buscar el contenido de ayuda y ver otros artículos de ayuda relacionados.

Nota:

El parámetro Online no es compatible con los artículos Acerca de .

help Get-Command -Online

Búsqueda de comandos con Get-Help

Para buscar comandos con Get-Help, especifique un término de búsqueda rodeado de caracteres comodín asterisco (*) para el valor del parámetro Name . En el ejemplo siguiente se usa el parámetro Name posicionalmente.

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

En este escenario, no es necesario agregar los * caracteres comodín. Si Get-Help no encuentra un comando que coincida con el valor proporcionado, realiza una búsqueda de texto completo para ese valor. En el ejemplo siguiente se generan los mismos resultados que al especificar el * carácter comodín en cada extremo de process.

help process

Al especificar un carácter comodín dentro del valor, Get-Help solo busca comandos que coincidan con el patrón proporcionado. No realiza una búsqueda de texto completo. El comando siguiente no devuelve ningún resultado.

help pr*cess

PowerShell genera un error si especifica un valor que comienza con un guión sin incluirlo entre comillas porque lo interpreta como un nombre de parámetro. No existe este nombre de parámetro para el Get-Help cmdlet .

help -process

Si está intentando buscar comandos que terminan con -process, debe agregar un * al principio del valor.

help *-process

Al buscar comandos de PowerShell con Get-Help, es mejor ser impreciso en lugar de ser demasiado específico.

Cuando se process ha buscado anteriormente, los resultados solo devuelven comandos que se incluyen process en su nombre. Pero si busca processes, no encuentra ninguna coincidencia para los nombres de comando. Como se indicó anteriormente, cuando la ayuda no encuentra ninguna coincidencia, realiza una búsqueda completa de texto completo de cada artículo de ayuda en el sistema y devuelve esos resultados. Este tipo de búsqueda a menudo genera más resultados de lo esperado, incluida la información no relevante para usted.

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

Al buscar process, devolvió 12 resultados. Sin embargo, al buscar processes, produjo 78 resultados. Si la búsqueda solo encuentra una coincidencia, Get-Help muestra el contenido de ayuda en lugar de enumerar los resultados de la búsqueda.

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"

También puede encontrar comandos que carecen de artículos de ayuda con Get-Help, aunque esta funcionalidad no se conoce normalmente. La more función es uno de los comandos que no tienen un artículo de ayuda. Para confirmar que puede encontrar comandos con Get-Help que no incluyan artículos de ayuda, use la help función para buscar more.

help *more*

La búsqueda solo encontró una coincidencia, por lo que devolvió la información de sintaxis básica que ve cuando un comando no tiene un artículo de ayuda.

NAME
    more

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

ALIASES
    None

REMARKS
    None

El sistema de ayuda de PowerShell también contiene artículos conceptuales acerca de la ayuda. Debe actualizar el contenido de ayuda en el sistema para obtener los artículos Acerca de. Para obtener más información, consulte la sección Ayuda de actualización de este capítulo.

Use el siguiente comando para devolver una lista de todos los artículos de ayuda acerca de su sistema.

help About_*

Al limitar los resultados a un artículo acerca de la ayuda, Get-Help muestra el contenido de ese artículo.

help about_Updatable_Help

Actualización de la Ayuda

Anteriormente en este capítulo, actualizó los artículos de ayuda de PowerShell en el equipo la primera vez que ejecutó el Get-Help cmdlet. Debe ejecutar periódicamente el cmdlet en el Update-Help equipo para obtener las actualizaciones del contenido de ayuda.

Importante

En Windows PowerShell 5.1, debe ejecutarse Update-Help como administrador en una sesión de PowerShell con privilegios elevados.

En el ejemplo siguiente, Update-Help descarga el contenido de ayuda de PowerShell para todos los módulos instalados en el equipo. Debe usar el parámetro Force para asegurarse de descargar la versión más reciente del contenido de ayuda.

Update-Help -Force

Como se muestra en los resultados siguientes, un módulo devolvió un error. Los errores no son raros y normalmente se producen cuando el autor del módulo no configura la ayuda actualizable correctamente.

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 requiere acceso a Internet para descargar el contenido de ayuda. Si el equipo no tiene acceso a Internet, use el Save-Help cmdlet en un equipo con acceso a Internet para descargar y guardar el contenido de ayuda actualizado. A continuación, use el parámetro SourcePath de Update-Help para especificar la ubicación del contenido de ayuda actualizado guardado.

Get-Command

Get-Command es otro comando multipropósito que le ayuda a encontrar comandos. Cuando se ejecuta Get-Command sin parámetros, devuelve una lista de todos los comandos de PowerShell del sistema. También puede usar Get-Command para obtener la sintaxis de comandos similar a Get-Help.

¿Cómo se determina la sintaxis de Get-Command? Puede usar Get-Help para mostrar el artículo de ayuda de Get-Command, como se muestra en la sección Get-Help de este capítulo. También puede usar Get-Command con el parámetro Syntax para ver la sintaxis de cualquier comando. Este acceso directo le ayuda a determinar rápidamente cómo usar un comando sin navegar por su contenido de ayuda.

Get-Command -Name Get-Command -Syntax

El uso Get-Command con el parámetro Syntax proporciona una vista más concisa de la sintaxis que muestra los parámetros y sus tipos de valor, sin enumerar los valores permitidos específicos, como Get-Help se muestra.

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

Si necesita información más detallada sobre cómo usar un comando, use Get-Help.

help Get-Command -Full

La sección SINTAXIS de Get-Help proporciona una visualización más fácil de usar expandiendo los valores enumerados para los parámetros. Muestra los valores reales que puede usar, lo que facilita la comprensión de las opciones disponibles.

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

La sección PARAMETERS de la ayuda para Get-Command revelar que los parámetros Name, Noun y Verb aceptan caracteres comodín.

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

En el ejemplo siguiente se usa el * carácter comodín con el valor del parámetro Name de Get-Command.

Get-Command -Name *service*

Cuando se usan caracteres comodín con el parámetro Name de Get-Command, devuelve comandos de PowerShell y comandos nativos, como se muestra en los resultados siguientes.


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

Puede limitar los resultados de a los comandos de Get-Command PowerShell mediante el parámetro CommandType .

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

Otra opción puede ser usar el parámetro Verb o Noun o ambos, ya que solo los comandos de PowerShell tienen verbos y sustantivos.

En el ejemplo siguiente se usan Get-Command para buscar comandos en el equipo que funcionan con procesos. Use el parámetro Sustantivo y especifique Process como su valor.

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

Resumen

En este capítulo, ha aprendido a buscar comandos con Get-Help y Get-Command. También ha aprendido a usar el sistema de ayuda para comprender cómo usar comandos una vez que los encuentre. Además, ha aprendido a actualizar el sistema de ayuda en el equipo cuando hay nuevo contenido de ayuda disponible.

Revisar

  1. ¿El parámetro DisplayName de Get-Service es posicional?
  2. ¿Cuántos conjuntos de parámetros tiene el cmdlet Get-Process?
  3. ¿Qué comandos de PowerShell existen para trabajar con registros de eventos?
  4. ¿Cuál es el comando de PowerShell para devolver una lista de procesos de PowerShell que se ejecutan en el equipo?
  5. ¿Cómo actualiza el contenido de ayuda de PowerShell almacenado en el equipo?

Referencias

Para más información sobre los conceptos descritos en este capítulo, lea los siguientes artículos de ayuda de PowerShell.

Pasos siguientes

En el capítulo siguiente, obtendrá información sobre objetos, propiedades, métodos y el Get-Member cmdlet .