Microsoft PowerShell’de genellikle bir hedefe ulaşmanın birkaç yolu vardır. Bazen önemli hız farklılıkları olabilir.
Çoğu pratik PowerShell kullanım senaryosunda, PowerShell’deki hız pek önemli değildir. Ama öyleyse ölçü-komut ile önlem almakta fayda var!
Burada dosya sistemi işlemlerine örnek olarak göstermek istiyorum. Yalnızca alt dizinleri listelemek için (sınıf System.IO.DirectoryInfo) dizinler içinde birkaç alternatif vardır:
(new-object System.IO.DirectoryInfo c:windows).GetDirectories()
dir -Directory
dir | where psiscontainer
dir | where mode -like "*d*"
Sadece dosyaları listelemek için bile (sınıf System.IO.FileInfo) dizinler içinde birkaç alternatif vardır:
(new-object System.IO.DirectoryInfo c:windows).GetFiles()
dir -file
dir | where psiscontainer -eq $false
dir | where mode -notlike "*d*"
Muhtemelen şu anda aklıma gelmeyen başka alternatifler de vardır. Bu yazının yorumlarına bildiğiniz diğer alternatif komutları yazmaktan çekinmeyin.
Yukarıdaki dört alternatifin karşılaştırılması aşağıdaki şekli verir.
Kesin sonuçlar var:
Windows PowerShell 5.1: Klasörleri listeleyin
PowerShell 7.2: Klasörleri listeleyin
PowerShell 7.2: Dosyaları listeleme
()
Haberin Sonu
Çoğu pratik PowerShell kullanım senaryosunda, PowerShell’deki hız pek önemli değildir. Ama öyleyse ölçü-komut ile önlem almakta fayda var!
Burada dosya sistemi işlemlerine örnek olarak göstermek istiyorum. Yalnızca alt dizinleri listelemek için (sınıf System.IO.DirectoryInfo) dizinler içinde birkaç alternatif vardır:
(new-object System.IO.DirectoryInfo c:windows).GetDirectories()
dir -Directory
dir | where psiscontainer
dir | where mode -like "*d*"
Sadece dosyaları listelemek için bile (sınıf System.IO.FileInfo) dizinler içinde birkaç alternatif vardır:
(new-object System.IO.DirectoryInfo c:windows).GetFiles()
dir -file
dir | where psiscontainer -eq $false
dir | where mode -notlike "*d*"
Muhtemelen şu anda aklıma gelmeyen başka alternatifler de vardır. Bu yazının yorumlarına bildiğiniz diğer alternatif komutları yazmaktan çekinmeyin.
Yukarıdaki dört alternatifin karşılaştırılması aşağıdaki şekli verir.
Kesin sonuçlar var:
- Doğrudan .NET sınıf kitaplığını kullanmak açık ara en hızlı çözümdür. PowerShell komutları .NET sınıf kitaplığının bir soyutlaması olduğundan bu beklenen bir durumdur.
- PowerShell 7’deki komutlar, Windows PowerShell 5.1’dekinden çok daha hızlıdır.

Windows PowerShell 5.1: Klasörleri listeleyin

PowerShell 7.2: Klasörleri listeleyin

PowerShell 7.2: Dosyaları listeleme
()
Haberin Sonu