PowerShell 7 Entornos Híbridos Windows/Linux
Introducción
PowerShell 7 revoluciona la administración de sistemas híbridos al ofrecer compatibilidad multiplataforma. En este tutorial, automatizarás tareas críticas como sincronización de archivos y consumo de APIs, reduciendo la dependencia de herramientas separadas para cada OS.
1. Configuración Inicial
Requisitos
- Windows 10/11 o Linux (Ubuntu/RHEL).
- PowerShell 7.4+ instalado:bashCopyDownload# Linux (Ubuntu) sudo apt update && sudo apt install -y powershellpowershellCopyDownload# Windows winget install –id Microsoft.PowerShell –source winget
2. Sincronización de Archivos entre Windows y Linux
Script: Sync-Files.ps1
# Requiere módulo PSScp (para SCP) Install-Module -Name PSScp -Force $linuxUser = "admin@192.168.1.100" $windowsPath = "C:\Data\Reports" $linuxPath = "/home/admin/reports" # Copia archivos nuevos/modificados $files = Get-ChildItem -Path $windowsPath -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddHours(-24) } foreach ($file in $files) { Write-Host "Enviando $($file.Name) a Linux..." scp -P 22 "$($file.FullName)" "${linuxUser}:${linuxPath}" }
Explicación:
- Usa protocolo SCP para transferencia segura.
- Filtra archivos modificados en las últimas 24 horas.
3. Consumo de APIs REST desde PowerShell
Ejemplo con JSONPlaceholder
$apiUrl = "https://jsonplaceholder.typicode.com/users" $response = Invoke-RestMethod -Uri $apiUrl -Method Get # Filtra usuarios de California y exporta a CSV $response | Where-Object { $_.address.city -eq "Los Angeles" } | Select-Object name, email, phone | Export-Csv -Path ".\california_users.csv" -NoTypeInformation
Salida útil para:
✅ Migración de datos entre sistemas.
✅ Integración con SaaS empresarial.
4. Configuración en VS Code
Recomendaciones
- Extensión PowerShell Extension Pack.
- Snippets para autocompletado:jsonCopyDownload{ “API Call”: { “prefix”: “invoke-api”, “body”: “Invoke-RestMethod -Uri ‘${1:url}’ -Method ${2|Get,Post,Put|}” } }
- Terminal integrada con perfiles separados (Windows + Linux).
5. Ejemplo Avanzado: Monitor de Servicios
Script que alerta si Apache/Nginx falla en Linux
$linuxServer = "user@linux-server" $service = "nginx" $status = ssh $linuxServer "systemctl is-active $service" if ($status -ne "active") { # Envía alerta a Slack/MS Teams $webhookUrl = "https://hooks.slack.com/services/..." $body = @{ text = "⚠️ El servicio $service en $linuxServer está INACTIVO" } | ConvertTo-Json Invoke-RestMethod -Uri $webhookUrl -Method Post -Body $body -ContentType "application/json" }
Conclusión
PowerShell 7 unifica la administración de sistemas híbridos permitiendo:
🔹 Reutilización de scripts en ambos entornos.
🔹 Interoperabilidad con APIs modernas.
🔹 Integración con herramientas como VS Code.