PowerShell: Klasör Boyutu Nasıl Alınır?


Bir sistem yöneticisi veya BT uzmanı olarak, bilgisayarınızdaki veya sunucunuzdaki dizinlerin veya klasörlerin boyutunu verimli bir şekilde ölçebilmek, disk alanı ayırabilmek ve yoğun depolama kullanan dizinleri etkili bir şekilde tanımlayabilmek çok önemlidir. Dosya Gezgini, klasör boyutlarına ilişkin temel bir genel bakış sunarken PowerShell, hassas ve ayrıntılı klasör boyutu analizi ve otomasyon senaryoları için daha gelişmiş yetenekler sunar. Bu makalede, klasör boyutlarını kolaylıkla almanızı sağlayacak çeşitli PowerShell komutlarını ve ipuçlarını inceleyeceğiz.

PowerShell'e giriş ve klasör boyutlarını alma yetenekleri

PowerShell, .NET çerçevesi üzerine kurulu bir komut satırı kabuğu ve komut dosyası dilidir. PowerShell ile yönetim görevlerini otomatikleştirebilir, sistem yapılandırmalarını yönetebilir ve sistem bileşenlerine ve verilerine erişebilirsiniz. PowerShell, saniyeler içinde klasör boyutlarını almanıza, zamandan tasarruf etmenize ve çalışmayı daha verimli hale getirmenize yardımcı olabilecek güçlü bir komut seti sağlar. Bu kapsamlı kılavuzda, klasör boyutlarını doğru bir şekilde elde etmek için çeşitli PowerShell tekniklerini inceleyeceğiz. Klasör boyutlarını almak ve hesaplamak için Get-ChildItem ve Measure-Object gibi temel cmdlet'lerin kullanımına değineceğiz.

Alt klasörler de dahil olmak üzere bir klasörün boyutunu GB veya MB cinsinden almak ve dizinlerin veya klasörlerin boyutunu listelemek için PowerShell'i kullanabilirsiniz.

Klasör boyutlarını almak için temel PowerShell komutu

PowerShell'de bir klasörün boyutunu öğrenmenin en basit yolu, Get-ChildItem cmdlet'ini -Path parametresiyle kullanmak ve Get-ChildItem cmdlet'inin çıktısını şuraya yönlendirmektir: “Uzunluk” özelliğini belirten Measure-Object cmdlet'i. İşte bir örnek:


Get-ChildItem -Path "C:\Temp" | Measure-Object -Property Length -Sum

Bu komut, C:\Temp klasörünün ve tüm dosyalarının boyutunu bayt cinsinden döndürür. -Property parametresine ve -Sum anahtarına sahip Measure-Object cmdlet'i, klasörün ve tüm alt klasörlerinin toplam boyutunu hesaplamak için kullanılır . Get-ChildItem cmdlet'i için GCI takma adını da kullanabilirsiniz.

Alt klasörler dahil klasör boyutunu alın ve PowerShell kullanarak CSV'ye aktarın

Alt klasörlerin boyutlarını klasör boyutu hesaplamasına dahil etmek istiyorsanız Get-ChildItem cmdlet'i ile -Recurse parametresini kullanabilirsiniz. Bu parametre, yinelemeli aramayı etkinleştirerek PowerShell'in alt klasörlerin içeriğini de almasına olanak tanır. İşte bir örnek:


(Get-ChildItem -Path C:\Temp -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB

Bu komut, C:\Temp klasörünün ve tüm alt klasörlerinin boyutunu MB cinsinden döndürür. Boyutu GB cinsinden almak istiyorsanız, / 1MB'ı / 1GB olarak değiştirmeniz yeterlidir. Daha iyi analiz için tüm Klasörleri ve Alt Klasör boyutlarını bir CSV dosyasına aktarmaya ne dersiniz?


#Parameters
$path = "C:\Temp"
$outputFile ="C:\Temp\FolderSize.csv"

#Get all Folders, Sub-Folders recursively
$folders = Get-ChildItem -Path $Path -Directory -Recurse

#Loop through each folder to Find the size
$FolderSizes = foreach ($folder in $folders) {
    $size = (Get-ChildItem -Path $folder.FullName -File -Recurse | Measure-Object -Property Length -Sum).Sum
    $sizeInMB = $size / 1MB

    #Collect Data
    [PSCustomObject]@{
        FolderName = $folder.FullName
        SizeInMB = [Math]::Round($sizeInMB,2)
    }
}
#Export the Result to CSV
$FolderSizes | Format-table
$FolderSizes | Export-Csv -Path $outputFile -NoTypeInformation

Alt Klasörler İçin Boyut Hesaplamasını Ayarlama

Boyut hesaplamasına alt dizinleri dahil ederken sonucun tüm dosya ve klasörlerin birleşik boyutu olacağını unutmamak önemlidir. Ancak, her bir alt klasörün boyutunu toplam boyutla birlikte ayrı ayrı elde etmek istiyorsanız, komutu biraz değiştirebilirsiniz.


Get-ChildItem -Recurse -Path C:\Temp | ForEach-Object {
    $size = (Get-ChildItem -File -Path $_.FullName | Measure-Object -Property Length -Sum).Sum
    [PSCustomObject]@{
        Folder = $_.FullName
        Size = $size
    }
}

C:\Temp'i, analiz etmek istediğiniz klasörün gerçek yoluyla değiştirin. Bu komut, her alt klasörün boyutunu tam yolu ile birlikte görüntüler.

Megabayt veya Gigabayt cinsinden klasör boyutunu almak için PowerShell

Varsayılan olarak Measure-Object cmdlet'i kullanılarak hesaplanan boyut bayt cinsinden görüntülenir. Boyutu megabayt (MB) veya gigabayt (GB) gibi insanlar tarafından daha okunabilir biçimlere dönüştürmek istiyorsanız toplamı uygun dönüştürme faktörüne bölebiliriz. Bir klasörün boyutunu GB cinsinden almak için aşağıdaki komutu kullanabilirsiniz:

Boyutu megabayt cinsinden görüntülemek için toplamı 1.048.576'ya (bayt cinsinden 1 MB) bölün:


(Get-ChildItem -File -Path C:\FolderPath | Measure-Object -Property Length -Sum).Sum / 1MB

Benzer şekilde, boyutu GB cinsinden elde etmek için çıktıyı 1 GB'a bölün.


[math]::Round((Get-ChildItem -Path C:\Temp -Recurse | Measure-Object -Property Length -Sum).Sum / 1GB,2)

Bu komut, C:\Temp klasörünün ve tüm alt klasörlerinin boyutunu GB cinsinden döndürür. Ayrıca iki ondalık basamağı elde etmek için [math]::Round() fonksiyonunu kullandık.

Klasör boyutlarını listelemek için PowerShell

Bilgisayarınızdaki veya sunucunuzdaki dizinlerin veya klasörlerin boyutunu listelemek için de PowerShell'i kullanabilirsiniz. İşte bir örnek:


Get-ChildItem -Path C:\ -Directory | ForEach-Object { $_.FullName + ": " + ((Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB) + " MB" }

Bu komut, sabit sürücünüzün C:\ içindeki tüm dizinlerin veya klasörlerin boyutunu MB cinsinden listeler.

Belirli Dosya Türleri hariç bir klasörün boyutunu alma

Bir klasörün ve alt klasörlerinin boyutunu almak ancak belirli dosyaları hariç tutmak istiyorsanız aşağıdaki komutu kullanabilirsiniz:


(Get-ChildItem -Path C:\Logs -Recurse -Exclude *.log | Measure-Object -Property Length -Sum).Sum / 1MB

Bu komut, .log uzantısına sahip tüm dosyalar hariç olmak üzere, C:\Logs klasörünün ve tüm alt klasörlerinin boyutunu döndürür.

Dosyaları Türe Göre Filtreleme

Belirli bir dizin içindeki belirli dosya türlerinin boyutunu hesaplamak istiyorsanız, boyut hesaplamasını gerçekleştirmeden önce Get-ChildItem cmdlet'ini kullanarak dosyaları filtreleyebilirsiniz. Örneğin, yalnızca bir klasördeki PDF dosyalarının boyutunu hesaplamak için aşağıdaki komutu kullanın:


(Get-ChildItem -File -Path C:\Reports -Filter *.pdf | Measure-Object -Property Length -Sum).Sum

C:\Reports'u analiz etmek istediğiniz klasörün gerçek yoluyla ve *.pdf'yi istediğiniz dosya uzantısıyla değiştirin. “Nesne-Nerede” cmdlet'inin yardımıyla dosyaları “Oluşturulma Tarihi” gibi belirli niteliklere göre filtreleyebilir ve boyutu hesaplayabilirsiniz. Örneğin.


$Path = "C:\Temp"
$StartDate = (Get-Date).AddDays(-7)

#Get All Files created in the past 7 days
$Files = Get-ChildItem -Path $path -File -Recurse | Where-Object { $_.CreationTime -ge $startDate }

$TotalSize = ($Files | Measure-Object -Property Length -Sum).Sum
$totalSizeInMB = $totalSize / 1MB

Write-Host "Total Size of Files Created in the Past 7 Days: $totalSizeInMB MB"

Yaygın hatalar ve sorun giderme ipuçları

Klasör boyutlarını almak için PowerShell'i kullanırken hatalarla karşılaşırsanız bazı sorun giderme ipuçlarını burada bulabilirsiniz:

  • Ölçmeye çalıştığınız klasörlere erişim için doğru izinlere sahip olduğunuzdan emin olun. PowerShell betiğini Yönetici olarak çalıştırın. Aksi halde “Get-ChildItem: ‘C:\Temp\Reports’ yoluna erişim” hatası alırsınız.
  • Klasöre giden doğru yolu kullandığınızdan emin olun.
  • Komut için doğru sözdizimini kullandığınızdan emin olun. Bu makaledeki örnekleri inceleyin ve emin değilseniz PowerShell belgelerine bakın.

PowerShell Yöntemlerini ve Alternatif Araçları Karşılaştırma

PowerShell, klasör boyutu analizi için güçlü yetenekler sağlarken, PowerShell yöntemlerini kullanmanın artılarını ve eksilerini dikkate almak ve belirli kullanım durumları için alternatif araçları keşfetmek önemlidir.

PowerShell Yöntemlerinin Artıları ve Eksileri

Artıları:

  1. Esneklik ve Özelleştirme: PowerShell, kapsamlı özelleştirme ve komut dosyası oluşturma yeteneklerine olanak tanıyarak onu karmaşık klasör boyutu analiz senaryoları için uygun hale getirir.
  2. Diğer PowerShell Komutlarıyla Entegrasyon: PowerShell cmdlet'leri, görevleri otomatikleştirmek ve gelişmiş analiz gerçekleştirmek için diğer PowerShell komutlarıyla birleştirilebilir.
  3. Yerleşik PowerShell Modülleri: PowerShell, klasör boyutu analizi için güçlü özellikler sağlayan Measure-Object ve Get-ChildItem gibi çeşitli yerleşik modüllere ve cmdlet'lere sahiptir.

Eksileri :

  1. Öğrenme Eğrisi: PowerShell'in, özellikle PowerShell komut dosyası oluşturmanın sözdizimini ve nüanslarını kavramayı zor bulabilecek yeni başlayanlar için bir öğrenme eğrisi vardır.
  2. Yürütme Politikası Kısıtlamaları: PowerShell yürütme politikaları, komut dosyalarının ve komutların yürütülmesini kısıtlayabilir ve belirli komutları çalıştırmak için ek yapılandırma gerektirebilir.
  3. Basit Görevler için Karmaşıklık: Basit klasör boyutu analizi için PowerShell cmdlet'lerinin kullanılması, birden fazla komutun yazılmasını ve yürütülmesini gerektirebilir ve bu da zaman alıcı olabilir.

Klasör Boyutu Analizi için Alternatif Araçları Keşfetmek

PowerShell, klasör boyutu analizi için çok yönlü bir araç olsa da, alternatif araçlar daha kullanıcı dostu arayüzler ve ek işlevler sağlayabilir. İşte keşfetmeye değer birkaç alternatif araç:

  1. TreeSize: TreeSize, klasör boyutlarının görsel bir temsilini sunan ve dosya arama ve yinelenen dosya algılama gibi ek özellikler sağlayan popüler bir üçüncü taraf araçtır.
  2. WinDirStat: WinDirStat, klasör boyutlarının grafiksel gösterimini sağlayan ve kullanıcıların depolama açısından yoğun dosya ve klasörleri kolayca tanımlamasına olanak tanıyan, yaygın olarak kullanılan başka bir araçtır.
  3. Klasör Boyutu Gezgini: Klasör Boyutu Gezgini, klasör boyutlarının ayrıntılı bir görünümünü sağlayarak kullanıcıların disk alanı kullanımını verimli bir şekilde analiz etmesine olanak tanıyan hafif bir araçtır.

Alternatif bir araç seçerken kullanım kolaylığı, gereken belirli özellikler ve işletim sisteminizle uyumluluk gibi faktörleri göz önünde bulundurun.

Çözüm

Bu kapsamlı kılavuzda PowerShell kullanarak klasör boyutlarını elde etmek için çeşitli yöntem ve teknikleri araştırdık. Klasör boyutlarını hesaplamak ve bunları insan tarafından okunabilir formatlarda doğru bir şekilde görüntülemek için Get-ChildItem ve Measure-Object gibi temel cmdlet'leri nasıl kullanacağımızı öğrendik. WMI ve NET çerçevesi ayrıca PowerShell kullanarak klasör boyutunu almanın yollarını da sunar. Yine de daha verimli ve daha hızlı bir yöntem yerel PowerShell yöntemini kullanmaktır. İster PowerShell cmdlet'lerini ister alternatif araçları kullanmayı seçin, klasör boyutlarının nasıl alınacağını ve analiz edileceğini anlamak, verimli disk alanı yönetimi için çok önemlidir.

Sağlanan en iyi uygulamaları ve sorun giderme ipuçlarını takip ederek, klasör boyutu analizinizi optimize edebilir ve dosya ve klasör depolama alanınıza ilişkin değerli bilgiler elde edebilirsiniz. Bu kılavuzdan edinilen bilgilerle, PowerShell'i kullanarak klasör boyutlarını ölçme ve yönetme konusunda uzmanlaşacak donanıma sahip olursunuz.

İlgili makaleler