PowerShell Değişken Joker Karakterleri


PowerShell değişken joker karakterleri, desen eşleştirmeyle güçlü komut dosyaları yazmanıza olanak tanır.

PowerShell'de kalıp eşleştirme için iki ana joker karakter türü * ve ? kullanılır.

  • * - Sıfır veya daha fazla karakterle eşleşir
  • ? - Tam olarak bir karakterle eşleşir

Bu eğitimde, joker karakterlerin PowerShell değişkenleriyle nasıl kullanılacağını ve komut dosyalarını geliştirmek için pratik örnekleri tartışacağız.

PowerShell Değişkenleriyle Joker Karakterleri Kullanma

-Like operatörünü kullanma

Bir değişkeni joker karakter deseniyle karşılaştırmak için, joker karakter desenlerini kullanarak dizeleri karşılaştıran Like operatörünü kullanın.

$temp = "ShellGeek"                                                                                             $result = $temp -like "Shell*" 

Yukarıdaki PowerShell betiğinde $temp değişkeni dize türü değerini saklar. -like operatörü, bir dizenin verilen dizedeki bir veya daha fazla karakterle eşleşip eşleşmediğini kontrol etmek için * joker karakter modellerini kullanarak dizeyi karşılaştırır.

Yukarıdaki PowerShell betiğinin çıktısı:

Joker Karakterli Where-Object cmdlet'i

Where-Object cmdlet'i, nesneleri özelliklerine göre filtrelemek için genellikle joker karakterlerle birlikte kullanılır.

$files = Get-ChildItem -Path 'D:\PS\'                                                                           $textFiles = $files | Where-Object {$_.name -like "*.txt"}                                                      $textFiles                                                                                                      

Yukarıdaki PowerShell betiğinde Get-ChildItem cmdlet'i, belirtilen yoldan öğeleri alır ve bunları $files değişkeninde saklar.

Where-Object cmdlet'i $files değişkeninde *.txt gibi dosya uzantısına sahip dosyaları filtrelemek ve bunları depolamak için kullanılır. $textFiles değişkeni.

PowerShell cmdlet'indeki joker karakterleri kullanarak metin dosyalarını almak için yukarıdaki PowerShell betiğinin çıktısı şöyledir:

PS D:\> $files = Get-ChildItem -Path 'D:\PS\'                                                                           PS D:\> $textFiles = $files | Where-Object {$_.name -like "*.txt"}                                                      PS D:\> $textFiles                                                                                                      

    Directory: D:\PS


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       26-02-2023     16:10             87 comp.txt
-a----       02-04-2023     19:32              0 emptyFile.txt


PS D:\>      

Kullanmak ? PowerShell'de Değişkenli Joker Karakter

? PowerShell'deki joker karakter, tam olarak bir karakterle eşleşen kalıpları bulur.

Get-ChildItem -Path 'D:\PS\' ??.* -File 

Yukarıdaki PowerShell betiğinde Get-ChildItem cmdlet'i, içinde yalnızca 2 karakter bulunan dosya adını bulmak amacıyla dizin adını belirtmek için Path parametresini kullanır.

Yukarıdaki PowerShell betiğinin çıktısı:

PS D:\> Get-ChildItem -Path 'D:\PS\' ??.* -File                                                                         

    Directory: D:\PS


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       07-04-2023     12:10              0 ad.txt

Dosyaları Ad Kalıplarına Göre Filtreleyin

PowerShell'de * joker karakterleri, bir dizindeki dosyaları ad düzenine göre filtrelemek için -benzeri operatörüyle birlikte kullanılabilir.

$FilePattern = "powershell*"                                                                                    $imageFiles = Get-ChildItem -Path 'D:\PS\' | Where-Object {$_.Name -like $FilePattern}   

Yukarıdaki PowerShell betiğinde Get-ChildItem, tüm öğeleri almak ve bunları Where-Object cmdlet'ine yönlendirmek için Path değişkenini kullanır. dosyaları ad kalıplarına göre alın.

Yukarıdaki PowerShell betiğinin çıktısı:

PS D:\> $FilePattern = "powershell*"                                                                                    PS D:\> $imageFiles = Get-ChildItem -Path 'D:\PS\' | Where-Object {$_.Name -like $FilePattern}                          PS D:\> $imageFiles                                                                                                     

    Directory: D:\PS


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       02-04-2023     20:51          15400 powershell-clear-variable.png
-a----       07-04-2023     09:47          17358 powershell-convert-variables-to-string.png
-a----       02-04-2023     19:37           7396 powershell-create-empty-file.png
-a----       02-04-2023     17:37          10133 powershell-get-temp-folder.png
-a----       07-04-2023     08:31          12163 powershell-is-null-or-empty-check-for-variable.png
-a----       02-04-2023     22:04          19830 powershell-read-only-variable.png
-a----       02-04-2023     18:10          10850 powershell-temporary-file.png
-a----       07-04-2023     11:58           7162 powershell-variable-wildcards.png


PS D:\> 

Harika İpucu: PowerShell'de Yol'da bir değişken nasıl kullanılır?

Ad Modellerine Göre Süreçleri Bul

Wildcard *, PowerShell'de ad kalıplarına göre bir sistemde çalışan işlemleri bulmak için kullanılabilir.

$processPattern = "chrome*"                                                                                     $services = Get-Process | Where-Object {$_.ProcessName -like $processPattern}                                   $services 

Çözüm

PowerShell değişken joker karakterlerinin * ve ? ile nasıl kullanılacağına ilişkin yukarıdaki makalenin size yardımcı olacağını umuyorum.

Joker karakterler esnek arama kalıpları oluşturup yazmanıza ve komut dosyası verimliliğini artırmanıza olanak tanır.

PowerShell Active Directory komutları ve PowerShell temelleri hakkında daha fazla konuyu ShellGeek ana sayfasında bulabilirsiniz.

İlgili makaleler