PowerShell betiğiyle Windows'taki boş disk alanını kontrol edin
Etki alanına katılan tüm Windows sistemlerinde boş disk alanını kontrol etmek istiyoruz. Bunlar Windows Server ve Windows 10 sistemleridir. Disk alanını geri almanın mükemmel bir yolu PowerShell'dir. Bu yazıda Windows Server, Windows 10 ve Windows 11 için PowerShell ile boş disk alanını toplu olarak kontrol edeceğiz.
Boş disk alanını kontrol etme PowerShell betiğini hazırlayın
Get-DiskSpaceReport.ps1 betiğini indirin veya aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırın. Ona Get-DiskSpaceReport.ps1 adını verin ve C:\scripts klasörüne yerleştirin. Eğer yoksa bir komut dosyaları klasörünüz oluşturun.
Set-ExecutionPolicy Unrestricted -Force
Import-Module ActiveDirectory
# Delete reports older than 60 days
$OldReports = (Get-Date).AddDays(-60)
# Location for disk reports
Get-ChildItem "C:\Temp\DiskSpaceReport\*.*" |
Where-Object { $_.LastWriteTime -le $OldReports } |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
# Create variable for log date
$LogDate = get-date -f yyyyMMddhhmm
# Get all systems
$Systems = Get-ADComputer -Properties * -Filter { OperatingSystem -like "*Windows Server*" } |
Where-Object { $_.Enabled -eq $true } | Select-Object Name, DNSHostName | Sort-Object Name
# Loop through each system
$DiskReport = ForEach ($System in $Systems) {
Get-WmiObject win32_logicaldisk `
-ComputerName $System.DNSHostName -Filter "Drivetype=3" `
-ErrorAction SilentlyContinue
}
# Create disk report
$DiskReport | Select-Object `
@{Label = "HostName"; Expression = { $_.SystemName } },
@{Label = "DriveLetter"; Expression = { $_.DeviceID } },
@{Label = "DriveName"; Expression = { $_.VolumeName } },
@{Label = "Total Capacity (GB)"; Expression = { "{0:N1}" -f ( $_.Size / 1gb) } },
@{Label = "Free Space (GB)"; Expression = { "{0:N1}" -f ( $_.Freespace / 1gb ) } },
@{Label = 'Free Space (%)'; Expression = { "{0:P0}" -f ($_.Freespace / $_.Size) } } |
# Export report to CSV file
Export-Csv -Path "C:\Temp\DiskSpaceReport\DiskReport_$logDate.csv" -NoTypeInformation -Delimiter ";"Bunun gibi görünecek.
Temp adında ikinci bir klasör oluşturun ve onu (C:) sürücüsüne yerleştirin. Bundan sonra, DiskSpaceReport klasörünü oluşturun ve onu geçici klasöre yerleştirin. Komut dosyasını çalıştırdıktan sonra raporun kaydedileceği yer burasıdır.
Raporun yolunu değiştirmek istiyor musunuz? PS komut dosyasındaki 8 ve 36 satırlarındaki yolu değiştirmeyi unutmayın.
Get-DiskSpaceReport PowerShell betiğini çalıştırmadan önce
Komut dosyasını çalıştırmadan önce şunlara çok dikkat edin:
Sistemlerin çevrimiçi olması gerekiyor
Etki alanına katılmış bir bilgisayarda çalıştırın
Yönetici hakları
Boş disk alanı Windows Server
Komut dosyaları klasörünün yolunu değiştirin. PowerShell betiğini Get-DiskSpaceReport.ps1 çalıştırın. Etki alanındaki tüm Windows Sunucularını alacak ve disk sürücülerini bir CSV dosyasına aktaracaktır.
PS C:\> cd C:\scripts
PS C:\scripts> .\Get-DiskSpaceReport.ps1CSV dosyasını C:\Temp\DiskSpaceReport konumunda açın. Bu örnekte CSV dosyasını Microsoft Excel ile açtık.
Boş disk alanına özel Windows Sunucuları
Belirli Windows Sunucuları için boş disk alanını dışarı aktarmak istediğinizi varsayalım. Komut dosyasını Active Directory'deki tüm Windows sistemlerinde çalıştırmak yerine, belirli bir liste oluşturabilir ve giriş olarak kullanabilirsiniz.
C:\Temp konumunda ADComputers.csv adında bir CSV dosyası oluşturun. Ana Bilgisayar Adı başlığını ekleyin ve her satıra Windows Sunucularının ana bilgisayar adlarını ekleyin.
Örneğimizde, iki Windows Sunucusundaki boş disk alanını dışa aktarmayı seviyoruz.
satır 15 - satır 24'ü aşağıdaki kodla değiştirin.
# Import CSV file
$Servers = Import-Csv "C:\Temp\ADComputers.csv"
# Loop through each system
$DiskReport = ForEach ($Server in $Servers) {
# Get system
$System = Get-ADComputer $Server.Hostname | Where-Object { $_.Enabled -eq $true } |
Select-Object Name, DNSHostName | Sort-Object Name
Get-WmiObject win32_logicaldisk `
-ComputerName $System.DNSHostName -Filter "Drivetype=3" `
-ErrorAction SilentlyContinue
}Boş disk alanı Windows 10
Windows 10 istemcilerindeki tüm boş disk alanını kontrol etmek istiyorsanız tüm Windows 10 istemcilerini edinmeniz gerekir. PS komut dosyasındaki satır 16'yı şu şekilde düzenleyin:
$Systems = Get-ADComputer -Properties * -Filter { OperatingSystem -like "*Windows 10*" } |PowerShell betiğini çalıştırın ve favori programınızla disk raporu CSV dosyasını kontrol edin. Bu örnekte Microsoft Excel uygulamasıdır.
Boş disk alanı Windows 11
Windows 11 istemcilerindeki tüm boş disk alanını kontrol etmek istiyorsanız tüm Windows 11 istemcilerini edinmeniz gerekir. PS komut dosyasındaki satır 16'yı şu şekilde düzenleyin:
$Systems = Get-ADComputer -Properties * -Filter { OperatingSystem -like "*Windows 11*" } |Ortamdaki tüm Windows disk boyutlarını elde etmek harika.
Not: Disk alanı dolduğunda uyarı almak için her zaman sistemlerde izleme yazılımı kullanın. Komut dosyası, bir izleme sistemi yazılımının yerini alacak şekilde mevcut değildir!
Her zaman olduğu gibi, tüm sistemlerinizde iyi bir izleme yazılımının çalışması önemlidir. Aniden disk sürücüleri dolduğunda sizi hemen uyaracaktır.
Devamını oku: VMware ESXi'de kalın hazırlanmış diski ince diske dönüştürün »
Çözüm
PowerShell ile Windows'ta boş disk alanını nasıl kontrol edeceğinizi öğrendiniz. Etki alanına katılmış Windows Server, Windows 10 veya Windows 11 istemcilerini toplu olarak alın ve disk alanını bir raporda dışa aktarın.
Boş disk alanını kontrol etmek ve bir rapor oluşturmak istediğinizde bu komut dosyasını kullanın. Örneğin, müşterinizle konuşacaksanız ve neden daha fazla disk satın almanız gerektiğini açıklayacaksanız. Ya da faydalı olan şey, disk raporunda sistemlere ne kadar boş alan ayrıldığını görebilmenizdir ve belki de buna ihtiyacınız yoktur. Bu, disk birimi boyutlarını ayarlamanın ve fazladan boş alanı boşa harcamamanın harika bir yoludur.
Bu makaleyi beğendiniz mi? Dosyayı kaydederken Excel CSV üçlü tırnak işaretlerini de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.




