Aracılığıyla paylaş


Dosyalar, klasörler ve kayıt defteri anahtarlarıyla çalışma

Bu örnek yalnızca Windows platformları için geçerlidir.

PowerShell, bir PowerShell sürücüsünde bulunan öğelere başvurmak için Öğe kullanır. PowerShell FileSystem sağlayıcısıyla ilgilenirken, Öğe bir dosya, klasör veya PowerShell sürücüsü olabilir. Bu öğeleri listelemek ve bunlarla çalışmak, çoğu yönetim ayarında kritik bir temel görev olduğundan, bu görevleri ayrıntılı olarak tartışmak istiyoruz.

Dosyaları, klasörleri ve kayıt defteri anahtarlarını numaralandırma

Belirli bir konumdan öğe koleksiyonu almak bu kadar yaygın bir görev olduğundan, Get-ChildItem cmdlet'i özellikle bir klasör gibi bir kapsayıcıda bulunan tüm öğeleri döndürmek için tasarlanmıştır.

doğrudan C:\Windowsklasörünün içinde yer alan tüm dosya ve klasörleri döndürmek istiyorsanız şunu yazın:

PS> Get-ChildItem -Path C:\Windows
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-16   8:10 AM          0 0.log
-a---        2005-11-29   3:16 PM         97 acc1.txt
-a---        2005-10-23  11:21 PM       3848 actsetup.log
...

Listeleme, cmd.exe'de dir komutunu veya Unix komut kabuğundaki ls komutunu girdiğinizde göreceğinize benzer görünür.

Get-ChildItem cmdlet'in parametrelerini kullanarak karmaşık listelemeler gerçekleştirebilirsiniz. şunu yazarak Get-ChildItem cmdlet'inin söz dizimini görebilirsiniz:

Get-Command -Name Get-ChildItem -Syntax

Bu parametreler, yüksek oranda özelleştirilmiş çıkış elde etmek için karıştırılabilir ve eşleştirilebilir.

Tüm kapsanan öğeleri listeleme

Hem Windows klasörünün içindeki öğeleri hem de alt klasörlerde yer alan öğeleri görmek için Get-ChildItemYineleme parametresini kullanın. Liste, Windows klasöründeki her şeyi ve alt klasörlerindeki öğeleri görüntüler. Örneğin:

PS> Get-ChildItem -Path C:\WINDOWS -Recurse

    Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM    1852416 AcGenral.dll
...

Öğeleri ada göre filtreleme

Yalnızca öğelerin adlarını görüntülemek için Get-ChildItemName parametresini kullanın:

PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...

Gizli öğeleri zorla listeleme

Dosya Gezgini'nde veya cmd.exe gizlenen öğeler, Get-ChildItem komutunun çıkışında görüntülenmez. Gizli öğeleri görüntülemek için Force parametresini Get-ChildItemkullanın. Örneğin:

Get-ChildItem -Path C:\Windows -Force

Get-ChildItem komutunun normal davranışını zorla geçersiz kılabildiğiniz için bu parametre Zorla olarak adlandırılır. Force, sistemin güvenliğini tehlikeye atabilecek herhangi bir eylem gerçekleştiremese de, cmdlet'in normalde gerçekleştirmeyebileceği bir eylemi zorlayan yaygın olarak kullanılan bir parametredir.

Öğe adlarını joker karakterlerle eşleştirme

Get-ChildItem komutu, listedeki öğelerin yolunda joker karakterleri kabul eder.

Joker karakter eşleştirme PowerShell altyapısı tarafından işlendiğinden, joker karakterleri kabul eden tüm cmdlet'ler aynı gösterimi kullanır ve aynı eşleştirme davranışına sahiptir. PowerShell genel karakter gösterimi şunları içerir:

  • Yıldız işareti (*), herhangi bir karakterin sıfır veya daha fazla tekrarı ile eşleşir.
  • Soru işareti (?) tam olarak bir karakterle eşleşir.
  • Sol köşeli ayraç ([) karakteri ve sağ köşeli ayraç (]) karakteri eşleştirilecek bir karakter kümesini çevreler.

Aşağıda joker karakter belirtiminin nasıl çalıştığına ilişkin bazı örnekler bulunmaktadır.

Windows dizininde son ek .log ve taban adında tam olarak beş karakter bulunan tüm dosyaları bulmak için aşağıdaki komutu girin:

PS> Get-ChildItem -Path C:\Windows\?????.log

    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
...
-a---        2006-05-11   6:31 PM     204276 ocgen.log
-a---        2006-05-11   6:31 PM      22365 ocmsn.log
...
-a---        2005-11-11   4:55 AM         64 setup.log
-a---        2005-12-15   2:24 PM      17719 VxSDM.log
...

Windows dizininde x harfiyle başlayan tüm dosyaları bulmak için şunu yazın:

Get-ChildItem -Path C:\Windows\x*

Adları "x" veya "z" ile başlayan tüm dosyaları bulmak için şunu yazın:

Get-ChildItem -Path C:\Windows\[xz]*

Joker karakterler hakkında daha fazla bilgi için bkz. about_Wildcards.

Öğelerin hariç tutulması

Get-ChildItem Exclude parametresini kullanarak belirli öğeleri dışlayabilirsiniz. Bu, tek bir deyimde karmaşık filtreleme gerçekleştirmenizi sağlar.

Örneğin, System32 klasöründe Windows Zaman Hizmeti DLL'sini bulmaya çalıştığınızı ve DLL adı hakkında hatırlayabildiğiniz tek şeyin "W" ile başlayıp içinde "32" olduğunu varsayalım.

w*32*.dll gibi bir ifade koşulları karşılayan tüm DLL'leri bulur, ancak dosyaları daha fazla filtrelemek ve win32 dosyalarını atlamak isteyebilirsiniz. Exclude parametresini desen win*kullanarak bu dosyaları atlayabilirsiniz:

PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude win*

    Directory: C:\WINDOWS\System32

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           3/18/2019  9:43 PM         495616 w32time.dll
-a---           3/18/2019  9:44 PM          35328 w32topl.dll
-a---           1/24/2020  5:44 PM         401920 Wldap32.dll
-a---          10/10/2019  5:40 PM         442704 ws2_32.dll
-a---           3/18/2019  9:44 PM          66048 wsnmp32.dll
-a---           3/18/2019  9:44 PM          18944 wsock32.dll
-a---           3/18/2019  9:44 PM          64792 wtsapi32.dll

Get-ChildItem parametrelerini karıştırma

aynı komutta Get-ChildItem cmdlet'in birkaç parametresini kullanabilirsiniz. Parametreleri karıştırmadan önce joker karakter eşleştirmeyi anladığınızdan emin olun. Örneğin, aşağıdaki komut hiçbir sonuç döndürmez:

Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll

Windows klasöründe "z" harfiyle başlayan iki DLL olmasına rağmen sonuç yoktur.

Joker karakteri yolun bir parçası olarak belirttiğimiz için sonuç döndürülmedi. Komut özyinelemeli olsa da, Get-ChildItem cmdlet'i windows klasöründeki öğeleri .dllile biten adlarla sınırlandırdı.

Dosya adları belirli bir desenle eşleşen dosyalar için özyinelemeli bir arama belirtmek üzere Include parametresini kullanın.

PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll

    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\Setup

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM       8261 zoneoc.dll

    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM     337920 zipfldr.dll