Hello tout le monde !

Je vous partage une méthode pour déployer SNMP à distance sur une liste de serveurs via Powershell.

Ce script permet de préparer un déploiement d’un projet de supervision comme Centreon.

Le script charge une liste de serveurs dans un fichier TXT et installe SNMP ainsi que l’ajout de la règle Firewall Windows pour autoriser le ping. Le script fait également un GPUPDATE et redémarre le service afin d’appliquer les paramètres SNMP envoyés par GPO comme ci-dessous :

Le script est à exécuter en mode admin bien-sur 😉

# Recuperation de la liste des machines
$ListSrv = Get-Content -Path c:\temp\list_srv_deploy_snmp.txt
$Results = @()
$Log = "C:\temp\log_deploy_snmp.log"

foreach ($hostname in $ListSrv){

# Creation de la session distante avec PSSession
Write-host "Session vers $hostname"
$session = New-PSSession -ComputerName $hostname

# Verifier si SNMP est installe
$check = Invoke-Command -Session $session -ScriptBlock { Get-WindowsFeature | Where-Object {$_.Name -eq "SNMP-Service"} }

# Si pas de SNMP installé on lance les installations
If ($check.Installed -ne "True") {

# Installation SNMP et ajout regle firewall
Write-host "Installation SNMP vers $hostname"
Invoke-Command -Session $session -ScriptBlock {
Get-WindowsFeature *snmp* |Install-WindowsFeature
Restart-service snmp** 
Import-Module NetSecurity 
New-NetFirewallRule -Name Allow_Ping -DisplayName “Allow Ping”  -Description “Ping ICMPv4” -Protocol ICMPv4 -IcmpType 8 -Enabled True -Profile Any -Action Allow
Gpupdate /force
Restart-service snmp** 
}
}

# Verification de l'installation
$checkafter = Invoke-Command -Session $session -ScriptBlock { Get-WindowsFeature | Where-Object {$_.Name -eq "SNMP-Service"} }

If ($checkafter.Installed -eq "True") {
$Results += "$hostname;'OK'"
} Else { $Results += "$hostname;'KO'" }

# Fermer la session
Remove-PSSession $session
}

$Results >> $log

Write-Host "Deploiement terminé !"

Bonne utilisation et bonne continuation !

A+


Bruno SOUSA