ARUBA INSTANT WI-FI: SIMPLĂ, PUTERNICĂ, DISPONIBILĂ
Windows PowerShell oferă utilizatorilor patru moduri de a lucra cu fișiere.
În acest articol, voi vorbi despre comenzile create special pentru fișiere. Iată comenzile pe care le puteți utiliza pentru a lucra cu fișiere:
Folosind Get-ChildItem
Comanda Get-ChildItem returnează articole găsite în una sau mai multe locații specificate. O locație poate fi un container de sistem de fișiere, cum ar fi un director sau o locație afișată de un alt furnizor, cum ar fi o subcheie de registry sau un magazin de certificate. Puteți utiliza parametrul Recurse al acestei comenzi pentru a ajunge la elementele din toate subfolderele.
Dacă utilizați această comandă fără parametri, aceasta returnează toate elementele copil (de ex. Subfoldere și fișiere) în locația curentă. De exemplu, dacă locația curentă este directorul rădăcină al H, atunci executând comanda Get-ChildItem, veți obține rezultate similare cu cele afișate pe ecranul 1.
Ecranul 1. Rezultatele lucrării Get-ChildItem
Utilizând parametrii, puteți obține informațiile de care aveți nevoie. De exemplu, următoarea comandă returnează toate fișierele. intrați în directorul rădăcină al lui C, inclusiv subdirectoarele:
După cum vedem, această comandă utilizează parametrii -Include, -Recurse și -Force. Parametrul -Include este utilizat pentru a returna elementele specificate. Acesta susține utilizarea de caractere și este ideal pentru specificarea extensiilor de nume de fișiere. Opțiunea -Recurse instruiește PowerShell să returneze subfoldere împreună cu fișierele. Opțiunea -Force adaugă fișiere ascunse și de sistem la datele de ieșire.
După ce executați această comandă, veți primi probabil o listă extinsă de mesaje de eroare. În funcție de setările și politicile de securitate ale sistemului, accesul la anumite directoare (de exemplu, Recycle Bin, Start Menu, foldere de utilizator) este limitat și nu poate fi citit. Puteți ascunde aceste mesaje de eroare prin specificarea parametrului -ErrorAction SilentlyContinue.
Următoarea comandă produce aceleași rezultate ca cea precedentă, deoarece parametrul -Path înțelege metacaractere:
Pentru anumiți parametri ai comenzilor PowerShell, puteți omite numele parametrului dacă știți că parametrul se află în poziția pe care o are PowerShell. Acesta este cazul cu parametrul -Path al comenzii Get-ChildItem. Astfel, următoarea comandă va returna același rezultat ca și comanda anterioară:
-path parametru poate lua mai multe argumente, separate prin virgulă. De exemplu, să presupunem că doriți să se întoarcă. log-fișiere din două locații: directorul rădăcină al C, și rădăcina N, acesta din urmă este curentul (de exemplu, locația implicită). Pentru a efectua această sarcină, trebuie să specificați valoarea C: \ * pentru a obține toate jurnalele de la rădăcina C și valoarea fișiere jurnal * pentru a prelua toate fișierele din rădăcina H (ca directorul rădăcină al H este locația implicită, nu trebuie să specificați H: \. ). două argumente, o virgulă ar trebui să fie împărțită astfel:
Rezultatele exemplul din Figura 2 nota atributul «h“ în rădăcina coloana Mod de N. Acest atribut indică faptul că fișierul ntuser.dat.LOG este ascunsă. Se găsește în parametrul -forța.
Ecranul 2. Ieșirea fișierelor ascunse
Deși acest lucru nu este prezentat în exemple, puteți consulta Get-ChildItem cu nume suplimentare, pseudonime. Există trei aliasuri construite: dir (ca în DOS comanda dir), gci și ls (cum ar fi comanda ls pe UNIX).
Folosind comanda Get-Item
Comanda Get-Item returnează elementele specificate din locațiile atribuite. Ca și ChildItem, Get-Item poate fi folosit pentru a naviga prin diferite tipuri de magazine de date. Spre deosebire de Get-ChildItem, Get-Item nu are o locație implicită, deci trebuie să furnizați întotdeauna cel puțin o locație folosind parametrul -Path. Deși este necesar parametrul în sine, nu este necesar să specificați un nume de parametru. De exemplu, aici este o comandă simplă care folosește un "punct" pentru a returna informații despre directorul curent (în acest caz, dosarul rădăcină al lui H):
Rezultatele sunt afișate pe ecranul 3. Comanda Get-Item vă permite să utilizați wildcard * pentru a returna întregul conținut al elementului (adică toți copiii). De exemplu, următoarea comandă returnează tot conținutul directorului curent (în acest caz, directorul rădăcină al lui H). Punctul și simbolul asterisc pot fi folosite ca componente în calea fișierului, dar trebuie să specificați și slash-ul ca separator de dosare:
Ecranul 3. Utilizând elementul Get-Item pentru a afișa informații despre dosarul curent
Puteți vedea rezultatele pe ecranul 4. Este important să înțelegeți că comenzile PowerShell, inclusiv Get-Item, returnează obiecte. Comanda Get-Item returnează obiectele System.IO.DirectoryInfo care conțin mai multe metode și proprietăți pe care le puteți utiliza. Pentru a vedea aceste metode și proprietăți, puteți transmite rezultatele comenzii Get-Item la comanda Get-Member. Dacă doriți să vedeți aceste proprietăți, puteți rula această comandă:
Ecranul 4. Utilizând elementul Get-Item pentru a afișa întregul conținut al dosarului curent
După cum se arată pe ecranul 5, proprietatea LastAccessTime returnează data și ora la care directorul specificat a fost accesat ultima dată.
Ecranul 5. Explorarea proprietăților obiectului System.IO.DirectoryInfo
De exemplu, dacă doriți să aflați când a fost accesat ultimul director în directorul curent, executați comanda:
Rețineți că în această comandă sunați la Get-Item. este închis în paranteze și că există o perioadă între paranteza de închidere și LastAccessTime. Parantezele din jurul elementului "Get-Item". "Sunt necesare pentru a se asigura că obiectele returnate sunt stocate în memorie și puteți efectua operații suplimentare cu acestea. În acest caz, operația trebuie să găsească valoarea returnată a proprietății LastAccessTime a obiectului. În PowerShell, utilizați simbolul punct pentru a accesa un număr de proprietăți și metode de obiect. De aceea, trebuie să introduceți o perioadă între paranteza de închidere și LastAccessTime.
Există o colecție de proprietăți speciale numite NoteProperty. Puteți aplica aceasta pentru a reduce ieșirea pentru un anumit tip de obiect. Puteți folosi Get-Member cu parametrul -MembraTip NoteProperty pentru a afla despre proprietățile speciale ale acestei colecții:
Dacă executați această comandă, veți găsi că colecția returnează șase proprietăți: PSChildName, PSDrive, PSIsContainer, PSParentPath, PSPath și PSProvider. Proprietatea PSIsContainer a colecției NoteProperty indică dacă obiectul este un container (folder). Proprietatea returnează True când obiectul este un dosar și False când este un fișier. Puteți utiliza această proprietate pentru a restricționa ieșirea elementului Get-Item în foldere:
Să discutăm această comandă mai detaliat. Rezultatele sale sunt afișate pe ecranul 6. Puteți conduce întregul conținut al directorului rădăcină la comanda Where-Object, care vă permite să filtrați obiecte. În acest caz, utilizați PSIsContainer din NoteProperty pentru a filtra ieșirea și astfel numai directoarele sunt returnate. Variabila automată $ _ reprezintă fiecare obiect de fișier de îndată ce este trecut la comanda de pe conductă.
Ecranul 6. Limitați ieșirea comenzii Get-Item numai la dosare
Ca și în Get-ChildItem, puteți să consultați Get-Item cu un nume suplimentar. Get-Item are un nume suplimentar încorporat: gi.
Parametrul -Path acceptă metacaractere, astfel încât să puteți copia mai multe fișiere simultan. De exemplu, următoarea comandă copiază toate fișierele din folderul C: \ Scripts în folderul C: \ Backups \ Scripts:
Pentru a obține un control mai detaliat asupra operației de copiere, puteți utiliza opțiunile -Recurse, -Filter și -Force. Deci, următoarea comandă copiază toate fișierele. txt, conținută în C: \ Scripturi în C: \ Temp \ Text:
Rețineți că "backquote" la sfârșitul primei linii este un caracter de continuare în PowerShell.
După ce ați învățat puțin, puteți introduce proprietatea FullName în parametrul -Path pentru a copia o listă a obiectelor de fișier selectate cu atenție, utilizând fie Get-Item, fie Get-ChildItem:
Folosind elementul de mutare
Punctul de mișcare este mai precaut în acest sens și în loc să îl eliminați produce o eroare. De exemplu, dacă executați comanda
obțineți eroarea Nu se poate crea un fișier, deoarece fișierul există deja. Folosind opțiunea -Force provoacă Move-Item pentru a suprascrie fișierul existent.
În plus față de parametrul -Force, puteți utiliza parametrii Recurse și -Filter în comanda Move-Item pentru a-l personaliza. De exemplu, următoarea comandă muta fișierele text în folderul C: \ Scripts și subfolderele sale în directorul C: \ Temp \ Text. În acest caz, trebuie să specificați numele parametrului -Destination, deoarece nu utilizați acest parametru în poziția în care se așteaptă PowerShell:
Utilizarea elementului nou
Elementul nou are un rol dublu - creatorul directorului și fișierului (în plus, poate crea partiții și setări de registry). Când doriți să creați un fișier, trebuie să specificați parametrii -Path și -ItemType. Așa cum am arătat mai sus, parametrul -Path este pozițional, așa că numele parametrului -Path nu este necesar atunci când specificați calea și numele (adică calea către fișier) imediat după numele comenzii. De asemenea, trebuie să specificați parametrul -ItemType cu caseta de selectare "fișier". Iată un exemplu:
Parametrul -Path poate lua o serie de șiruri de caractere, astfel încât să puteți crea mai multe fișiere simultan. Trebuie doar să separați căile cu virgule. În plus, trebuie să introduceți mai întâi parametrul -ItemType "file", ceea ce înseamnă că trebuie să specificați numele parametrului -Path, deoarece nu este acum primul parametru după numele comenzii:
Dacă există deja un fișier cu același nume de cale de fișier, veți primi o eroare. Cu toate acestea, puteți specifica opțiunea -Force, astfel încât noul element suprascrie fișierul existent.
Ce este cu adevărat demn de remarcat este faptul că noul element vă permite să inserați text într-un fișier utilizând parametrul -Value:
Nu uitați să specificați opțiunea -Force dacă fișierul există deja. În caz contrar, sistemul va genera o eroare.
Parametrul -Value poate accepta introducerea datelor pe conductă, ceea ce reprezintă o modalitate excelentă de redirecționare a ieșirii altor comenzi la un fișier. Trebuie doar să convertiți obiectele de ieșire într-un șir folosind Out-String (dacă nu, noul element va crea un fișier nou pentru fiecare obiect). De exemplu, următoarea comandă returnează informații despre toate fișierele din directorul rădăcină al lui C, convertește informațiile despre fișiere într-un șir și apoi scrie aceste informații în fișierul H: \ C Listing.txt:
Elementul nou are un singur nume suplimentar încorporat: ni.
Utilizarea elementului eliminare
Remove-Item șterge definitiv resursa de pe discul specificat, adică nu îl deplasează în coșul de gunoi. Astfel, dacă utilizați Ștergeți articolul pentru a șterge un fișier, nu există altă modalitate de returnare a acestuia, cu excepția programului de recuperare a fișierelor.
Tu specificați care fișier ar trebui să elimine Remove-Item cu parametrul -Path. Aceasta este poziționată, deci nu este necesar să specificați numele parametrului -Path, dacă acesta merge imediat după numele comenzii. De exemplu, aici este comanda pentru ștergerea fișierului test.txt, care a fost anterior copiat în folderul C: \ Backups \ Scripts:
Să ne uităm la un alt exemplu. Următoarea comandă șterge toate fișierele. txt (așa cum este indicat în parametrul -Include) în folderul C: \ Scripturi, cu excepția acelor fișiere care au testul de cuvânt oriunde în numele fișierului (care este specificat în parametrul -Exclude):
Fiind, de fapt, un instrument periculos, Remove-Item este prevăzut cu o pereche de elemente de securitate. În primul rând, dacă încercați să ștergeți totul dintr-un dosar care conține subfoldere ne-goale, veți primi o solicitare de confirmare pentru Confirmare. De exemplu, să presupunem că C: \ Scripts conține subfoldere non-goale și executați această comandă:
Trebuie să confirmați că doriți să ștergeți subfolderele ne-goale, după cum se arată pe ecranul 7.
Ecranul 7. Solicitați să confirmați ștergerea când utilizați funcția Eliminare
Dacă doriți să rulați un script care utilizează Ștergeți elementele pentru a șterge întregul conținut al dosarelor, inclusiv conținutul subfolderelor, aveți nevoie de o modalitate de a rula Eliminarea elementului fără intervenția utilizatorului. Această opțiune este să activați caseta de validare -Recurse.
Al doilea element de securitate este parametrul -WhatIf. Dacă îl includeți în comanda Remove-Item, PowerShell va arăta elementele care vor fi șterse, mai degrabă decât să le ștergeți. Datorită naturii distructive a operațiilor de ștergere, este logic să efectuați o cerere de încercare a comenzii Remove-Item cu parametrul -WhatIf, după cum urmează:
Rezultatele exemplului sunt afișate pe ecranul 8. Rețineți că rezultatele pot include un mesaj de eroare în linie. Nu se poate elimina elementul la 'C: \ Users' deoarece este utilizat. Această situație apare dacă folderul de lucru curent este un subfolder al directorului pe care încercați să îl eliminați (în exemplu, subfolderul directorului rădăcină C).
Ecranul 8. Folosind elementul Eliminare cu parametrul -WhatIf
În ceea ce privește numele adiționale, apoi se elimină articolul Remove-Item. Are șase pseudonime: del, șterge, rd, ri, rm și rmdir.
Folosirea elementului Rename-Item
Comanda Rename-Item este utilizată atunci când doriți să redenumiți o resursă în spațiul de nume furnizat de furnizorul PowerShell. Primul parametru al elementului Rename-Item este -Path și al doilea parametru -NewName. Parametrul -NewName, după cum vă așteptați, specifică noul nume al resurselor. Dacă funcția Redenumire detectează nu numai numele, ci calea, va afișa o eroare. De exemplu, dacă doriți să modificați numele fișierului C listing.txt din directorul rădăcină al lui H în c_listing.txt, va trebui să executați următoarea comandă:
Deoarece -Path și -NewName sunt parametri poziționali, puteți sări peste numele parametrilor atâta timp cât se află în pozițiile așteptate:
Redenumiți-elementul are o restricție - parametrul -NewName așteaptă pentru o linie fără caractere. Cu toate acestea, puteți rezolva această cerință prin listarea articolelor din director. Trebuie doar să conduceți ieșirea la comanda Get-ChildItem din parametrul -Path și să specificați opțiunea -NewName.
De exemplu, următoarea comandă afișează toate fișierele din directorul curent și redenumește fiecare fișier, înlocuind toate spațiile din numele fișierelor cu subliniază:
Să vedem cum funcționează această echipă. Ieșirea Get-ChildItem se încadrează în Unde-Obiect, care filtrează ieșirea, astfel încât să fie returnate numai fișierele. Acest lucru se realizează prin utilizarea PsIsContainer NoteProperty -nu e un operator logic (!) (Alternativ, ai putea lua $ _. PSIsContainer -eq $ false, așa cum a fost făcut în exemplul anterior). Ieșirea filtrată (obiecte de fișier) intră în elementul Redenumire. Valoarea parametrului -NewName din Rename-Item este blocul scriptului. Acest bloc va fi executat înainte de comanda Rename-Item. În blocul de script, variabila automată $ _ reprezintă fiecare obiect de fișier, pe măsură ce intră în comandă prin container. Operatorul de comparare -place înlocuiește spațiile din fiecare nume de fișier ('') cu o subliniere ('_'). Rețineți că puteți utiliza expresia '\ s' pentru a specifica un spațiu, deoarece primul parametru ia expresii regulate. Chiar și fișierele ascunse pot fi redenumite datorită parametrului -Force.
Rename-Item are două pseudonime: ren și rni.
Magnificul Șapte
Distribuiți materialul împreună cu colegii și prietenii