PowerShell'de Bir Dosyanın Dize İçerip içermediği Nasıl Kontrol Edilir?
PowerShell'de dosyalarla çalışırken, bir dosyanın belirli bir dize içerip içermediğini kontrol etme gereksinimleriyle karşılaşabilirsiniz. PowerShell, bir dosyanın dize içerip içermediğini kontrol etmek için farklı yöntemler sağlar. Her yöntemi örneklerle kontrol edelim.
PowerShell'de bir dosyanın belirli bir dize içerip içermediğini kontrol etmek için Select-String cmdlet'ini, arama teriminizi belirten -Pattern parametresiyle ve dosyanın konumunu tanımlamak için -Path parametresiyle birlikte kullanabilirsiniz. Basit bir doğru veya yanlış dönüşü için -Quiet anahtarını ekleyin. Örneğin: $containsString=Select-String -Path “C:\MyFolder\MyFile.txt” -Pattern “searchTerm” -Quiet, “searchTerm” bulunursa True değerini döndürür, aksi halde False. değerini döndürür. güçlü>
Tüm PowerShell komut dosyalarını yürütmek için Visual Studio kodunu kullanıyorum. Örnekleri yürütmek için Windows PowerShell ISE'yi de kullanabilirsiniz.
Ve her yöntem için bir .txt dosyası alacağım.
Bir Dosyanın PowerShell'de Dize İçerip İçermediğini Kontrol Edin
Şimdi bir dosyanın belirli bir dize içerip içermediğini kontrol etmek için PowerShell'in çeşitli yöntemlerini kontrol edelim.
1. Select-String Cmdlet'ini Kullanma
PowerShell'deki Select-String cmdlet'i, Unix veya Linux'taki grep komutuna benzer. Bu komutu dosyalar içindeki metin kalıplarını aramak için kullanabilirsiniz. Giriş dizeleri ve dosyalarındaki metin kalıplarını aramak için normal ifade eşleştirmeyi kullanır.
Burada, bir dosyanın belirli bir dize içerip içermediğini kontrol etmek için PowerShell'de Select-String'in nasıl kullanılacağına ilişkin basit bir örnek verilmiştir.
Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershellfaqs"Bu komut, “C:\Klasörüm” konumunda bulunan “MyFile.txt” dosyasında “powershellfaqs” dizesini arar. Dize bulunursa, Select-String bazı ek bağlam bilgileriyle birlikte dizeyi içeren satırı veya satırları döndürür.
Aşağıdaki ekran görüntüsü, bu dosyanın dizeyi iki kez içerdiğini ve her iki satırı da görüntülediğini göstermektedir.
2. PowerShell'de Birden Çok Dosyada Dize Kontrolü Yapın
Bazen klasördeki tüm dosyalarda bir sorun olup olmadığını kontrol etmek isteyebilirsiniz ve bunu PowerShell'de yapmak kolaydır.
PowerShell'de birden fazla dosyada belirli bir dizeyi kontrol etmek için Get-ChildItem'i Select-String ile birleştirebilirsiniz:
Get-ChildItem -Path "C:\MyFolder\*.txt" | Select-String -Pattern "powershellfaqs"Bu komut dosyası "C:\Klasörüm" içindeki tüm metin dosyalarında "powershellfaqs" ifadesini arar. Dizeyi içeren tüm dosyaları, dizenin bulunduğu satırlarla birlikte listeler.
3. -Sessiz Anahtarını Kullanma
Dizenin dosyada sunulup sunulmadığını veya PowerShell'de sunulmadığını bilmek istiyorsanız bu başka bir basit yöntemdir. Sadece doğru veya yanlış değerini döndürür.
Yalnızca dizenin dosyada bulunup bulunmadığını bilmeniz gerekiyorsa ve belirli satırları görmeniz gerekmiyorsa PowerShell'deki -Quiet anahtarını kullanabilirsiniz. Bu, bir boole değeri döndürür: dize bulunursa True, aksi takdirde False.
$containsString = Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershellfaqs" -Quiet
$containsString
Burada çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz; dize dosyada sunulduğu için true değerini döndürür.
4. -match Operatörü ile Bir Dizinin Var Olup Olmadığının Kontrol Edilmesi
Bir dosya içinde bir dizenin var olup olmadığını kontrol etmenin başka bir yöntemi de PowerShell'deki -match operatörünü kullanmaktır. Öncelikle dosya içeriğini bir değişkene okumanız ve ardından dizeyi aramak için -match komutunu kullanmanız gerekir.
$content = Get-Content -Path "C:\MyFolder\MyFile.txt"
$containsString = $content -match "powershellfaqs"Bu yaklaşım, dizeyi kontrol ettikten sonra dosya içeriği üzerinde ek işlemler gerçekleştirmek istediğinizde kullanışlıdır.
5. .Contains() Yöntemini Kullanmak
Bu, bir dizenin PowerShell'deki bir dosyada içerip içermediğini kontrol etmenin başka bir basit yöntemidir. PowerShell'de bir dize nesnesinde .Contains() yöntemini kullanabilirsiniz. Dosyayı bir değişkene okuduktan sonra dizenin belirttiğiniz terimi içerip içermediğini kontrol edebilirsiniz.
$content = Get-Content -Path "C:\MyFolder\MyFile.txt" -Raw
$containsString = $content.Contains("powershellfaqs").Contains() öğesinin büyük/küçük harfe duyarlı olduğunu unutmayın. Büyük/küçük harfe duyarlı olmayan bir arama için, .ToLower() veya .ToUpper() kullanarak hem içeriği hem de arama terimini aynı büyük/küçük harfe dönüştürebilirsiniz.
İşte büyük/küçük harfe duyarlı olmayan arama için PowerShell betiği.
$content = Get-Content -Path "C:\MyFolder\MyFile.txt" -Raw
$lowercaseContent = $content.ToLower()
$containsString = $lowercaseContent.Contains("powershellfaqs".ToLower())6. -like Operatörünü Joker Karakterlerle Kullanmak
PowerShell'de -like operatörü, desen eşleştirme için joker karakterler kullanmanıza olanak tanır. Bir dizenin belirli bir sözcük veya kalıp içerip içermediğini kontrol etmek istediğinizde bu yararlı olabilir.
$content = Get-Content -Path "C:\MyFolder\MyFile.txt"
$containsString = $content -like "*powershell*"Yıldız işaretleri * herhangi bir sayıda karakteri temsil eden joker karakterlerdir. Bu komut, içeriğin herhangi bir yerinde “powershell” bulunursa True sonucunu döndürür.
7. Normal İfadeleri Kullanmak
PowerShell'de kalıp eşleştirme araması yapmak için normal ifadeleri de kullanabilirsiniz. Select-String ile normal ifadeleri kullanabilirsiniz. Bu, metin içindeki karmaşık kalıpları aramanıza olanak tanır.
Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershell\w+"
Bu örnekte \w+, "powershell" ifadesinin hemen ardından gelen bir veya daha fazla sözcük karakteriyle eşleşen normal bir ifadedir.
Çözüm
PowerShell, bir dosyanın belirli bir dize veya kalıp içerip içermediğini kontrol etmek için çeşitli yöntemler sağlar. Bu PowerShell eğitiminde, aşağıdaki yöntemleri kullanarak bir dosyanın dize içerip içermediğinin nasıl kontrol edileceğini örneklerle anlattım:
- Select-String Cmdlet'ini Kullanma
- PowerShell'de Birden Çok Dosyada Dize olup olmadığını kontrol edin
- -Sessiz Anahtarını Kullanma
- -match Operatörü ile bir Dizenin Var olup olmadığının kontrol edilmesi
- .Contains() Yöntemini Kullanma
- -like Operatörünü Joker Karakterlerle Kullanmak
- Normal İfadeleri Kullanma

