IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Monitoring de PC


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Par défaut Monitoring de PC
    Bonjour

    J'ai trouvé un script de monitoring des PC sur internet que j'ai modifié à ma guise. Tout fonctionne bien.
    Cependant, j'aimerais rajouté maintenant une chose supplémentaire dedans l'info qui est envoyée dans l'e-mail : la description correspondante au PC qui est dans l'AD. Voici le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    # Ajoute le snapin de gestion AD
    $Snapin="Quest.ActiveRoles.ADManagement"
    try {
    	Get-PSSnapin  $Snapin -ErrorAction Stop | Out-Null
    }
    catch {
    	Write-Host "Ajout du snapin AD de quest.com"
    	Add-PSSnapin $Snapin
    }
    
    $enc = New-Object System.Text.utf8encoding
    $Day = Get-Date -Format dddd
    
    if (($Day -eq "Sunday") -or ($Day -eq "Saturday")) 
    { 
        # Remet à 0 la liste d'ordinateurs avant la boucle
        $OutageHosts = $Null
        # Précise le temps (en minutes) de délai avant l'envoi des notifications e-mail pour les ordianteurs éteints
        $EmailTimeOut = 360
        # Précise le temps d'attente (en secondes) pour le prochain test des ordinateurs
        $SleepTimeOut = 3600
    }
    
    else
    {
        # Remet à 0 la liste d'ordinateurs avant la boucle
        $OutageHosts = $Null
        # Précise le temps (en minutes) de délai avant l'envoi des notifications e-mail pour les ordianteurs éteints
        $EmailTimeOut = 30
        # Précise le temps d'attente (en secondes) pour le prochain test des ordinateurs
        $SleepTimeOut = 30
    }
    
    # Précise le nombre d'ordinateurs qui doivent être éteints avant d'interrompre le script
    $MaxOutageCount = 100
    # Précise qui doit reçevoir l'e-mail
    $notificationto = "DistITScriptsAlert@mydomain.net"
    # Précise qui doit envoyer l'e-mail
    $notificationfrom = "Monitoring@mycompany.ch"
    # Précise le serveur SMTP
    $smtpserver = "smtp.mydomain.net"
    
    Write-Host "Démarrage du Monitoring" -BackgroundColor Green -ForegroundColor Black
    $Now = Get-date
    $Body = "Le monitoring a correctement démarré le $Now"
    Send-MailMessage -Body "$body" -to $notificationto -from $notificationfrom `
    -Subject "Monitoring démarré" -SmtpServer $smtpserver -Priority High -Encoding $enc
    
    # Début de la boucle ici
    Do{
    $available = $Null
    $notavailable = $Null
    Write-Host (Get-Date)
    # Lis la liste d'ordinateurs à chaque cycle, pour ajouter ou supprimer des ordinateurs
    # À partir de la liste sans modifier la tâche ou le script
    # À partir de l'AD grâce à la commande GET-QADComputer
    Get-QADComputer -SearchRoot "mydomain.net/companies/mycompany" -ldapFilter ‘(&(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(cn=CF*)(cn=TT*)(cn=SC*)(cn=IPR*))(!(cn=TT-BK*))(!(cn=037))(!(cn=028))(!(cn=025))(!(cn=007)))’ | 
    Select-Object -Property Name,Description | ForEach-Object {
    	$_.Name.ToUpper()
        $Description = $_.Description
    } |
    ForEach-Object {
    ipconfig /flushdns | Out-Null
    if(Test-Connection -ComputerName $_ -Count 1 -ea silentlycontinue)
        {
    	 # Si l'ordinateur est en ligne ça l'écrit à l'écran
         write-host "En ligne ---> "$_ -BackgroundColor Green -ForegroundColor Black
         [Array]$available += $_
        }
    else
        {
    	 # Si l'ordinateur est hors-ligne, ça écrit un avertissement sur l'écran
         write-host "Hors-ligne ------------> "$_ -BackgroundColor Yellow -ForegroundColor Black
         if(!(Test-Connection -ComputerName $_ -Count 1 -ea silentlycontinue))
           {
    		# Si l'ordinateur est injoignable après 1 (-Count 1 ci-dessus) ping complet, ça écrit une erreur sur l'écran et envoi un e-mail
            write-host "Ordinateur hors-ligne ------------> "$_ -BackgroundColor Red -ForegroundColor Black
            [Array]$notavailable += $_
    
            if ($OutageHosts -ne $Null)
                {
                    if (!$OutageHosts.ContainsKey($_))
                    {
    				 # La première fois hors ligne, ajouter à la liste et envoi d'un e-mail
                     Write-Host "$_ n'est pas dans la liste d'ordinateurs hors-ligne, première fois hors-ligne"
                     $OutageHosts.Add($_,(get-date))
                     $Now = Get-date
                     $Body = "$_ ($Description) est hors-ligne le $Now"
                     Send-MailMessage -Body "$body" -to $notificationto -from $notificationfrom `
                      -Subject "$_ hors-ligne" -SmtpServer $smtpserver -Priority High -Encoding $enc
                    }
                    else
                    {
    					# Si l'ordinateur est dans la liste ne rien faire pendant 15 minutes puis le retirer de la liste
                        Write-Host "$_ est déjà dans la liste d'ordinateurs hors-ligne"
                        if (((Get-Date) - $OutageHosts.Item($_)).TotalMinutes -gt $EmailTimeOut)
                        {$OutageHosts.Remove($_)}
                    }
                }
            else
                {
    				# Première fois injoignable création de la liste et envoi de l'e-mail
                    Write-Host "Ajout de $_ à la liste d'ordinateurs hors-ligne"
                    $OutageHosts = @{$_=(get-date)}
    				$Now = Get-date
                    $Body = "$_ ($Description) est hors-ligne le $Now" 
                    Send-MailMessage -Body "$body" -to $notificationto -from $notificationfrom `
                     -Subject "$_ hors-ligne" -SmtpServer $smtpserver -Priority High -Encoding $enc
                } 
           }
        }
    }
    # Report to screen the details
    Write-Host "Compte ordianteurs en ligne :"$available.count
    Write-Host "Compte ordinateurs hors-ligne :"$notavailable.count
    Write-Host "Liste d'ordinateurs hors-ligne :"
    $OutageHosts
    Write-Host ""
    Write-Host "Attente $SleepTimeOut secondes"
    sleep $SleepTimeOut
    if ($OutageHosts.Count -gt $MaxOutageCount)
    {
    	# Si il y a plus d'un certain nombre d'ordinateurs injoignables après une heure abandonner le script
        $Exit = $True
        $body = $OutageHosts | Out-String
        Send-MailMessage -Body "$body" -to $notificationto -from $notificationfrom `
         -Subject "Plus de $MaxOutageCount ordinateurs hors-ligne, surveillance abandonnée" -SmtpServer $smtpServer
    }
    }
    while ($Exit -ne $True)
    J'ai ajouté aux Get-QADComputer le Select-OBject -Property avec Name et Description
    Ensuite dans le ForEach-Object du Get-QADComputer j'avais seulement : $_.Name.ToUpper() et ja'i ajouté une deuxième ligne contenant $Description = $_.Description

    Et pour finir j'ai ajouté ma variable $Description dans le $Body de mon Send-MailMessage.

    Cependant, j'ai des descriptions, mais celles-ci sont erronées et ne correspondent pas au bon PC dans l'AD ...

    Merci par avance.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    vérifie en mode console si ta requête fonctionne.
    Sinon reste le debug avec ISE...

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Par défaut
    Salut

    Alors comme précisé sur le premier message ça fonctionne , une description descend mais pas celle du bon PC et je ne sais de quoi ça vient ...

Discussions similaires

  1. "monitorer" un switch
    Par nilsmag dans le forum Développement
    Réponses: 1
    Dernier message: 05/10/2005, 16h15
  2. Outils de monitoring reseau
    Par Spoutnik dans le forum Développement
    Réponses: 1
    Dernier message: 03/03/2005, 11h38
  3. Logiciel de monitoring
    Par Olivier Regnier dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 05/09/2004, 15h27
  4. API de monitoring de ressource
    Par jah dans le forum Windows
    Réponses: 3
    Dernier message: 15/06/2004, 00h15
  5. le monitoring
    Par bollam dans le forum Développement
    Réponses: 6
    Dernier message: 16/12/2002, 08h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo