Remarque : Lors de l'exécution des scripts de cet article, assurez-vous d'ouvrir PowerShell® en tant qu'administrateur.
Vérifier l'utilisation actuelle de votre disque avec PowerShell
Lorsque vous diagnostiquez un espace disque insuffisant sur un serveur Windows®, commencez par vérifier l'utilisation actuelle de vos disques à l'aide de PowerShell. Utilisez la commande suivante pour extraire l'utilisation actuelle du disque pour tous les disques du serveur :
Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object SystemName,
@{ Name = "Drive" ; Expression = { ( $_.DeviceID ) } },
@{ Name = "Size (GB)" ; Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
@{ Name = "FreeSpace (GB)" ; Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) } },
@{ Name = "PercentFree" ; Expression = {"{0:P1}" -f( $_.FreeSpace / $_.Size ) } } |
Format-Table -AutoSize | Out-String
Vérifiez les 15 premiers dossiers par volume
Après avoir déterminé quels volumes manquent d'espace disque, exécutez le script suivant pour déterminer les meilleurs dossiers en fonction de l'utilisation du disque afin de pouvoir déterminer où vous pouvez libérer de l'espace :
cd \
$Table = Get-WmiObject Win32_Volume -ComputerName LocalHost `
| Format-Table Name, `
@{Name="Size(MB)";Expression={"{0:0,0.00}" -f($_.Capacity/1mb)}}, `
@{Name="Free Space(MB)";Expression={"{0:0,0.00}" -f($_.FreeSpace/1mb)}}, `
@{Name="Free (%)";Expression={"{0,6:P0}" -f(($_.FreeSpace/1mb) / ($_.Capacity/1mb))}};
$Table;$input = Read-Host -Prompt 'Input path to traverse'; Set-Location $Input;
function Get-LowDisk($maxResults=15, $startLocation=(Get-Location)){
if("$startLocation".EndsWith("\")){$startLocation = "$startLocation".TrimEnd("\")}
function Calc-Directories ($startFolder, $foldersHT=@{}, $depth=1){ $itemSum = 0L;
if($startFolder -notmatch "c\:\\Windows|System Volume Information"){
$dirList = Get-ChildItem ($startFolder) -force
$folders = $dirList | Where-Object {$_.PSIsContainer -eq $True} | Where {($_.attributes.toString() -like "*ReparsePoint*") -eq $False};
$files = $dirList | Where-Object {!$_.PSIsContainer -eq $True}; if($files){$itemSum = ($files | Measure-Object -property length -sum).sum;}
if(!$folders.Count -and $folders -ne $null){
$subFolder = "$startFolder\" + $folders;
$itemSum += Calc-Directories "$subFolder" $foldersHT ($depth+1);
}else{
for ($i=0;$i -lt $folders.Count; $i++ ){
$subFolder = "$startFolder\" + $folders[$i].Name;
if($depth -le 1){ Write-Progress -Activity "Finding Largest Folders" -status ":: Top Level Folders Progress :: $subFolder"-percentComplete ($i / $folders.count*100) -Id 1;}
$itemSum += Calc-Directories "$subFolder" $foldersHT ($depth+1);
} }
}elseif($startFolder -match "c\:\\Windows"){$itemsum=(Get-ChildItem C:\Windows -force -Recurse -ErrorAction SilentlyContinue | Measure-Object -property length -sum).sum;}
$foldersHT[$startFolder] = $itemSum;
return $itemSum;
}
$elapsed = [System.Diagnostics.Stopwatch]::StartNew();
$resultsHT = @{}; Calc-Directories $startLocation $resultsHT | Out-Null;
$formattedOutput = $resultsHT.GetEnumerator() | sort value -desc | select -First $maxResults | Format-Table -AutoSize @{Expression={$_.Name};Label="Folder Name"}, @{Expression={($_.Value / 1GB)};Label="Size (GB)";Format="{0:N2}"};
write-host "`r`n`r`n-- Total Disk Scan Time: $($elapsed.Elapsed.ToString()) --";
$Table;
write-host "`r`n-----------`r`nTop $maxResults folders by size`r`n-----------" -foregroundcolor "yellow";
return $formattedOutput;
} Get-LowDisk 15 ;
Après avoir exécuté le script, un message vous invite à Saisir le chemin à parcourir . Tapez la lettre de lecteur que vous avez trouvée en utilisant le script précédent et appuyez sur Entrée pour continuer.
Gardez à l'esprit que ce processus peut prendre un certain temps en fonction du nombre de fichiers et de dossiers sur le disque. Une fois que le script a renvoyé les résultats, vérifiez les dossiers répertoriés pour voir s'il y a des fichiers qui ne sont plus nécessaires. Supprimez ces fichiers pour libérer de l'espace disque.
Avertissement : Assurez-vous de ne supprimer que les fichiers ou dossiers que vous connaissez. Si vous supprimez des fichiers ou des dossiers inconnus, vous risquez de perdre des fichiers système ou des logiciels importants. Cette perte pourrait rendre le serveur ou le logiciel non fonctionnel.