Fájlok, mappák és beállításkulcsok használata

Ez a minta csak Windows-platformokra vonatkozik.

A PowerShell a főnév elemével hivatkozik a PowerShell-meghajtón található elemekre. A PowerShell-fájlrendszer szolgáltatójának kezelésekor előfordulhat, hogy egy elem fájl, mappa vagy PowerShell-meghajtó. Ezeknek az elemeknek a felsorolása és használata a legtöbb felügyeleti beállításban alapvető fontosságú feladat, ezért ezeket a feladatokat részletesen meg szeretnénk tárgyalni.

Fájlok, mappák és beállításkulcsok számbavétele

Mivel az elemek gyűjteményének egy adott helyről való lekérése ilyen gyakori feladat, a Get-ChildItem parancsmag kifejezetten arra lett kialakítva, hogy a tárolóban található összes elemet, például egy mappát visszaadja.

Ha az összes olyan fájlt és mappát vissza szeretné adni, amely közvetlenül a mappában C:\Windowstalálható, írja be a következőt:

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

A lista hasonló ahhoz, amit a dir parancs cmd.exebeírásakor látni fog, vagy egy ls UNIX-parancshéjban.

Összetett listaelemeket a parancsmag paramétereivel Get-ChildItem hajthat végre. A parancsmag szintaxisát a Get-ChildItem következő beírással tekintheti meg:

Get-Command -Name Get-ChildItem -Syntax

Ezek a paraméterek keverhetők és megfeleltethetők a nagymértékben testre szabott kimenet eléréséhez.

Az összes tartalmazott elem felsorolása

A Windows-mappában lévő elemek és az almappákban található elemek megtekintéséhez használja a /> Recurse paraméterétGet-ChildItem. A lista a Windows mappában és az almappáiban lévő elemeket jeleníti meg. Példa:

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

Elemek szűrése név szerint

Ha csak az elemek nevét szeretné megjeleníteni, használja a következő névparamétertGet-Childitem:

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

Rejtett elemek kényszerített felsorolása

Az Fájlkezelő rejtett vagy cmd.exe a parancs kimenetében Get-ChildItem nem megjelenő elemek. Rejtett elemek megjelenítéséhez használja a Force paramétert Get-ChildItem. Példa:

Get-ChildItem -Path C:\Windows -Force

Ez a paraméter a Force nevet kapta, mert kényszerítve felülbírálhatja a parancs normál viselkedésétGet-ChildItem. A Force egy széles körben használt paraméter, amely olyan műveletet kényszerít ki, amelyet a parancsmag általában nem hajt végre, bár nem tud olyan műveletet végrehajtani, amely veszélyeztetné a rendszer biztonságát.

Elemnevek helyettesítő karakterekkel való egyeztetése

A Get-ChildItem parancs helyettesítő karaktereket fogad el a listázandó elemek elérési útján.

Mivel a helyettesítő karakterek egyeztetését a PowerShell-motor kezeli, a helyettesítő karaktereket elfogadó parancsmagok ugyanazt a jelölést használják, és ugyanazzal a viselkedéssel rendelkeznek. A PowerShell helyettesítő karakter jelölése a következőket tartalmazza:

  • A csillag (*) bármely karakter nulla vagy több előfordulásának felel meg.
  • A kérdőjel (?) pontosan egy karakternek felel meg.
  • A bal oldali zárójel ([) és a jobb oldali szögletes zárójel (]) karakter egy egyeztetendő karakterkészletet vesz körül.

Íme néhány példa a helyettesítő karakterek specifikációjának működésére.

Ha meg szeretné keresni az összes fájlt a Windows könyvtárban az utótaggal .log és pontosan öt karakterrel az alapnévben, írja be a következő parancsot:

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

A Windows könyvtárban lévő betűvel x kezdődő összes fájl megkereséséhez írja be a következőt:

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

Az összes olyan fájl megkereséséhez, amelynek a neve "x" vagy "z" betűvel kezdődik, írja be a következőt:

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

További információ a helyettesítő karakterekről: about_Wildcards.

Elemek kizárása

Bizonyos elemeket kizárhat a /> kizárási paraméterével Get-ChildItem. Így összetett szűrést végezhet egyetlen utasításban.

Tegyük fel például, hogy a Windows Time Service DLL-t a System32 mappában keresi meg, és a DLL-ről csak annyit tud megjegyezni, hogy a "W" betűvel kezdődik, és benne a "32" szerepel.

Egy hasonló w*32*.dll kifejezés megtalálja az összes olyan DLL-t, amely megfelel a feltételeknek, de érdemes lehet további szűrést végezni a fájlokon, és kihagyni a win32-fájlokat. Ezeket a fájlokat a Kizárás paraméterrel kihagyhatja a következő mintával 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 paraméterek keverése

A parancsmag több paraméterét Get-ChildItem is használhatja ugyanabban a parancsban. A paraméterek összekeverése előtt győződjön meg arról, hogy ismeri a helyettesítő karakterek egyezését. Az alábbi parancs például nem ad vissza eredményt:

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

Nincsenek eredmények, annak ellenére, hogy két DLL van, amelyek a "z" betűvel kezdődnek a Windows mappában.

Nem lett eredmény, mert a helyettesítő karaktert az elérési út részeként adták meg. Annak ellenére, hogy a parancs rekurzív volt, a Get-ChildItem parancsmag azokat az elemeket korlátozta, amelyek a Windows mappában vannak, és a nevek végződnek .dll.

A speciális mintának megfelelő nevek rekurzív keresésének megadásához használja az Include paramétert.

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