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 100Select-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
- Escribir archivos de configuración (
.ps1) - compilarlos en archivos MOF
- 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 comandoGet-Command: enumerar todos los comandosGet-Member: ver las propiedades y métodos del objetoGet-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 |