Bonjour,

Je vous explique mon problème.

J'ai une trentaine de serveur à gérer ou je réalise des clichés toutes les 6 heures. Mon soucis c'est que j'ai aucune remonté d'information, du coup je voudrais réaliser un script powershell qui permet de comparer les lecteurs du serveur (C:, D:, G: ) par exemple, et les lettres des clichés réalisés durant les 6 dernières heures et m'afficher "OK" si le volume a un cliché de moins de 6heures, sinon m'afficher "KO".

J'ai fais un petit script powershell sauf qu'il ne m'affiche pas les volumes sans clichés.

Code powershell : 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
$BackupDay = 6
$server = $env:COMPUTERNAME
Set-ExecutionPolicy unrestricted -force
 
Function Get-DriveLetters
{
    $volumes = @{}
    $allvolumes = Get-WmiObject -Class "win32_volume" -ComputerName $server | Select DeviceID, Name
         foreach ($v in $allvolumes)
             {
                 $volumes.add($v.DeviceID, $v.Name)
             }
         $volumes
}
 
Function Get-vol{
    $test2=@{}
    $test = Get-PSdrive -PSProvider filesystem | Select root, Name
        foreach ($t in $test)
             {
                 $test2.add($t.Root, $t.Name)
 
             }
}
 
$teste = Get-vol 
write-host $teste
 
Function Check-ShadowCopies
{
    $allshadowcopies = @()
    foreach ($s in $server)
        {
             $driveletters = Get-DriveLetters $s
             $shadowcopies = Get-WmiObject -Class "Win32_shadowcopy" | Select InstallDate, VolumeName
 
                  foreach ( $copy in $shadowcopies)
                     {
                       $shadowcopy = New-Object System.object              
                       $date = [datetime]::ParseExact($copy.InstallDate.Split(".")[0], "yyyyMMddHHmmss", $null)
 
                       if ( $date -ge (Get-Date).Addhours(-$backupday))
                             { 
                                ## La variable $Etat prend la valeur "OK" ##
 
                                  $Etat = "OK"
 
                                ## On ajoute à l'objet personnalisé $cliches une propriété Etat où l'on mettra la valeur retournée ##
 
                                   $shadowcopy| Add-Member -Type NoteProperty -Name Select -Value $driveletters.item($copy.VolumeName)
                                   $shadowcopy | Add-Member -Type NoteProperty -Name Etat -Value $Etat
                                   $shadowcopy | Add-Member -Type NoteProperty -Name Date -Value $date
                                 ## On ajoute les valeurs retournées de la variable $cliches dans le tableau $Tableau ##
 
                                   $allshadowcopies += $shadowcopy
                       }
 
                         ## Fin du if ##
 
                         ## Sinon ##
 
             else
                {
                    $Etat = "Ko"
                    $shadowcopy | Add-Member -Type Noteproperty -Name select -Value $teste
                }                
 
 
 
     }
         $test2
         $allshadowcopies | Sort-Object Etat,Driveletter -Descending
}
}
 
$checkshadowcopy = Check-Shadowcopies
$checkshadowcopy | Out-File C:\Users\Administrateur\Desktop\test.txt