Bonjour,
Je fait appel à vous pour l'aide de l'écriture d'un script qui permettra de connaître la taille sur le disque d'un répertoire.
J'ai trouvé plusieurs solutions mais n 'arrive à récupérer l'information souhaité.
Lorsque je clic droit sur un répertoire, il se peut que la taille et taille sur le disque soient différentes :
Nous pouvons voir qu'il y a une légère différence.
La commande du script que j'ai écrit récupère la première valeur (=> 144 Mo) alors que je souhaiterai récupérer la seconde (=> 146 Mo)
Voici le script :
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 # VARIABLES ==================================================================== #Directory a checker $DirCheck = $args[0] #Warning value $WarningValue = $args[1] #Critical value $CriticalValue = $args[2] #Unite de recherche $ValUnit = $args[3] $Calc = "1$ValUnit" # Verification des seuils if(!($WarningValue -match "^\d+$")){ if(!($CriticalValue -match "^\d+$")){ write-host " Les seuils doivent etre numeric !!!" exit 3 }else{ write-host " Le seuil Warning doit etre numeric !!!" exit 3 } } if(!($CriticalValue -match "^\d+$")){ write-host " Le seuil Critical doit etre numeric !!!" exit 3 } if($WarningValue -gt $CriticalValue) { write-host "[UNKNOWN] Le Seuil warning doit etre inferieur au seuil Critical !!!" exit 3 } if(!(Test-Path $DirCheck -PathType Container)) { write-host "[UNKNOWN] Directory non accessible !!!" exit 3 } else { $Val = ((Get-ChildItem $DirCheck -Recurse -ErrorAction SilentlyContinue -ErrorVariable err | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum / $Calc) foreach ($errorRecord in $err) { if ($errorRecord.Exception -is [System.IO.PathTooLongException]) { Write-Output "Path too long in directory on '$($errorRecord.TargetObject)'." exit 3 } elseIf ($errorRecord.Exception -is [System.UnauthorizedAccessException]) { Write-Output "Directory '$($errorRecord.TargetObject)' non accessible avec ce user !!!" exit 3 } else { Write-Output -ErrorRecord $errorRecord exit 3 } } $Msg = "{0:N2}" -f $Val if ($Val -gt $CriticalValue){ Write-Host "[CRITICAL] Directory $DirCheck = $Msg $ValUnit > $CriticalValue $ValUnit | Directory=$Msg$ValUnit;$WarningValue;$CriticalValue" exit 2 }elseif ($Val -gt $WarningValue){ Write-Host "[WARNING] Directory $DirCheck = $Msg $ValUnit > $WarningValue $ValUnit | Directory=$Msg$ValUnit;$WarningValue;$CriticalValue" exit 1 }else{ Write-Host "[OK] Directory $DirCheck = $Msg $ValUnit | Directory=$Msg$ValUnit;$WarningValue;$CriticalValue" exit 0 } }
Voici le résultat obtenu :
Est-ce qu'il existe un paramètre ou peut-être une autre commande qui pourrait me retourner la valeur souhaité ?PS F:\Scripts\Nagios> ./Check_Folder.ps1 "C:\Users\Fabio\Documents" 100 150 MB
[WARNING] Directory C:\Users\Fabio\Documents = 144,21 MB > 100 MB | Directory=144,21MB;100;150
Merci d'avance de votre aide
Partager