Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| gporeport [2019/02/19 11:46] – nekan | gporeport [2021/03/05 16:13] (Version actuelle) – nekan | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Get-DomainPcGpoReport - Obtenir | + | ====== Get-DomainPcGpoReport - Créer |
| + | <label type=" | ||
| Un jour, mon responsable m'a demandé un rapport sur le déploiement de certaines GPO. Je me suis dit qu'il suffisait d' | Un jour, mon responsable m'a demandé un rapport sur le déploiement de certaines GPO. Je me suis dit qu'il suffisait d' | ||
| Ligne 18: | Ligne 19: | ||
| ===== Script principal ===== | ===== Script principal ===== | ||
| - | <code powershell> | + | <sxh powershell> |
| ################################################################################################## | ################################################################################################## | ||
| - | # | + | # |
| - | # Script de vérification de synchronisation des postes avec le contrôleur de domaine | + | # Script de vérification de synchronisation des postes avec le contrôleur de domaine |
| - | # | + | # |
| - | # Par Nicolas THOREZ | + | # Par Nicolas THOREZ |
| - | # | + | # |
| ################################################################################################## | ################################################################################################## | ||
| Ligne 36: | Ligne 37: | ||
| $LastSyncFile = " | $LastSyncFile = " | ||
| - | # Création de la liste des PS en se basant sur l'AD | + | # Création de la liste des PC en se basant sur l'AD |
| $ListPC = (Get-ADComputer -SearchBase "OU=PC Fixe, | $ListPC = (Get-ADComputer -SearchBase "OU=PC Fixe, | ||
| $ListPC += (Get-ADComputer -SearchBase "OU=PC Portable, | $ListPC += (Get-ADComputer -SearchBase "OU=PC Portable, | ||
| Ligne 176: | Ligne 177: | ||
| { | { | ||
| $TempVar = @{} | $TempVar = @{} | ||
| - | $TempVar | Export-Csv -Path $LastSyncFile -Delimiter | + | $TempVar | Export-Csv -Path $LastSyncFile -Delimiter |
| } | } | ||
| Ligne 221: | Ligne 222: | ||
| # Récupération de la dernière synchronisation | # Récupération de la dernière synchronisation | ||
| - | $GPOTime = ($Results.DocumentElement.UserResults.ExtensionStatus | Where-Object {$_.Name -eq 'Infrastructure de stratégie de groupe'}).BeginTime | + | $GPOTime = ($Results.DocumentElement.UserResults.ExtensionStatus | Where-Object {$_.Name -eq "Infrastructure de stratégie de groupe"}).BeginTime |
| $LastSyncTime = [String](Get-Date $GPOTime).ToShortDateString() + " " + [String](Get-Date $GPOTime).ToShortTimeString() | $LastSyncTime = [String](Get-Date $GPOTime).ToShortDateString() + " " + [String](Get-Date $GPOTime).ToShortTimeString() | ||
| Set-LastSync $PCName $LastSyncTime | Set-LastSync $PCName $LastSyncTime | ||
| | | ||
| # Vérification pour la GPO (P: | # Vérification pour la GPO (P: | ||
| - | $PDriveGpoStatus = Get-GPOState('(P: | + | $PDriveGpoStatus = Get-GPOState("(P: |
| # Vérification pour la GPO BackupUsers_Xcopy_Daily_scheduled | # Vérification pour la GPO BackupUsers_Xcopy_Daily_scheduled | ||
| - | $BackupGpoStatus = Get-GPOState('BackupUsers_Xcopy_Daily_scheduled') | + | $BackupGpoStatus = Get-GPOState("BackupUsers_Xcopy_Daily_scheduled") |
| | | ||
| # Vérification pour la GPO Stratégie de groupe locale | # Vérification pour la GPO Stratégie de groupe locale | ||
| - | $LocalGpoStatus = Get-GPOState('Stratégie de groupe locale') | + | $LocalGpoStatus = Get-GPOState("Stratégie de groupe locale") |
| # Vérification pour la GPO (Z: | # Vérification pour la GPO (Z: | ||
| - | $ZDriveGpoStatus = Get-GPOState('(Z: | + | $ZDriveGpoStatus = Get-GPOState("(Z: |
| # Vérification pour la GPO Default Domain Policy | # Vérification pour la GPO Default Domain Policy | ||
| - | $DefaultGpoStatus = Get-GPOState('Default Domain Policy') | + | $DefaultGpoStatus = Get-GPOState("Default Domain Policy") |
| # Ajoute une ligne au rapport et passe à la suite de la boucle | # Ajoute une ligne au rapport et passe à la suite de la boucle | ||
| Ligne 252: | Ligne 253: | ||
| } | } | ||
| - | </code> | + | </sxh> |
| + | |||
| + | ===== Script d' | ||
| + | |||
| + | <sxh powershell> | ||
| + | ################################################################################## | ||
| + | # # | ||
| + | # Vérification des résultats de Get-DomainPcGpoReport.ps1 pour alerte Nagios | ||
| + | # # | ||
| + | # Par Nicolas THOREZ | ||
| + | # # | ||
| + | ################################################################################## | ||
| + | |||
| + | # Déclaration des variables | ||
| + | |||
| + | $ListPC = (Get-ADComputer -SearchBase "OU=PC Fixe, | ||
| + | $ListPC += (Get-ADComputer -SearchBase "OU=PC Portable, | ||
| + | $ListPC += (Get-ADComputer -SearchBase " | ||
| + | $SyncTimeData = Import-Csv -Path " | ||
| + | $ReportData = Import-Csv -Path " | ||
| + | $OutputMessage = '' | ||
| + | $OutputMessageCore = '' | ||
| + | $ExitCode = 3 | ||
| + | $CheckTime = Get-Date | ||
| + | $NeverSyncError = '' | ||
| + | $NoSyncSinceError = '' | ||
| + | $MaxSyncDelta = 7 # jours | ||
| + | $PDriveError = '' | ||
| + | $ZDriveError = '' | ||
| + | $LocalGpoError = '' | ||
| + | $BackupError = '' | ||
| + | $DefaultGpoError = '' | ||
| + | |||
| + | # Déclaration des fonctions | ||
| + | |||
| + | Function Add-MessageData | ||
| + | { | ||
| + | param( | ||
| + | [parameter(position=0)] | ||
| + | [String]$Message, | ||
| + | [parameter(position=1)] | ||
| + | [String]$PC | ||
| + | ) | ||
| + | If ($Message -eq '' | ||
| + | { | ||
| + | $Message = " | ||
| + | } | ||
| + | Else | ||
| + | { | ||
| + | $Message += ", $PC" | ||
| + | } | ||
| + | Return $Message | ||
| + | } | ||
| + | |||
| + | |||
| + | # Vérification de la dernière synchronisation | ||
| + | Foreach ($PC in $ListPC) | ||
| + | { | ||
| + | If ($SyncTimeData.$PC -eq " | ||
| + | { | ||
| + | $NeverSyncError = (Add-MessageData $NeverSyncError $PC) | ||
| + | } | ||
| + | Else | ||
| + | { | ||
| + | $Delta = Get-Date | ||
| + | $SyncTime = $SyncTimeData.$PC | ||
| + | $Delta = $CheckTime - (Get-Date $SyncTime) | ||
| + | If ($Delta.Days -ge $MaxSyncDelta) | ||
| + | { | ||
| + | $NoSyncSinceError = (Add-MessageData $NoSyncSinceError $PC) | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | # Vérification de l' | ||
| + | Foreach ($PC in $ReportData) | ||
| + | { | ||
| + | # Initialisation des variables du CSV | ||
| + | $PCName = $PC.PC | ||
| + | $OnlineStatus = $PC.Online | ||
| + | $PStatus = $PC." | ||
| + | $BackupStatus = $PC." | ||
| + | $LocalStatus = $PC." | ||
| + | $ZStatus = $PC." | ||
| + | $DefaultStatus = $PC." | ||
| + | |||
| + | # Passage à la boucle suivante pour les PC hors ligne | ||
| + | If ($OnlineStatus -eq " | ||
| + | { | ||
| + | continue | ||
| + | } | ||
| + | |||
| + | # Vérification des valeurs | ||
| + | If ($PStatus -ne " | ||
| + | { | ||
| + | $PDriveError = (Add-MessageData $PDriveError $PCName) | ||
| + | } | ||
| + | If ($BackupStatus -ne " | ||
| + | { | ||
| + | $BackupError = (Add-MessageData $BackupError $PCName) | ||
| + | } | ||
| + | If ($LocalStatus -ne " | ||
| + | { | ||
| + | $LocalGpoError = (Add-MessageData $LocalGpoError $PCName) | ||
| + | } | ||
| + | If ($ZStatus -ne " | ||
| + | { | ||
| + | $ZDriveError = (Add-MessageData $ZDriveError $PCName) | ||
| + | } | ||
| + | If ($DefaultStatus -ne " | ||
| + | { | ||
| + | $DefaultGpoError = (Add-MessageData $DefaultGpoError $PCName) | ||
| + | } | ||
| + | } | ||
| + | |||
| + | # Renvoie des valeurs dans Nagios | ||
| + | |||
| + | If ($PDriveError -ne '' | ||
| + | { | ||
| + | $PDriveError = "P Drive Error : " + $PDriveError | ||
| + | $OutputMessageCore = (Add-MessageData $OutputMessageCore $PDriveError) | ||
| + | $ExitCode = 1 | ||
| + | } | ||
| + | If ($BackupError -ne '' | ||
| + | { | ||
| + | $BackupError = " | ||
| + | $OutputMessageCore = (Add-MessageData $OutputMessageCore $BackupError) | ||
| + | $ExitCode = 1 | ||
| + | } | ||
| + | If ($LocalGpoError -ne '' | ||
| + | { | ||
| + | $LocalGpoError = "Local Policy Error : " + $LocalGpoError | ||
| + | $OutputMessageCore = (Add-MessageData $OutputMessageCore $LocalGpoError) | ||
| + | $ExitCode = 1 | ||
| + | } | ||
| + | If ($ZDriveError -ne '' | ||
| + | { | ||
| + | $ZDriveError = "Z Drive Error : " + $ZDriveError | ||
| + | $OutputMessageCore = (Add-MessageData $OutputMessageCore $ZDriveError) | ||
| + | $ExitCode = 1 | ||
| + | } | ||
| + | If ($DefaultGpoError -ne '' | ||
| + | { | ||
| + | $DefaultGpoError = " | ||
| + | $OutputMessageCore = (Add-MessageData $OutputMessageCore $DefaultGpoError) | ||
| + | $ExitCode = 1 | ||
| + | } | ||
| + | If ($NeverSyncError -ne '' | ||
| + | { | ||
| + | $NeverSyncError = "Never Synchronised : " + $NeverSyncError | ||
| + | $OutputMessageCore = (Add-MessageData $OutputMessageCore $NeverSyncError) | ||
| + | $ExitCode = 2 | ||
| + | } | ||
| + | If ($NoSyncSinceError -ne '' | ||
| + | { | ||
| + | $NoSyncSinceError = "No Synchronization since $MaxSyncDelta days : " + $NoSyncSinceError | ||
| + | $OutputMessageCore = (Add-MessageData $OutputMessageCore $NoSyncSinceError) | ||
| + | $ExitCode = 2 | ||
| + | } | ||
| + | If ($OutputMessageCore -eq '' | ||
| + | { | ||
| + | $ExitCode = 0 | ||
| + | } | ||
| + | If ($ExitCode -eq 2) | ||
| + | { | ||
| + | $OutputMessage = " | ||
| + | echo $OutputMessage | ||
| + | exit $ExitCode | ||
| + | } | ||
| + | Elseif ($ExitCode -eq 1) | ||
| + | { | ||
| + | $OutputMessage = " | ||
| + | echo $OutputMessage | ||
| + | exit $ExitCode | ||
| + | } | ||
| + | Elseif ($ExitCode -eq 0) | ||
| + | { | ||
| + | echo "OK - All GPO Applied" | ||
| + | exit $ExitCode | ||
| + | } | ||
| + | Else | ||
| + | { | ||
| + | echo " | ||
| + | exit $ExitCode | ||
| + | } | ||
| + | |||
| + | </sxh> | ||
| - | ~~ DISCUSSION ~~ | + | ~~DISCUSSION~~ |