Bonjour la communauté, pour mon premier post je vais mettre ici 2 scripts powershell que j'ai galéré à mettre au point et qui permettent de recupérer les infos "Hardware" provenant du logiciel OpenHardwareMonitor via le WMI de windows.
Voici le lien pour le logiciel OHM : http://openhardwaremonitor.org/downloads/
Je les post ici pour avoir un feedback sur d'autres installation, et bien evidemment les corrections et/ou améliorations sont les bienvenues !
Le premier pour faire la decouverte auto des capteurs (couplé à une LLD sur le serveur zabbix :
ohm_disco.ps1
sa ligne UserParameter :
le deuxième pour recupérer les données des capteurs :
ohm_get.ps1
sa ligne UserParameter :
Voici le lien pour le logiciel OHM : http://openhardwaremonitor.org/downloads/
Je les post ici pour avoir un feedback sur d'autres installation, et bien evidemment les corrections et/ou améliorations sont les bienvenues !
Le premier pour faire la decouverte auto des capteurs (couplé à une LLD sur le serveur zabbix :
ohm_disco.ps1
Code:
$strFileName=".\sensors.dat"
$strFileName2=".\sensortmp.dat"
If (Test-Path $strFileName){
del $strFileName
}
If (Test-Path $strFileName2){
del $strFileName2
}
$cle = '{"{#ID_WMI}":"'
$valeur = '","{#NAME_WMI}":"'
$fermeture = '"},'
$bcl = 1
ADD-content -path $strFileName -value '{"data":['
Get-WmiObject -Namespace "Root\OpenHardwareMonitor" -Query "SELECT * FROM Sensor" | ForEach-Object {
$clecomplete = $cle + $_.Identifier + $valeur + $_.Name + $fermeture
ADD-content -path $strFileName -value $clecomplete
$bcl = $bcl +1
}
(get-content $strFileName -totalcount $bcl)[-1] | foreach-object {$_ -replace "},","}" | add-content $strFileName}
$bcl = $bcl - 2
$fichier = get-content $strFileName
$fichier[0..$bcl] > $strFileName2
$bcl = $bcl + 2
$fichier[$bcl] >> $strFileName2
move $strFileName2 $strFileName -Force
']}' >> $strFileName
Get-Content $strFileName
Code:
UserParameter=ohm_disco,powershell.exe -Noprofile -ExecutionPolicy Bypass -file c:\zabbix-agent\conf\externalscripts\ohm_disco.ps1
ohm_get.ps1
Code:
param([string]$ident)
$strFileName=".\sensors.tmp"
If (Test-Path $strFileName){
del $strFileName
}
$cle = '{"{#ID_WMI}":"'
$valeur = '","value":"'
$fermeture = '"}]}'
$request = "SELECT * FROM Sensor WHERE Identifier=" + "'" + $ident + "'"
Get-WmiObject -Namespace "Root\OpenHardwareMonitor" -Query $request | ForEach-Object {
$clecomplete = $_.value -replace ',','.'
ADD-content -path $strFileName -value $clecomplete
}
Get-content -path $strFileName
Code:
UserParameter=ohm_capteur[*],powershell.exe -Noprofile -ExecutionPolicy Bypass -file c:\zabbix-agent\conf\externalscripts\ohm_get.ps1 $1