about_Wildcards

Kısa açıklama

PowerShell'de joker karakterlerin nasıl kullanılacağını açıklar.

Uzun açıklama

Joker karakterler bir veya birden çok karakteri temsil eden karakterlerdir. Komutlarda sözcük desenleri oluşturmak için bunları kullanabilirsiniz. Joker karakter ifadeleri işleciyle -like veya joker karakter kabul eden herhangi bir parametreyle kullanılır.

Örneğin, dizindeki C:\Techdocs tüm dosyaları bir .ppt dosya adı uzantısıyla eşleştirmek için şunu yazın:

Get-ChildItem C:\Techdocs\*.ppt

Bu durumda yıldız işareti (*) joker karakteri, dosya adı uzantısından .ppt önce görünen tüm karakterleri temsil eder.

Joker ifadeler normal ifadelerden daha basittir. Daha fazla bilgi için bkz . about_Regular_Expressions.

PowerShell aşağıdaki joker karakterleri destekler:

  • * - Sıfır veya daha fazla karakter eşleştir
    • a*, aAve ile eşleşir agApple
    • a* eşleşmiyor banana
  • ? - Dizeler için bu konumdaki bir karakteri eşleştirin
    • ?n, anve ile eşleşir inon
    • ?n eşleşmiyor ran
  • ? - Dosyalar ve dizinler için bu konumda sıfır veya bir karakter eşleştirin
    • ?.txt eşleşmeler a.txt ve b.txt
    • ?.txt eşleşmiyor ab.txt
  • [ ] - Karakter aralığını eşleştirme
    • [a-l]ook, bookve ile eşleşir cooklook
    • [a-l]ook eşleşmiyor took
  • [ ] - Belirli karakterleri eşleştir
    • [bc]ook eşleşmeler book ve cook
    • [bc]ook eşleşmiyor hook
  • `* - Herhangi bir karakteri değişmez değer (joker karakter değil) olarak eşleştirin
    • 12`*4 Eşleşen 12*4
    • 12`*4 eşleşmiyor 1234

Aynı sözcük düzenine birden çok joker karakter ekleyebilirsiniz. Örneğin, a ile l arasında harfle başlayan adlara sahip metin dosyalarını bulmak için şunu yazın:

Get-ChildItem C:\Techdocs\[a-l]*.txt

Bunu joker karakter olarak işlemek yerine değişmez karakterle eşleştirmek istediğiniz durumlar olabilir. Bu gibi durumlarda, joker karakterden kaçmak için backtick (`) karakterini kullanabilirsiniz, böylece değişmez karakter değeri kullanılarak karşılaştırılır. Örneğin, '*hello`?*' "hello?" içeren dizelerle eşleşir.

Birçok cmdlet, parametre değerlerinde joker karakterler kabul eder. Her cmdlet'in Yardım konusu, hangi parametrelerin joker karakterleri kabul ettiği açıklar. Joker karakterleri kabul eden parametreler için kullanımları büyük/küçük harfe duyarlı değildir.

Komutlarda ve betik bloklarında özellik değerlerini temsil eden bir sözcük deseni oluşturmak gibi joker karakterler kullanabilirsiniz. Örneğin, aşağıdaki komut ServiceType özellik değerinin Interactive içerdiği hizmetleri alır.

Get-Service | Where-Object {$_.ServiceType -like "*Interactive*"}

Aşağıdaki örnekte deyimi, if özellik değerlerini bulmak için joker karakterler kullanan bir koşul içerir. Geri yükleme noktasının Açıklaması PowerShell içeriyorsa, komut geri yükleme noktasının CreationTime özelliğinin değerini bir günlük dosyasına ekler.

$p = Get-ComputerRestorePoint
foreach ($point in $p) {
  if ($point.Description -like "*PowerShell*") {
    Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
  }
}

Dosya ve dizin adlarındaki joker karakterlerden kaçış

Not

Dosya sistemi öğeleri için joker karakter eşleştirme, dizelerden farklı çalışır. Daha fazla bilgi için DirectoryInfo.GetFiles(String, EnumerationOptions) yönteminin Açıklamalar bölümüne bakın.

Adı joker karakterler içeren bir dosyaya veya dizine erişmeye çalıştığınızda, joker karakterlerden kaçmalısınız. Aşağıdaki dosyaları göz önünde bulundurun:

PS> Get-ChildItem

    Directory: D:\temp\test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           11/3/2025  3:39 PM             41 file[1].txt
-a---           11/3/2025  3:39 PM             41 file[2].txt
-a---           11/3/2025  3:39 PM             41 file[3].txt

Köşeli ayraç ([]) karakterleri joker karakterlerdir, bu nedenle gibi Get-ItemÖğe cmdlet'lerinden birini kullanarak dosyayı almaya çalışırken kaçış karakteri kullanılmalıdır.

PS> Get-Item file`[1`].txt

Ancak, dosya adı değeri joker karakterleri destekleyen Path parametresine bağlı olduğundan bu örnek başarısız oldu. Bu durumda desen, `[[ parametresinin joker karakter olarak yorumladığı düz olarak çözümler. Bunu çözmenin üç yolu vardır:

  • Backtick karakterlerini kullanın.

    PS> Get-Item -Path file``[1``].txt
    
        Directory: D:\temp\test
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a---           11/3/2025  3:39 PM             41 file[1].txt
    
  • Path parametresine bağlanmadan önce arka uçların genişletilmemesi için dosya adını tek tırnak içine alın.

    PS> Get-Item -Path 'file`[1`].txt'
    
        Directory: D:\temp\test
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a---           11/3/2025  3:39 PM             41 file[1].txt
    
  • LiteralPath parametresini kullanma

    PS> Get-Item -LiteralPath file[1].txt
    
        Directory: D:\temp\test
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a---           11/3/2025  3:39 PM             41 file[1].txt
    

Ayrıca bakınız