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 adlı öğeyi 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 özel olarak klasör gibi bir kapsayıcıda bulunan tüm öğeleri döndürecek şekilde tasarlanmıştır.
Doğrudan klasörünün C:\Windows
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
...
Liste, komutu içine veya ls
UNIX komut kabuğuna dir
girdiğinizde cmd.exe
göreceğiniz gibi görünür.
Cmdlet'in Get-ChildItem
parametrelerini kullanarak karmaşık listelemeler gerçekleştirebilirsiniz. Şunu yazarak cmdlet'in söz dizimini Get-ChildItem
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 recurse parametresini Get-ChildItem
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 name parametresini Get-Childitem
kullanın:
PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...
Gizli öğeleri zorla listeleme
Dosya Gezgini gizli olan veya cmd.exe
komutun Get-ChildItem
çıkışında görüntülenmemiş öğeler. Gizli öğeleri görüntülemek için force parametresini Get-ChildItem
kullanın.
Örneğin:
Get-ChildItem -Path C:\Windows -Force
Komutun normal davranışını Get-ChildItem
zorla geçersiz kılabildiğiniz için bu parametre Zorla olarak adlandırılır. Zorlama , bir cmdlet'in normalde gerçekleştirmeyebileceği bir eylemi zorlayan yaygın olarak kullanılan bir parametredir, ancak sistemin güvenliğini tehlikeye atabilecek herhangi bir eylem gerçekleştiremez.
Öğe adlarını joker karakterlerle eşleştirme
komutu, Get-ChildItem
listelene öğelerin yolunda joker karakterler 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 joker karakter gösterimi şunları içerir:
- Yıldız işareti (
*
), herhangi bir karakterin sıfır veya daha fazla oluşumuyla eşleşir. - Soru işareti (
?
) tam olarak bir karakterle eşleşir. - Eşleştirilecek karakter kümesini sol köşeli ayraç (
[
) karakteri ve sağ köşeli ayraç (]
) karakteri çevreler.
Joker karakter belirtiminin nasıl çalıştığına ilişkin bazı örnekler aşağıda verilmiştir.
Windows dizininde son eki .log
ve temel 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 dizinindeki harfle x
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.
Öğeleri dışlama
öğesinin Exclude parametresini Get-ChildItem
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.
Gibi w*32*.dll
bir ifade, koşulları karşılayan tüm DLL'leri bulur, ancak dosyaları daha fazla filtrelemek ve win32 dosyalarını atlamak isteyebilirsiniz. Exclude parametresini deseniyle 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 cmdlet'in Get-ChildItem
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 öğeleri Windows klasöründeki adlarla biten öğelerle .dll
sınırlandırdı.
Adları özel bir desenle eşleşen dosyalar için özyinelemeli bir arama belirtmek için 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
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin