A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

ARUBA INSTANT WI-FI: EGYSZERŰ, KIADHATÓ, ELÉRHETŐ

A Windows PowerShell a felhasználók számára négyféle módon dolgozhat a fájlokkal.

Ebben a cikkben fogok beszélni azokról a parancsokról, amelyeket kifejezetten a fájlokhoz készítettek. Itt találhatók azok a parancsok, amelyekkel fájlokkal dolgozhat:

A Get-ChildItem használata

A Get-ChildItem parancs egy vagy több meghatározott helyen található elemeket jelenít meg. A hely lehet egy fájlrendszer-tároló, például egy könyvtár vagy egy másik szolgáltató által megjelenített hely, például egy rendszerleíró alkulcs vagy tanúsítványtároló. Ezzel a paranccsal a Recurse paraméterrel elérheti az összes alkönyvtárba tartozó elemeket.

Ha paraméter nélkül használja ezt a parancsot, minden gyermekelemet (például almappákat és fájlokat) visszaad az aktuális helyre. Ha például az aktuális hely a H gyökérkönyvtára, akkor a Get-ChildItem parancs futtatásával olyan eredményeket kap, mint az 1. képernyőn.

A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

1. képernyő: A Get-ChildItem munka eredményei

A paraméterek használatával megkaphatja a szükséges információkat. Például a következő parancs minden fájlt visszaad. jelentkezzen be a C gyökérkönyvtárába, beleértve az alkönyvtárakat is:

Amint láthatjuk, ez a parancs a -Include, -Recurse és -Force paramétereket használja. A -Include paraméter segítségével visszaadhatja a megadott elemeket. Támogatja a helyettesítő karakterek használatát, és ideális fájlnévkiterjesztések meghatározására. A -Recurse opció arra utasítja a PowerShellet, hogy térjen vissza az almappákhoz a fájlok mellett. A -Force opció rejtett és rendszerfájlokat ad a kimeneti adatokhoz.

A parancs futtatása után valószínűleg kiterjedt hibaüzenet jelenik meg. A rendszer beállításaitól és biztonsági szabályaitól függően bizonyos könyvtárakhoz (pl. Lomtár, Start menü, felhasználói mappák) való hozzáférés korlátozott, és nem olvasható. Ezeket a hibaüzeneteket a -ErrorAction paraméter SilentlyContinue megadásával elrejtheti.

A következő parancs ugyanazokat az eredményeket hozza létre, mint az előzőt, mert a -Path paraméter értelmezi a helyettesítő karaktereket:

A PowerShell parancsok egyes paraméterei esetében elhagyhatja a paraméter nevét, ha tud arról, hogy a paraméter a PowerShell igényei szerint van. Ez a helyzet a Get-ChildItem parancs -Path paraméterével. Így a következő parancs ugyanazt az eredményt adja vissza, mint az előző parancs:

A -Path paraméter több argumentumot tartalmazhat, vesszővel elválasztva. Tegyük fel például, hogy vissza akar térni. naplófájlok két helyről: a C gyökérkönyvtár és a H gyökérkönyvtár, az utóbbi az aktuális (azaz az alapértelmezett hely). Ahhoz, hogy ezt a feladatot, meg kell határoznia a C: \ *, hogy minden a naplókat a gyökere C értéke és a naplófájlok * letölteni az összes fájlt a gyökere H (mint gyökérmappáját H az alapértelmezett hely, akkor nem kell megadni a H: \. ). A két érvet elválaszthatjuk vesszővel, például:

Az eredmények a például a 2. ábra Megjegyzés attribútum «h” a mód oszlopában gyökere N. Ez az attribútum azt jelzi, hogy ntuser.dat.LOG fájl rejtett. Ez megtalálható a paraméter -Force.

A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

Képernyő 2. A rejtett fájlok kimenete

Bár ez nem szerepel a példákban, a Get-ChildItem további nevekkel, aliasokkal is megkereshető. Három beépített álnév van: dir (mint a DOS parancs dir), gci és ls (mint az ls parancs a UNIX-on).

A Get-Item paranccsal

A Get-Item parancs visszaküldi a megadott elemeket a hozzárendelt helyekről. A ChildItemhez hasonlóan a Get-Item segítségével különböző típusú adattárolókon is navigálhat. A Get-ChildItem-rel ellentétben a Get-Item nem rendelkezik alapértelmezett helyszínnel, így mindig legalább egy helyet kell megadnia a -Path paraméterrel. Bár maga a paraméter szükséges, nem kell megadnia a paraméter nevét. Például itt van egy egyszerű parancs, amely egy "pontot" használ az aktuális könyvtárra (ebben az esetben a H gyökérkönyvtárára) vonatkozó információk visszaküldéséhez:

Az eredmények a 3. képernyőn láthatók. A Get-Item parancs lehetővé teszi a helyettesítő * használatát, hogy visszajuttassa az elem teljes tartalmát (azaz minden gyermekét). Például a következő parancs az aktuális könyvtár összes tartalmát (ebben az esetben a H gyökérkönyvtárát) visszaadja. A pont és a csillag szimbólum a fájl elérési útjaként használható összetevőként, de továbbra is meg kell adnia a perjelet mappaszelválasztóként:

A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

Képernyő 3. Get-Item használata az aktuális mappához tartozó információk megjelenítésére

Az eredményeket a 4. képernyőn láthatja. Fontos megérteni, hogy a PowerShell parancsok, köztük a Get-Item, objektumok visszaküldése. A Get-Item parancs visszaküldi a System.IO.DirectoryInfo objektumokat, amelyek többféle módszert és tulajdonságot tartalmaznak. A fenti módszerek és tulajdonságok megtekintéséhez átveheti a Get-Item parancs eredményeit a Get-Member parancsra. Ha ezeket a tulajdonságokat szeretné látni, akkor futtathatja ezt a parancsot:

A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

4. képernyő: Get-Item használata az aktuális mappa összes tartalmának megjelenítéséhez

Amint az az 5. képernyőn látható, a LastAccessTime tulajdonság visszaküldi azt a dátumot és időpontot, amikor a megadott könyvtár legutóbbi elérése megtörtént.

A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

5. képernyő: A System.IO.DirectoryInfo objektum tulajdonságainak feltérképezése

Ha például azt szeretné megtudni, hogy mikor érkezett az utolsó könyvtár az aktuális könyvtárhoz, a következő parancsot futtatja:

Ne feledje, hogy ebben a parancsban hívja a Get-elemet. zárójelbe van zárva és a záró zárójel és a LastAccessTime közötti időtartam van. A "Get-Item" körüli zárójelek. "Szükséges, hogy a visszaküldött objektumok a memóriában tárolódjanak, és további műveleteket végezhet velük. Ebben az esetben a művelet célja az objektum LastAccessTime tulajdonságának visszatérési értéke. A PowerShell programban a dot szimbólum segítségével számos objektum tulajdonság és módszer elérhető. Ezért kell beírnia a záró zárójel és a LastAccessTime közötti időszakot.

Van egy speciális tulajdonságok gyűjteménye, a NoteProperty. Alkalmazhatja, hogy szűkítse a kimenetet egy adott típusú objektum számára. Használhatja a Get-tagot a -MemberType NoteProperty paraméterrel, hogy megismerje a gyűjtemény speciális tulajdonságait:

Ha ezt a parancsot, akkor azt találjuk, hogy visszaadja a gyűjtemény hat tulajdonságok: PSChildName, PSDrive, PSIsContainer, PSParentPath, PSPath és PSProvider. A NoteProperty gyűjtemény PSIsContainer tulajdonsága jelzi, hogy az objektum egy tároló (mappa). A tulajdonság True értéket ad vissza, amikor az objektum egy mappa, és hamis, ha fájl. Ezt a tulajdonságot használhatja a Get-Item kimenet mappákhoz való korlátozására:

Beszéljük részletesebben ezt a parancsot. Eredményeit a 6. képernyő mutatja. A gyökérkönyvtár teljes tartalmát a Where-Object paranccsal pipálja át, amely lehetővé teszi objektumok szűrését. Ebben az esetben a PSIsContainer a NoteProperty-ből származik, hogy kiszűrje a kimenetet, és így csak a könyvtárak kerülnek vissza. A $ _ automatikus változó minden egyes fájlobjektumot megjelenít, amint átadódik a pipeline parancsnak.

A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

Képernyő 6. Határozza meg a Get-Item parancs kimenetét csak a mappákhoz

A Get-ChildItem programhoz hasonlóan a Get-Item-t további névvel is meg lehet tekinteni. A Get-Item egy beépített kiegészítő névvel rendelkezik: gi.

A -Path paraméter elfogadja a helyettesítő karaktereket, így egyszerre több fájlt is átmásolhat. Például a következő parancs a C: \ Scripts mappában lévő összes fájlt átmásolja a C: \ Backups \ Scripts mappába:

A másolási művelet részletesebb vezérlése érdekében használhatja a -Recurse, -Filter és -Force opciókat. Tehát a következő parancs másolja az összes fájlt. txt, amely a C: \ Scripts C: \ Temp \ Text-ben található:

Vegye figyelembe, hogy a "backquote" az első sor végén a PowerShell folytató karaktere.

Miután megtudta egy kicsit, a "Path" paraméterben a FullName tulajdonságot beillesztheti a fájlobjektumok gondosan kiválasztott listájának másolásához a Get-Item vagy a Get-ChildItem parancs segítségével:

Move-Item használata

A mozgatható elem ebben az értelemben óvatosabb, és az eltávolítás helyett hibát okoz. Például, ha futtatja a parancsot

a hiba nem állítható elő, mert a fájl már létezik. A -Force opció használatával a Move-Item felülbírálja a meglévő fájlt.

A -Force paraméter mellett a Move-Item paranccsal a Recurse és a -Filter paramétereket használhatja testre szabásához. Például a következő parancs a C: \ Scripts mappában és annak almappáiban a C: \ Temp \ Text mappába helyezi át a szövegfájlokat. Ebben az esetben meg kell adnia a -Destination paraméter nevét, mivel nem használja ezt a paramétert a PowerShell által elvárt pozícióban:

Az új elem használata

Az új elem kettős szerepet játszik - a könyvtár és a fájl létrehozója (ezen kívül létrehozhat partíciókat és rendszerleíró beállításokat). Ha létre szeretne hozni egy fájlt, meg kell adnia a -Path és -TemType paramétereket. Mint a fentiekből kiderül, ez egy pozicionális paraméter -path így nincs szükség a paraméter nevét -path, ha az elérési utat és a fájl nevét (azaz a fájl elérési útját) után a parancs neve. Azt is meg kell adnia a -ItemType paramétert a "fájl" jelölőnégyzetet. Íme egy példa:

A -Path paraméter egy tömböt tartalmazhat, így egyszerre több fájlt hozhat létre. Csak elválasztania kell a vesszőket. Ezen kívül meg kell beszúrni az első paraméter -ItemType »fájlt«, ami azt jelenti, hogy meg kell adnia a nevét, a paraméter -path, hiszen most már nem az első paraméter a parancs után neve:

Ha ugyanaz a fájl elérési útjának neve már létezik, akkor hiba lép fel. Azonban megadhatja a -Force opciót úgy, hogy az Új elem felülírja a meglévő fájlt.

Ami igazán figyelemre méltó, hogy az Új elem lehetővé teszi a szöveget egy fájlba a -Value paraméter használatával:

Ne felejtsd el megadni a -Force opciót, ha a fájl már létezik. Ellenkező esetben a rendszer hibát fog generálni.

A -Value paraméter elfogadja az adatbevitelt a csővezetéken, ami kiváló módja annak, hogy más parancsok kimenetét átirányítsák egy fájlra. A kimeneti objektumokat csak Out-String használatával kell átalakítani egy stringre (ha nem, az új elem minden egyes objektumhoz új fájlt hoz létre). Például a következő parancs visszatérési információt a fájlt a gyökérkönyvtárban C, átalakítja a fájl információt egy húr, majd írja ezt az információt egy fájlban H: \ C Listing.txt:

Az új elemnek csak egy beépített kiegészítő neve van: ni.

Eltávolító elem használata

Az Eltávolítás-elem véglegesen törli az erőforrást a megadott lemezről, vagyis nem helyezi át a kukába. Így ha törölni szeretne az Eltávolítás elemet, akkor nincs más módja annak visszaadni, kivéve a fájl-helyreállítási programot.

Megadja, hogy melyik fájlnak kell eltávolítania az eltávolítási pontot a -Path paraméterrel. Pozíció van, ezért nem kell megadnia a -Path paraméter nevét, ha a parancsnév után azonnal megy. Itt van például a parancs törlése a C: \ Backups \ Scripts mappába előzőleg másolt test.txt fájlhoz:

Nézzünk egy másik példát. A következő parancs törli az összes fájlt. txt (amint az a paraméter -include) a mappa C: \ Scripts, kivéve azokat a fájlokat, melyek a szó tesztet bárhol a fájl nevét (ami meg van adva -Exclude paraméter):

Mivel valójában veszélyes eszköz, az Remove-Item egy pár biztonsági elemet tartalmaz. Először is, ha minden olyan mappából törölni akarsz, amely nem üres almappákat tartalmaz, megerősítő kérést kap a megerősítéshez. Tegyük fel például, hogy a C: \ Scripts nem üres almappákat tartalmaz, és ezt a parancsot futtatja:

Meg kell erősítenie, hogy törölni kívánja a nem üres almappákat, amint azt a 7. képernyő mutatja.

Képernyő 7. Kérelem a törlés megerősítéséhez az Eltávolítás elem használata esetén

Ha szeretne futtatni egy szkriptet, amely a Remove-Itemm távolítsa el a teljes mappa tartalma, beleértve a tartalmát almappákat, szüksége van egy módja annak, hogy futtatni a Remove-Item felhasználói beavatkozás nélkül. Ezzel az opcióval engedélyezheti a -Sürgetés jelölőnégyzetet.

A második biztonsági elem a -WhatIf paraméter. Ha felveszed az Elem törlése parancsra, akkor a PowerShell megmutatja, hogy mely elemek lesznek törölve, és nem törölni őket. A törlési műveletek pusztító jellegének köszönhetően érdemes elvégeznie a Remove-Item parancs próbaváltozatát a -WhatIf paraméterrel, mint itt:

Példa eredményeket a képernyőn 8. megjegyzés, hogy az eredmények lehetnek karakterlánc hibaüzenetet Nem sikerült eltávolítani az elemet a „C: \ Users”, mert használatban van. Ez a helyzet akkor fordul elő, ha az aktuális munkamegosztás az eltávolítani kívánt könyvtár almappája (a példában a C gyökérkönyvtár almappája).

A powershell parancsokkal rendelkező fájlok kezelése, windows pro pro

8. képernyő: Az eltávolítás elem használata a -WhatIf paraméterrel

Ami a további neveket illeti, a Remove-Item elkülönül. Hat álnév van: del, törlés, rd, ri, rm és rmdir.

Az Átnevezés-pont használata

A Rename-Item parancsot akkor használja, ha egy erőforrást át akar nevezni a PowerShell szolgáltató által megadott névtéren. A Rename-Item első paramétere a -Path és a második paraméter -NewName. A -NewName paraméter, ahogy elvárható, megadja az erőforrás új nevét. Ha a Rename-Item nem csak a nevet, hanem az elérési utat is észleli, akkor hibaüzenet jelenik meg. Ha például módosítani szeretné a C Listing.txt fájl nevét a H gyökérkönyvtárából a c_listing.txt fájlba, akkor a következő parancsot kell futtatnia:

Mivel a -Path és a -NewName pozícióparaméterek, akkor a paraméterneveket átugorhatjuk, amíg azok a várt pozíciókban vannak:

A Rename-Item egy korlátozást tartalmaz - a -NewName paraméter egy sort vonalkód nélkül vár. Azonban meg tudod oldani ezt a követelményt, ha felsorolja a könyvtárban lévő elemeket. Csak a kimenetet kell pipálnia a Get-ChildItem parancsra a -Path paraméterben, és meg kell adnia a -NévNév opciót.

Például az alábbi parancs felsorolja az aktuális könyvtár összes fájlját, és átnevezi az egyes fájlokat, és az aláhúzással a fájlnevek összes szóközt helyettesíti:

Lássuk, hogyan működik ez a csapat. A kimenet Get-ChildItem a Where-Object elemre esik, amely kiszűri a kimenetet, így csak a fájlok visszaküldésre kerülnek. Ez úgy érhető el segítségével a PsIsContainer NoteProperty -nem logikai operátor (!) (Másik lehetőségként kerülhet $ _. PSIsContainer -eq $ false, ahogy ez az előző példában). A szűrt kimenet (fájl objektumok) a Rename-Item-be kerülnek. A Rename-Item -NewName paraméter értéke a parancsfájl blokkja. Ez a blokk végrehajtódik a Rename-Item parancs előtt. A parancsfájlblokkban a $ _ automatikus változó minden egyes fájlobjektumot képvisel, mivel belép a parancsba a tartályon keresztül. Az összehasonlító operátor -hely-hely minden egyes fájlnévben ('') helyettesíti az aláhúzást ('_'). Ne feledje, hogy a "\ s" kifejezéssel megadhat egy szóközt, mert az első paraméter szabályos kifejezéseket tartalmaz. Még a rejtett fájlok is átnevezhetők a -Force paraméter miatt.

A Rename-Item két álnév: ren és rni.

A Magnificent Seven

Ossza meg az anyagot kollégákkal és barátokkal

Kapcsolódó cikkek