Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
PowerShell es un shell de línea de comandos y un lenguaje de scripting en uno. PowerShell se inició en Windows para ayudar a automatizar las tareas administrativas. Ahora, se ejecuta multiplataforma y se puede usar para varias tareas.
Lo que hace que PowerShell sea único es que acepta y devuelve objetos .NET, en lugar de texto. Esta característica facilita la conexión de distintos comandos en una canalización.
¿Para qué se puede usar PowerShell?
Inicialmente, PowerShell era solo windows. Ahora, es multiplataforma y se puede usar para varias tareas como:
- Administración en la nube. PowerShell se puede usar para administrar recursos en la nube. Por ejemplo, puede recuperar información, actualizar o implementar nuevos recursos.
- CI/CD. También se puede usar como parte de una canalización de integración continua o implementación continua.
- Automatice las tareas de Active Directory y Exchange. Puede usarlo para automatizar casi cualquier tarea en Windows, como crear usuarios en Active Directory y buzones en Exchange.
¿Quién usa PowerShell?
PowerShell es una herramienta eficaz que puede ayudar a los usuarios a trabajar en multitud de roles. Tradicionalmente, Los administradores del sistema usaron PowerShell. Ahora los usuarios llaman a sí mismos DevOps, Operaciones en la nube e incluso desarrolladores.
Cmdlets de PowerShell
PowerShell incluye cientos de comandos preinstalados. Los comandos de PowerShell se denominan cmdlets (pronuncia command-lets).
El nombre de cada cmdlet consta de un par Verb-Noun . Por ejemplo: Get-Process. Esta convención de nomenclatura facilita la comprensión de lo que hace el cmdlet. También facilita la búsqueda del comando que está buscando. Al buscar un cmdlet que se va a usar, puede filtrar por el verbo o el nombre.
Uso de cmdlets para explorar PowerShell
Cuando se toma PowerShell por primera vez, puede sentirse intimidante, ya que parece que hay tanto que aprender. PowerShell está diseñado para ayudarle a aprender un poco a la vez, ya que lo necesita.
PowerShell incluye cmdlets que le ayudan a detectar PowerShell. Con estos tres cmdlets, puede detectar qué comandos están disponibles, qué hacen y qué tipos operan.
-
Get-Verb. Al ejecutar este comando se devuelve una lista de verbos a los que se adhiere la mayoría de los comandos. La respuesta incluye una descripción de lo que hacen estos verbos. Dado que la mayoría de los comandos siguen esta convención de nomenclatura, establece las expectativas sobre lo que hace un comando. Este comando le ayuda a seleccionar el verbo adecuado y qué asignar un nombre a un comando al crear sus propios comandos. -
Get-Command. Este comando recupera una lista de todos los comandos instalados en el equipo. -
Get-Member. Funciona en la salida basada en objetos y puede detectar qué objeto, propiedades y métodos están disponibles para un comando. -
Get-Help. Al invocar este comando con el nombre de un comando como argumento, se muestra una página de ayuda que describe varias partes de un comando.
Con estos comandos, puede detectar casi todo lo que necesita saber sobre PowerShell.
Verbo
Verbo es un concepto importante en PowerShell. Es un estándar de nomenclatura que siguen la mayoría de los cmdlets. También es un estándar de nomenclatura que se espera que siga al escribir sus propios comandos. La idea es que el verbo diga lo que está intentando hacer, como leer o quizá cambiar los datos. PowerShell tiene una lista estandarizada de verbos. Para obtener una lista completa de todos los verbos posibles, use el Get-Verb cmdlet :
Get-Verb
El cmdlet devuelve una larga lista de verbos. La descripción proporciona contexto para lo que el verbo está pensado para hacer. Estas son las primeras filas de salida:
Verb AliasPrefix Group Description
---- ----------- ----- -----------
Add a Common Adds a resource to a container, or attaches an item to another item
Clear cl Common Removes all the resources from a container but does not delete the container
Close cs Common Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy cp Common Copies a resource to another name or to another container
Enter et Common Specifies an action that allows the user to move into a resource
Exit ex Common Sets the current environment or context to the most recently used context
...
Búsqueda de comandos con Get-Command
El Get-Command cmdlet devuelve una lista de todos los comandos disponibles instalados en el sistema. La lista puede ser grande. Puede limitar la cantidad de información que vuelve filtrando la respuesta mediante parámetros o cmdlets auxiliares.
Filtrar por nombre
Puede filtrar la salida de Get-Command mediante parámetros diferentes. El filtrado permite buscar comandos que tengan determinadas propiedades. El parámetro Name permite buscar un comando específico por nombre.
Get-Command -Name Get-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
¿Qué ocurre si desea encontrar todos los comandos que funcionan con procesos? Puede usar un carácter comodín * para que coincida con otras formas de la cadena. Por ejemplo:
Get-Command -Name *-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Start-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Management
Filtrado de nombres y verbos
Hay otros parámetros que filtran los valores de verbo y sustantivo. La parte del verbo del nombre de un comando es la parte situada más a la izquierda. El verbo debe ser uno de los valores devueltos por el Get-Verb cmdlet . La parte más a la derecha de un comando es la parte de nombre. Un sustantivo puede ser cualquier cosa.
Filtre por verbo. En el comando
Get-Process, la parte del verbo esGet. Para filtrar por la parte de verbo, use el parámetro Verb .Get-Command -Verb 'Get'En este ejemplo se enumeran todos los comandos que usan el verbo
Get.Filtre por nombre. En el comando
Get-Process, la parte de nombre esProcess. Para filtrar por el nombre, use el parámetro Sustantivo . En el ejemplo siguiente se devuelven todos los cmdlets que tienen nombres a partir de la letraU.Get-Command -Noun U*
Además, puede combinar parámetros para restringir la búsqueda, por ejemplo:
Get-Command -Verb Get -Noun U*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-UICulture 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Unique 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Uptime 7.0.0.0 Microsoft.PowerShell.Utility
Uso de cmdlets auxiliares para filtrar los resultados
También puede usar otros cmdlets para filtrar los resultados.
Select-Object. Este comando versátil le ayuda a elegir propiedades específicas de uno o varios objetos. También puede limitar el número de elementos que obtenga. En el ejemplo siguiente se devuelven los valores de propiedad Name y Source de los primeros 5 comandos disponibles en la sesión actual.Get-Command | Select-Object -First 5 -Property Name, SourceName Source ---- ------ Add-AppPackage Appx Add-AppPackageVolume Appx Add-AppProvisionedPackage Dism Add-AssertionOperator Pester Add-ProvisionedAppPackage DismPara obtener más información, vea Select-Object.
Where-Object. Este cmdlet le permite filtrar los objetos devueltos en función de los valores de las propiedades. El comando toma una expresión que puede probar el valor de una propiedad. En el ejemplo siguiente se devuelven todos los procesos en losProcessNameque comienza porp.Get-Process | Where-Object {$_.ProcessName -like "p*"}El
Get-Processcmdlet devuelve una colección de objetos de proceso. Para filtrar la respuesta, canalice la salida aWhere-Object. La canalización significa que dos o más comandos están conectados a través de un carácter de canalización|. La salida de un comando se envía como entrada para el comando siguiente. La expresión de filtro paraWhere-Objectusa el-likeoperador para que coincida con los procesos que comienzan por la letrap.
Exploración de objetos con Get-Member
Una vez que busque el cmdlet que desee, querrá saber más sobre qué salida genera. El Get-Member cmdlet muestra el tipo, las propiedades y los métodos de un objeto . Canalice la salida que desea inspeccionar en Get-Member.
Get-Process | Get-Member
El resultado muestra el tipo devuelto como TypeName y todas las propiedades y métodos del objeto. Este es un extracto de este resultado:
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
...
Con el parámetro MemberType puede limitar la información devuelta.
Get-Process | Get-Member -MemberType Method
De forma predeterminada, PowerShell solo muestra algunas propiedades. En el ejemplo anterior se muestran los Namemiembros , MemberTypey Definition . Puede usar Select-Object para especificar las propiedades que desea ver. Por ejemplo, solo desea mostrar las Name propiedades y Definition :
Get-Process | Get-Member | Select-Object Name, Definition
Buscar por tipo de parámetro
Get-Member nos mostró que Get-Process devuelve objetos de tipo Process . El parámetro ParameterType de Get-Command se puede usar para buscar otros comandos que toman objetos Process como entrada.
Get-Command -ParameterType Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Enter-PSHostProcess 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Get-PSHostProcessInfo 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Conocer el tipo de salida de un comando puede ayudar a reducir la búsqueda de comandos relacionados.