Bagikan melalui


Bekerja dengan file, folder, dan kunci registri

Sampel ini hanya berlaku untuk platform Windows.

PowerShell menggunakan Item kata benda untuk merujuk ke item yang ditemukan di drive PowerShell. Saat berhadapan dengan penyedia PowerShell FileSystem, Item mungkin berupa file, folder, atau drive PowerShell. Mencantumkan dan bekerja dengan item ini adalah tugas dasar penting di sebagian besar pengaturan administratif, jadi kami ingin mendiskusikan tugas-tugas ini secara rinci.

Menghitung file, folder, dan kunci registri

Karena mendapatkan koleksi item dari lokasi tertentu adalah tugas umum, Get-ChildItem cmdlet dirancang khusus untuk mengembalikan semua item yang ditemukan dalam kontainer seperti folder.

Jika Anda ingin mengembalikan semua file dan folder yang terkandung langsung dalam folder C:\Windows, ketik:

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
...

Daftar terlihat mirip dengan apa yang akan Anda lihat ketika Anda memasukkan dir perintah di cmd.exe, atau ls perintah dalam shell perintah UNIX.

Anda dapat melakukan daftar kompleks menggunakan parameter Get-ChildItem cmdlet. Anda dapat melihat sintaks cmdlet Get-ChildItem dengan mengetik:

Get-Command -Name Get-ChildItem -Syntax

Parameter ini dapat dicampur dan dicocokkan untuk mendapatkan output yang sangat disesuaikan.

Mencantumkan semua item yang terkandung

Untuk melihat kedua item di dalam folder Windows dan item apa pun yang terkandung dalam subfolder, gunakan parameter Recurse dari Get-ChildItem. Daftar menampilkan semua yang ada di dalam folder Windows dan item di subfoldernya. Contohnya:

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
...

Memfilter item menurut nama

Untuk menampilkan hanya nama item, gunakan parameter Nama dari Get-Childitem:

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

Mencantumkan item tersembunyi secara paksa

Item yang disembunyikan di File Explorer atau cmd.exe tidak ditampilkan dalam output Get-ChildItem perintah. Untuk menampilkan item tersembunyi, gunakan parameter Force dari Get-ChildItem. Contohnya:

Get-ChildItem -Path C:\Windows -Force

Parameter ini bernama Force karena Anda dapat secara paksa mengambil alih perilaku Get-ChildItem normal perintah. Force adalah parameter yang banyak digunakan yang memaksa tindakan yang biasanya tidak akan dilakukan cmdlet, meskipun tidak dapat melakukan tindakan apa pun yang mengorbankan keamanan sistem.

Mencocokkan nama item dengan kartubebas

Perintah Get-ChildItem menerima kartubebas di jalur item yang akan dicantumkan.

Karena pencocokan kartubebas ditangani oleh mesin PowerShell, semua cmdlet yang menerima kartubebas menggunakan notasi yang sama dan memiliki perilaku pencocokan yang sama. Notasi kartubebas PowerShell meliputi:

  • Tanda bintang (*) cocok dengan nol atau lebih kemunculan karakter apa pun.
  • Tanda tanya (?) cocok persis dengan satu karakter.
  • Karakter tanda kurung kiri ([) dan karakter kurung siku kanan (]) mengelilingi sekumpulan karakter yang akan dicocokkan.

Berikut adalah beberapa contoh cara kerja spesifikasi kartubebas.

Untuk menemukan semua file di direktori Windows dengan akhiran .log dan tepat lima karakter dalam nama dasar, masukkan perintah berikut:

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
...

Untuk menemukan semua file yang dimulai dengan huruf x di direktori Windows, ketik:

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

Untuk menemukan semua file yang namanya dimulai dengan "x" atau "z", ketik:

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

Untuk informasi selengkapnya tentang wildcard, lihat about_Wildcards.

Mengecualikan item

Anda dapat mengecualikan item tertentu menggunakan parameter Kecualikan dari Get-ChildItem. Ini memungkinkan Anda melakukan pemfilteran kompleks dalam satu pernyataan.

Misalnya, Anda mencoba menemukan DLL Layanan Waktu Windows di folder System32 , dan yang dapat Anda ingat tentang nama DLL adalah bahwa itu dimulai dengan "W" dan memiliki "32" di dalamnya.

Ekspresi seperti w*32*.dll akan menemukan semua DLL yang memenuhi kondisi, tetapi Anda mungkin ingin memfilter file lebih lanjut dan menghilangkan file win32 apa pun. Anda dapat menghilangkan file-file ini menggunakan parameter Kecualikan dengan pola 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

Mencampur parameter Get-ChildItem

Anda dapat menggunakan beberapa parameter Get-ChildItem cmdlet dalam perintah yang sama. Sebelum Anda mencampur parameter, pastikan Anda memahami pencocokan kartubebas. Misalnya, perintah berikut tidak mengembalikan hasil:

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

Tidak ada hasil, meskipun ada dua DLL yang dimulai dengan huruf "z" di folder Windows.

Tidak ada hasil yang dikembalikan karena kami menentukan wildcard sebagai bagian dari jalur. Meskipun perintahnya rekursif, Get-ChildItem cmdlet membatasi item yang ada di folder Windows dengan nama yang diakhir dengan .dll.

Untuk menentukan pencarian rekursif untuk file yang namanya cocok dengan pola khusus, gunakan parameter Sertakan .

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