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