Conceptos centrales de PowerShell

PowerShell no es solo una herramienta de línea de comandos; su filosofía de diseño, arquitectura funcional y forma de uso difieren notablemente de los shells tradicionales.


1. Cmdlet: la unidad de comando más pequeña

¿Qué es un Cmdlet?

Cmdlet (se pronunciacommand-let) es la unidad de comando más básica en PowerShell. Se basan en clases de .NET y, al ejecutarse, devuelven uno o másobjetos .NET。

Regla de nomenclatura: verbo-sustantivo

Cada Cmdlet sigue laverbo-sustantivoconvención de nomenclatura, por ejemplo:

Cmdlet Significado
Get-Process Obtener información del proceso
Set-Item Establecer el valor de un elemento de recurso
Remove-Item Eliminar archivos, entradas del registro, etc.
New-User Crear un nuevo usuario (si el módulo AD está instalado)

PowerShell incluye cientos de Cmdlets, y los módulos de terceros pueden agregar muchos más personalizados.

Ejemplo

Get-Service
Get-ChildItem -Path C:\Windows

También puedes usarGet-Commandpara ver todos los Cmdlets disponibles:

Get-Command -CommandType Cmdlet

2. Canalización de objetos (Object Pipeline)

¿Cuál es la diferencia con la canalización de UNIX/Linux?

En un shell tradicional, la canalización (|) transmite cadenas de texto. En cambio, en PowerShell,la canalización transmite objetos .NET completos。

Esto significa que puedes conservar datos estructurados (propiedades, métodos) para su procesamiento posterior.

Ejemplo: filtrar procesos por uso de CPU

Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object Name, CPU

En el comando anterior:

  • Get-ProcessObtiene todos los procesos (devuelve objetos)
  • Where-ObjectFiltra los procesos cuyo uso de CPU sea superior a 100
  • Select-ObjectSolo muestra elNameyCPUcampo

La belleza de pasar objetos por la canalización

No necesitas usarawk、cut、grepy otras herramientas para "analizar" la salida; en su lugar, operas directamente sobre las propiedades del objeto.


3. Provider y PSDrive: abstracción de unidades de recursos

PowerShell ofrece una forma unificada de acceder a los recursos:el modelo Provider, que asigna varios recursos a unidades virtuales (PSDrive), como si fueranC:unidades de disco.

Tipos comunes de Provider

Provider Unidad de ejemplo Descripción
FileSystem C:, D: Sistema de archivos local
Registry HKLM:, HKCU: Registro de Windows
Environment Env: Variables de entorno
Certificate Cert: Almacén de certificados
Function Function: Funciones en la sesión actual
Variable Variable: Variables definidas actualmente
Alias Alias: Alias de comandos

Ejemplo: operar con el registro

Get-ChildItem HKLM:\Software\Microsoft

Navega por el registro como si exploraras carpetas.


4. Scripts y módulos: organización y reutilización

Scripts (.ps1)

  • Los scripts de PowerShell son.ps1archivos de texto con la extensión
  • Contienen una serie de comandos, control de flujo, funciones, etc.

Módulos (.psm1 / .psd1)

Un módulo es una unidad funcional reutilizable en PowerShell; puede ser:

  • un.psm1archivo (script de módulo)
  • una carpeta que contiene.psd1un manifiesto (módulo avanzado)

Los módulos admiten:

  • carga automática(se carga automáticamente al usar sus funciones)
  • control de versiones
  • declaración de dependencias

Ver todos los módulos del sistema:

Get-Module -ListAvailable

Importar un módulo:

Import-Module Az

5. Directiva de ejecución (Execution Policy)

Para evitar la ejecución de scripts maliciosos, PowerShell introdujo ladirectiva de ejecución(Execution Policy), que restringe.ps1el comportamiento de ejecución de los archivos de script.

Tipos comunes de directiva

Directiva Significado
Restricted Predeterminada, no permite ejecutar ningún script
RemoteSigned Permite ejecutar scripts locales; los scripts remotos requieren firma
AllSigned Todos los scripts requieren firma
Bypass Sin restricciones, no recomendada en producción

Configurar la directiva de ejecución

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

⚠️ Nota: la directiva de ejecución solo afecta a los archivos de script, no restringe los comandos introducidos manualmente.


6. Administración remota (PowerShell Remoting)

PowerShell Remoting admite, mediante elprotocolo WS-MAN (basado en WinRM)oSSH, conectarse de forma remota a otra computadora y ejecutar comandos.

Habilitar WinRM (en Windows)

Enable-PSRemoting -Force

Comandos comunes

# 建立远程会话
Enter-PSSession -ComputerName Server01

# 批量执行命令
Invoke-Command -ComputerName Server01,Server02 -ScriptBlock { Get-Service }

Remoto multiplataforma compatible con SSH

Enter-PSSession -HostName linux01 -User user1 -SSHTransport

7. Desired State Configuration (DSC)

DSC (Desired State Configuration) es laplataforma de configuración declarativade PowerShell, utilizada para definir el "estado deseado" del sistema.

Te permite:

  • Definir el estado de los recursos mediante scripts de configuración (por ejemplo, un servicio debe estar iniciado, un archivo debe existir)
  • Configurar automáticamente la máquina a ese estado
  • Detectar desviaciones y corregirlas automáticamente

Modo de uso

  1. Escribir archivos de configuración (.ps1)
  2. compilarlos en archivos MOF
  3. Implementar usando el modo Push o Pull

DSC es especialmente adecuado para la configuración de servidores a gran escala, verificaciones de cumplimiento e implementación automatizada.


8. Descubrimiento de comandos y sistema de ayuda

PowerShell ofrece un completo sistema de ayuda que te permite explorar comandos fácilmente:

  • Get-Help Get-Process: ver la ayuda del comando
  • Get-Command: enumerar todos los comandos
  • Get-Member: ver las propiedades y métodos del objeto
  • Get-Help about_*: ver la documentación integrada (comoabout_Execution_Policies)

Ejemplo: ver la estructura del objeto

Get-Process | Get-Member

Resumen

Concepto Palabras clave Breve descripción
Cmdlet verbo-sustantivo Unidad de ejecución mínima, basada en .NET
Canalización ` ` Transmisión de objetos en lugar de texto
Provider FileSystem, Env: Acceso unificado a varios recursos
Módulo .psm1, .psd1 Organiza colecciones de comandos reutilizables
Directiva de ejecución Set-ExecutionPolicy Controla los permisos de ejecución de scripts
Administración remota Enter-PSSession Ejecuta comandos de forma remota
DSC Configuration Plataforma de configuración declarativa del sistema
Sistema de ayuda Get-Help Sistema de documentación integrado
Otras extensiones