Dosyalar, klasörler ve kayıt defteri anahtarları Ile çalışma
Windows PowerShell, Windows PowerShell sürücüde bulunan öğelere başvurmak için isim öğesini kullanır. Windows PowerShell dosya sistemi sağlayıcısıyla ilgilenirken bir öğe bir dosya, klasör veya Windows PowerShell sürücü olabilir. Bu öğeleri listelemek ve bunlarla çalışmak, çoğu yönetim ayarlarındaki kritik bir temel görevdir, bu nedenle bu görevleri ayrıntılı olarak tartışmak istiyoruz.
Dosyaları, klasörleri ve kayıt defteri anahtarlarını numaralandırma (Get-ChildItem)
Belirli bir konumdan bir öğe koleksiyonu alınması bu tür ortak bir görevdir, Get-ChildItem cmdlet özel olarak bir klasör gibi bir kapsayıcı içinde bulunan tüm öğeleri döndürmek için tasarlanmıştır.
C: Windows klasörü içinde doğrudan bulunan tüm dosya ve klasörleri döndürmek istiyorsanız \ şunu yazın:
PS> Get-ChildItem -Path C:\Windows
Directory: Microsoft.Windows 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 dir , Cmd.exe komutu veya ls UNIX komut kabuğu içindeki komutu girerken gördüklerinize benzer şekilde görünür.
Cmdlet 'in parametrelerini kullanarak çok karmaşık listeler gerçekleştirebilirsiniz Get-ChildItem . Bir sonraki birkaç senaryoya bakacağız. Get-ChildItemŞunu yazarak cmdlet sözdizimini görebilirsiniz:
Get-Command -Name Get-ChildItem -Syntax
Bu parametreler, yüksek düzeyde özelleştirilmiş çıktı almak için karışık ve eşleştirilebilir.
Içerilen tüm öğeleri Listeleme (-recurse)
her iki öğeyi de bir Windows klasörü içinde ve alt klasörlerde bulunan tüm öğeleri görmek için, öğesinin Recurse parametresini kullanın Get-ChildItem . liste, Windows klasörü içindeki her şeyi ve alt klasörlerindeki öğeleri görüntüler. Örnek:
PS> Get-ChildItem -Path C:\WINDOWS -Recurse
Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS
Directory: Microsoft.Windows 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 (-Name)
Yalnızca öğelerin adlarını göstermek için, öğesinin ad parametresini kullanın Get-Childitem :
PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...
Gizli öğeleri zorla listeleme (-zorla)
Dosya Gezgini veya Cmd.exe 'nde normalde görünmez olan öğeler bir komutun çıktısında gösterilmez Get-ChildItem . Gizli öğeleri göstermek için, zorla parametresini kullanın Get-ChildItem .
Örnek:
Get-ChildItem -Path C:\Windows -Force
Komutun normal davranışını zorla geçersiz kılabileceğiniz için, bu parametre zorla olarak adlandırılır Get-ChildItem . Zorla, bir cmdlet 'in normalde gerçekleştirememesine neden olan bir eylemi zorlayan yaygın olarak kullanılan bir parametredir, ancak sistemin güvenliğini tehlikeye atacak herhangi bir işlem gerçekleştirmez.
Joker karakterlerle eşleşen öğe adları
Get-ChildItemKomut, listeedilecek öğelerin yolundaki joker karakterleri kabul eder.
joker karakter eşleştirmesi Windows PowerShell altyapısı tarafından işlendiği için, joker karakterleri kabul eden tüm cmdlet 'ler aynı gösterimi kullanır ve aynı eşleşen davranışa sahiptir. Windows PowerShell joker karakter gösterimi şunları içerir:
Yıldız (
*), 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 çevreleyin.
Joker karakter belirtiminin nasıl çalıştığına ilişkin bazı örnekler aşağıda verilmiştir.
Windows dizinindeki tüm dosyaları soneke .log ve temel adda tam olarak beş karakterle bulmak için aşağıdaki komutu girin:
PS> Get-ChildItem -Path C:\Windows\?????.log
Directory: Microsoft.Windows 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 başlayan tüm dosyaları bulmak için x ş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 (-hariç tut)
Hariç tutma parametresini kullanarak belirli öğeleri dışlayabilirsiniz Get-ChildItem . Bu, tek bir bildirimde karmaşık filtreleme gerçekleştirmenize olanak sağlar.
örneğin, System32 klasöründe Windows saat hizmeti DLL 'sini bulmaya çalıştığınızı varsayın ve DLL adı hakkında hatırlayabileceğiniz, "W" ile başlayıp buna "32" sahip olduğunu varsayalım.
Gibi bir ifade, w*32*.dll Koşulları karşılayan tüm dll 'leri bulur, ancak dosyaları daha fazla filtrelemek ve Win32 dosyalarını atlamak isteyebilirsiniz. Bu dosyaları, düzeniyle hariç tut parametresini kullanarak atlayabilirsiniz win* :
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 'inin birkaç parametresini kullanabilirsiniz Get-ChildItem . Parametreleri karıştırmadan önce joker karakterle eşleştirmeyi anladığınızdan emin olun. Örneğin, aşağıdaki komut 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ç yok.
Joker karakteri yolun bir parçası olarak belirttiğimiz için sonuç döndürülmedi. komut özyinelemeli olsa da Get-ChildItem cmdlet, öğeleri ile biten adlarla Windows klasörde olan öğelerle kısıtlamalıdır .dll .
Adları özel bir düzenle eşleşen dosyalar için özyinelemeli arama belirtmek için Include parametresini kullanın.
PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32\Setup
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 8261 zoneoc.dll
Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 337920 zipfldr.dll