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:\Windows
talá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.exe
beí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 Get-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 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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: