Escritura de scripts de PowerShell
Introducción
PowerShell es un potente lenguaje de scripts de línea de comandos que no solo puede ejecutar comandos de forma interactiva, sino que también puede combinar comandos en archivos de script para realizar tareas de automatización complejas.
Este artículo te guiará paso a paso para dominar las habilidades básicas del desarrollo de scripts de PowerShell, incluyendo:
- Cómo crear y ejecutar
.ps1scripts - Cómo definir y usar funciones
- Cómo realizar desarrollo modular y reutilizar la lógica de tus scripts
1. Introducción a los scripts de PowerShell
Creación de archivos de script (.ps1)
Los archivos de script de PowerShell son archivos de texto plano cuya extensión es.ps1y contienen un conjunto de comandos de PowerShell para ejecutar.
Ejemplo: hello.ps1
# hello.ps1 Write-Output "Hello from PowerShell script!"
Puedes usar cualquier editor de texto (se recomienda VS Code) para crear el.ps1archivo.
Directiva de ejecución (Execution Policy)
Windows, por razones de seguridad, de forma predeterminadano permite ejecutar scripts, por lo que debes configurar la directiva de ejecución.
Ver la directiva actual:
Get-ExecutionPolicy
Configurar temporalmente para permitir la ejecución de scripts locales:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
RemoteSigned: ejecuta scripts locales sin necesidad de firma, pero los scripts descargados deben estar firmados por un editor de confianza.
Métodos para ejecutar scripts
Ejecutar desde la línea de comandos:
.\hello.ps1
Ejecutar especificando el ejecutor de PowerShell:
powershell.exe -File .\hello.ps1 pwsh.exe -File .\hello.ps1 # PowerShell 7+
Clic derecho en "Ejecutar con PowerShell" (requiere la configuración de directiva correspondiente)
Paso y procesamiento de parámetros
Puedes definir en el script la forma de recibir parámetros externos:
Ejemplo: script con parámetros greet.ps1
param (
[string]$name,
[int]$age
)
Write-Output "你好,$name,你的年龄是 $age 岁。"
Pasar parámetros al ejecutar:
.\greet.ps1 -name "小明" -age 18
También admite valores predeterminados y validación de parámetros:
param (
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$City = "北京"
)
2. Uso de funciones
Definición y llamada de funciones
function Say-Hello {
Write-Output "Hello from function"
}
Say-Hello
Declaración y validación de parámetros
Las funciones también pueden llevar parámetros; se usa el bloqueparampara definirlos:
function Add-Numbers {
param (
[int]$a,
[int]$b
)
return $a + $b
}
Add-Numbers -a 3 -b 5 # 输出 8
También se pueden usar parámetros posicionales:
function Add {
param ($x, $y)
$x + $y
}
Add 10 20
Manejo de valores de retorno
Las funciones de PowerShell devuelven por defecto toda la salida (incluyendoWrite-Output)。
Se recomienda usarreturnpara devolver explícitamente:
function Get-Square {
param ([int]$num)
return $num * $num
}
$result = Get-Square -num 6
Write-Output $result
Ámbito de las funciones
Las variables definidas dentro de una función son locales por defecto:
function Demo-Scope {
$message = "Hello"
}
Demo-Scope
Write-Output $message # 无法访问
Si necesitas acceder a las variables desde fuera, puedes usar el prefijo de ámbito:
$global:x = 5
3. Desarrollo modular
Qué es un módulo de PowerShell
Un módulo (Module) es un conjunto de funciones, scripts y recursos que se utiliza para organizar código y facilitar su reutilización.
Tipos de módulos comunes:
- Módulos de script (
.psm1) - Módulos de manifiesto (
.psd1) - Módulos binarios (.dll)
Importar y usar módulos
UsaImport-Modulepara importar el módulo:
Import-Module MyModule.psm1
Ver los módulos cargados:
Get-Module
Llamar a las funciones del módulo:
Say-Hello
Introducción a PowerShell Gallery
PowerShell Galleryes el repositorio oficial de módulos de PowerShell; puedes descargar e instalar miles de módulos.
Ejemplo de instalación de un módulo:
Install-Module -Name PSReadLine
Actualizar módulos:
Update-Module PSReadLine
Crear un módulo personalizado simple
Crea un archivo MyModule.psm1 y añade funciones:
# MyModule.psm1
function Greet-User {
param ([string]$name)
Write-Output "欢迎你,$name"
}
Impórtalo y llámalo en el script:
Import-Module .\MyModule.psm1 Greet-User -name "小红"
Consejo: puedes colocar el archivo del módulo en la ruta de
$env:PSModulePathpara que el sistema lo reconozca automáticamente.
4. Resumen
| Contenido | Descripción |
|---|---|
.ps1Archivo |
Extensión de script de PowerShell, almacena comandos |
param |
Se utiliza para definir los parámetros de scripts/funciones |
Set-ExecutionPolicy |
Controla si se permite ejecutar el script |
| Funciones | Encapsulan código reutilizable y mejoran la claridad de la estructura |
Módulos (.psm1) |
Organizan múltiples funciones y permiten la portabilidad |
| PowerShell Gallery | Repositorio oficial de módulos donde se pueden descargar módulos de terceros |