Como instalar un programa remoto en PS.
En este caso vamos a poner un ejemplo de como instalar el cliente de Wazuh en una red de servidores con comandos de PS.
La idea es desde un servidor central (Servidor1) lanzar la instalación del programa en varios servidores remotos.
Solo necesitaremos lanzar el script desde un servidor abriendo una consola de Powershell
Necesitaremos antes algunos preparativos previos:
Preparativo 1: Preparamos el script que se ejecutará en los servidores locales
Preparativo 2: Preparamos el script que se lanzará la instalación a los servidores remotos
Preparativo 3: Prepararemos el listado de host a los que instalaremos el programa.
Paso 1: Ejecutamos el proceso
Preparativo 1: Preparamos el script que se ejecutará en los servidores locales
Se debe copiar en una ruta donde todos los hosts tengan acceso, en este ejemplo la dejaremos en:
\\Domain.local\SYSVOL\Domain.LOCAL\MovApp\SIEM\Wazuh_agent_4.12.ps1
FICHERO: SIEM\Wazuh_agent_4.12.ps1
# PowerShell Script
# --- Guard clause: salir si Wazuh
ya está instalado --- $svc = Get-Service -Name
'WazuhSvc' -ErrorAction SilentlyContinue $agentDir =
"${env:ProgramFiles(x86)}\ossec-agent"
if ($svc -or (Test-Path
"$agentDir\client.keys")) { Write-Output "Wazuh Agent ya instalado. Saliendo." exit 0 } # --- fin guard clause ---
# PowerShell Script
# Define el nombre del host $hostname =
[System.Net.Dns]::GetHostName()
# Descarga el instalador del agente Wazuh de la web del
fabricante Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.12.0-1.msi -OutFile $env:tmp\wazuh-agent;
# Instala el agente Wazuh con el nombre del host como el nombre
del agente msiexec.exe /i
$env:tmp\wazuh-agent /q WAZUH_MANAGER='192.168.x.x'
WAZUH_AGENT_GROUP='default' WAZUH_AGENT_NAME=$hostname
#Pausa de 10 segundos antes de iniciar el servicio Start-Sleep -Seconds 10
Write-Host " Inicializamos el servicio1. Puede dar error " NET START WazuhSvc Write-Host " Inicializamos el servicio2 " Start-Sleep -Seconds 10 Start-Service -Name
"WazuhSvc" Set-Service -Name
"WazuhSvc" -StartupType Automatic #Fin de Servicio instalado
#ejecución remota de executable
Start-Sleep -Seconds 5 Write-Host "Intento de conexión con el servidor
Wazuh..."
$exePath = "C:\Program Files
(x86)\ossec-agent\agent-auth.exe"
# Desbloquear el ejecutable si fue descargado Unblock-File -Path $exePath
# Ejecutar el agente con argumentos Start-Process -FilePath $exePath
-ArgumentList "-m 10.115.79.215" -Wait -NoNewWindow
Write-Host "Verifica el servio instalado" $svc = Get-Service -Name
'WazuhSvc' -ErrorAction SilentlyContinue $agentDir =
"${env:ProgramFiles(x86)}\ossec-agent"
if ($svc -or (Test-Path
"$agentDir\client.keys")) { Write-Output
"Verifica Wazuh Agent -> instalado OK. Saliendo." } # --- fin guard clause ---
|
Preparativo 2: Preparamos el script que se lanzará la instalación a los servidores remotos
Este es el único script que ejecutaremos.
FICHERO: InstallRemoto.ps1
# Ruta
al archivo de servidores $servidores
= Get-Content "servidores.txt" # Ruta
del script a copier, en una ruta donde accedan todos los hosts $scriptPath = \\YYYYY.local\SYSVOL\XXXX.LOCAL\MovApp\SIEM\Wazuh_agent_4.12.ps1 foreach ($serverName in $servidores) { Write-Host "
Iniciando despliegue en ${serverName}..." -ForegroundColor Cyan try { # Crear
sesión remota con credenciales actuales $session
= New-PSSession -ComputerName $serverName # Crear carpeta en
remoto Invoke-Command
-Session $session -ScriptBlock { $folder =
"C:\tmp" if (-Not
(Test-Path $folder)) { New-Item -Path
$folder -ItemType Directory } } # Copiar el script al servidor remoto
usando ruta UNC $remoteScriptPath
= "\\${serverName}\C$\tmp\Wazuh_agent_4.12.ps1" Copy-Item -Path
$scriptPath -Destination $remoteScriptPath # Ejecutar el script
en remoto Invoke-Command
-Session $session -ScriptBlock { &
"C:\tmp\Wazuh_agent_4.12.ps1" } Write-Host "
Despliegue completado en ${serverName}" -ForegroundColor Green } catch { Write-Host " Error en el
despliegue en ${serverName}: $_" -ForegroundColor Red } finally { # Cerrar sesión remota if ($session) { Remove-PSSession
$session } } } Write-Host
"Despliegue finalizado en todos los
servidores." -ForegroundColor Yellow |
|
Preparativo 3: Prepararemos el listado de host a los que
instalaremos el programa.
Es muy importante que los nombres no
tengan espacios en blanco
Paso 1: Ejecutamos el proceso
by GoN | Published: Sep 2025 | Last Updated:
No hay comentarios:
Publicar un comentario