PowerShell și tot ce trebuie să știi despre acest utilitar

Ce-ar fi dacă PC-ul tău ar putea gestiona sarcinile banale pentru tine? Cu Windows PowerShell, poate. Iată cum poți utiliza PowerShell pentru a automatiza sarcinile repetitive, de zi cu zi, pe care nimeni nu vrea să le facă iar și iar.

Cuprins

Ce este PowerShell?

Microsoft PowerShell este un utilitar de linie de comandă și un limbaj de scripting, un instrument puternic pentru administratori, care permite automatizarea unei game largi de sarcini pentru computere și rețele. PowerShell conține componente ale promptului de comandă și este construit pe .NET framework. Dacă citiți despre WebTech360, ar trebui să știți că PowerShell este instrumentul preferat de administratorii IT pentru gestionarea rețelelor mari.

Învățarea modului de utilizare a PowerShell va simplifica multe dintre sarcinile zilnice plictisitoare. De asemenea, puteți face modificări la nivel de sistem prin rețea, fără a fi nevoie să configurați individual fiecare server. PowerShell devine o parte esențială a rulării mediilor cloud hibride .

PowerShell are multe utilizări diferite pentru a vă ajuta să lucrați mai eficient și să mențineți rețeaua funcțională. Cele mai elementare utilizări includ: programarea actualizărilor zilnice ale sistemelor, generarea de rapoarte despre procesele curente, serviciile periodice și multe altele. Deși multe dintre aceste sarcini pot fi efectuate prin intermediul interfeței grafice, scopul PowerShell este de a le face mai rapid.

Dacă aveți o sarcină de întreținere de rutină a cărei configurare durează câteva minute, puteți scrie aceeași funcționalitate într-o singură comandă, numită PowerShell. Apoi, data viitoare când deschideți scriptul respectiv, acesta va rula în fundal. Stăpânirea logicii de scriptare PowerShell, înțelegerea modului în care funcționează obiectele, variabilele și implementarea inteligentă a acesteia în rețea vă vor face să vă întrebați de ce nu ați folosit PowerShell mai devreme.

Acest tutorial va acoperi elementele de bază ale PowerShell, care vor fi utile pentru cei noi în IT, mai ales dacă sunteți familiarizați cu Linia de comandă Windows. Va prezenta cum să utilizați instrumente și comenzi de bază, cum să lucrați cu fișiere și foldere, cum să înțelegeți obiectele, cum să utilizați variabile și cum să gestionați servere la distanță.

O scurtă istorie a utilitarelor din linia de comandă Windows

După lansarea Windows NT, CMD.EXE a devenit utilitarul de linie de comandă pentru Windows. Deși CMD.EXE a moștenit unele elemente de la predecesorul său DOS (COMMAN.COM), se baza totuși pe un limbaj de scripting destul de „primitiv”: folosea fișiere Windows Command (.CMD și .BAT). Adăugarea Windows Scripting Host și a limbajelor VBScript și JScript a îmbunătățit considerabil capacitățile de scripting ale utilitarului.

Aceste tehnologii reprezintă o combinație destul de echilibrată de utilitare avansate de linie de comandă și medii de scripting. Adevărata problemă nu este câte fișiere CMD.EXE, .CMD și Windows Scripting Host pot fi manipulate cu ajutorul lor. Principala nemulțumire și preocupare este îndeplinirea unor sarcini aparent simple.

Folosind un „framework” de instrumente de linie de comandă și de scripting, orice script moderat complex necesită o combinație de comenzi batch, Windows Scripting Host și executabile independente. Fiecare script folosește convenții diferite pentru execuție și solicitări, analiză și returnare a datelor.

Suportul slab pentru variabile în CMD.EXE, interfețele inconsistente și accesul limitat la setările Windows, combinate cu o altă slăbiciune, fac ca scriptarea în linia de comandă să fie dificil de implementat și utilizat. Ce este această „cealaltă slăbiciune”, v-ați putea întreba? Este text. În aceste tehnologii, totul este text. Rezultatul unei comenzi sau al unui script este text și trebuie analizat și reformatat pentru a acționa ca intrare pentru următoarea comandă. Acesta este punctul de plecare pe care PowerShell îl preia de la toate shell-urile tradiționale.

Introducerea instrumentelor, comenzilor și modulelor PowerShell

Cele trei concepte introduse în această secțiune reprezintă doar elementele de bază pentru a înțelege conceptele cheie care stau la baza PowerShell. Va trebui să petreceți mai mult timp învățând și stăpânind conceptele mai avansate pe măsură ce abordați comenzile PowerShell.

Instrumente PowerShell

PowerShell este instalat în mod implicit în Windows 10, Windows 7, Windows Server 2008 R2 și versiunile mai noi de Windows. Versiunile mai noi de PowerShell adaugă noi caracteristici și „cmdlet-uri” (termenul Microsoft pentru comenzile PowerShell - pronunțat „command-lets”) și sunt instalate odată cu versiunea corespunzătoare de Windows Management Framework (WMF).

În prezent, WMF 5.1 este cea mai recentă versiune recomandată. În unele cazuri, unele funcții noi depind de sistemul de operare, pe lângă versiunea WMF. De exemplu, Windows 8 și Windows Server 2012 acceptă cmdletul Test-NetConnection, care vă permite să testați conectivitatea la un anumit port TCP/IP , dar acest cmdlet nu este disponibil în Windows 7, chiar și atunci când rulați cea mai recentă versiune de WMF.

Pe majoritatea sistemelor Windows, utilizatorii vor avea la dispoziție două medii PowerShell, consola PowerShell și PowerShell ISE (Integrated Scripting Environment). Consola PowerShell apare ca o linie de comandă tradițională, dar cu funcționalitatea completă a PowerShell în spate. Numele variabilelor, buclele, completarea automată a comenzilor și configurarea de conducte sunt toate disponibile din consola PowerShell.

Pentru utilizări mai avansate (cum ar fi scriptarea), PowerShell ISE oferă completare automată a comenzilor, evidențierea codului și completarea codului Intellisense de la Microsoft pentru a vă ajuta să creați și să testați cod PowerShell. PowerShell ISE vă permite, de asemenea, să lucrați cu mai multe scripturi PowerShell simultan, utilizând navigarea cu file.

cmdlet-uri în PowerShell

Fundația comenzilor PowerShell este cmdletul. Microsoft a adoptat mai multe strategii de design atunci când a creat cmdleturi în PowerShell.

În primul rând, este vorba de capacitatea de a deduce cu ușurință numele cmdlet-urilor sau cel puțin de a le face mai ușor de descoperit. Comenzile sau cmdleturile PowerShell sunt, de asemenea, concepute pentru a fi mai ușor de utilizat, cu o sintaxă standardizată, facilitând crearea de scripturi din interfața liniei de comandă.

Cmdlet-urile utilizează formatul Verb-Substantiv, ca în Get-Service, Stop-Service sau Import-Csv. Partea verbală a numelui cmdlet-ului indică acțiunea efectuată asupra substantivului. De obicei, cmdlet-urile care sunt utilizate pentru a prelua informații vor avea verbul Get în nume, cum ar fi Get-Process sau Get-Content . Comenzile utilizate pentru a modifica ceva încep de obicei cu verbul Set , iar comenzile utilizate pentru a adăuga o entitate nouă la ceva încep de obicei cu Add sau New .

În al doilea rând, parametrii utilizați în mod obișnuit în PowerShell primesc și nume standardizate. De exemplu, parametrul -ComputerName permite executarea cmdletului pe unul sau mai multe computere la distanță. -Credential este utilizat pentru a furniza un obiect de autentificare, care conține acreditările utilizatorului, pentru a executa comanda ca un anumit utilizator.

Module în PowerShell

Puteți utiliza aliasuri atât pentru cmdlet-uri, cât și pentru parametri, pentru a economisi apăsări de taste și a scurta lungimea totală a comenzii (util atunci când se leagă mai multe comenzi în lanț). Deși aceste aliasuri nu utilizează întotdeauna convenții de denumire standard, ele reflectă în continuare utilitarele tradiționale din linia de comandă.

În PowerShell, aliasurile precum DIR, CD, DEL și CLS corespund cmdlet-urilor Get-ChildItem, Set-Location, Remove-Item și respectiv Clear-Host. Aliasurile de parametri pot funcționa în două moduri: pot utiliza un alias predefinit furnizat de cmdlet sau pot fi aliasate prin introducerea a suficiente caractere pentru a crea o potrivire unică între parametrii acceptați de cmdlet.

Gestionarea fișierelor și folderelor

Majoritatea administratorilor de sistem trebuie să manipuleze fișiere și foldere în cursul activității lor, fie că este vorba de mutarea unui folder într-o altă locație pe server, arhivarea fișierelor jurnal sau căutarea de fișiere mari. În cazurile în care aceleași operațiuni sunt repetate pe mai multe fișiere, utilizarea PowerShell pentru automatizarea acestora va fi o soluție eficientă de economisire a timpului.

Pentru a găsi fișiere și foldere, unul dintre primele instrumente din linia de comandă pe care un administrator le învăța în vremurile vechi ale informaticii era comanda dir. Dir va lista fișierele și folderele conținute în directorul specificat.

PowerShell are o comandă similară sub forma cmdletului Get-ChildItem . Get-ChildItem vă permite să construiți rapid o listă de fișiere dintr-un director, astfel încât să puteți manipula fișierele printr-o comandă pipe sau să atribuiți ieșirea unei variabile.

Get-ChildItem poate fi utilizat pur și simplu prin furnizarea unei căi, fie printr-o conductă, folosind parametrul -Path , fie direct după numele cmdlet-ului. Pentru a modifica răspunsul returnat de Get-ChildItem, este necesar să se ia în considerare anumiți parametri puși la dispoziție de cmdlet.

Parametrul -Filter este o modalitate prin care puteți căuta fișiere. În mod implicit, Get-ChildItem returnează doar copiii direcți ai directorului țintă. Această funcționalitate poate fi extinsă utilizând parametrul -Recurse , care caută recursiv directoarele conținute în directorul curent.

În PowerShell 4.0, Get-ChildItem a adăugat posibilitatea de a limita rezultatele la fișiere sau directoare utilizând comutatorul –File sau –Directory . Versiunile anterioare de PowerShell trebuiau să transmită rezultatele către Where-Object, filtrând după proprietatea PSIsContainer pentru a face această determinare. Un exemplu al ambelor tehnici utilizate pentru a returna directoarele conținute în C:Users este prezentat aici:

Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}

Pentru a detecta fișiere ascunse sau de sistem, trebuie utilizat  -Force . Get-ChildItem în PowerShell 4.0 și versiunile ulterioare poate fi, de asemenea, utilizat pentru a returna doar fișiere ascunse, doar în citire sau de sistem folosind -Hidden, -ReadOnly și, respectiv, –System . Funcționalități similare puteau fi obținute în versiunile anterioare prin filtrarea proprietății Mode folosind Where-Object:

Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}

Verificați dacă fișierul există

În mod normal, atunci când lucrăm cu fișiere, tot ce trebuie să știm este dacă fișierul există sau dacă calea directorului este validă. PowerShell oferă un cmdlet pentru a face acest lucru sub forma Test-Path, care returnează o valoare true sau false.

Test-Path este utilizat ca măsură de precauție înainte de a încerca să copiați sau să ștergeți un anumit fișier.

Copiați, mutați și ștergeți fișiere

Copy-Item: Copiază unul sau mai multe fișiere sau directoare dintr-o locație specificată de parametrul -Path în locația specificată de opțiunea -Destination.

Mutare element: Mută ​​un fișier sau un folder.

Când o structură de directoare este copiată sau mutată, ar trebui utilizată funcția -Recurse pentru ca cmdletul să efectueze acțiunea asupra directorului și a conținutului său. În unele cazuri, este necesară și funcția -Force , cum ar fi atunci când un fișier doar pentru citire este suprascris de o operațiune de copiere.

Eliminare element: Șterge fișier, folder.

Opțiunea -Force ar trebui utilizată atunci când întâlnești un fișier doar pentru citire, iar opțiunea -Recurse ar trebui utilizată la ștergerea unui director și a conținutului său.

Utilizarea PowerShell -WhatIf și -Confirm

Înainte de a efectua o ștergere masivă și serioasă, utilizați -WhatIf . -WhatIf vă permite să vedeți ce s-ar întâmpla dacă ați rula un script sau o comandă și dacă ar avea vreun impact negativ potențial prin ștergerea datelor importante ale afacerii. De asemenea, merită menționat faptul că -WhatIf nu se limitează la operațiunile cu fișierele, ci este utilizat pe scară largă în PowerShell.

Pentru scripturile pe care intenționați să le rulați manual sau, mai rău, care au comenzi dependente care rulează manual, luați în considerare utilizarea -Confirm . Aceasta vă permite să solicitați interacțiunea utilizatorului înainte ca operațiunea să aibă loc efectiv.

Scripturi PowerShell = Fișiere batch pe steroizi

PowerShell în sine este scris în limbajul .NET și se bazează în mare măsură pe .NET Framework. Ca atare, PowerShell este conceput ca un limbaj de scripting și shell orientat pe obiecte. Totul în PowerShell este tratat ca un obiect cu toate capacitățile .NET Framework. O comandă expune o colecție de obiecte care pot fi utilizate folosind proprietățile și metodele acelui tip de obiect. Când doriți să transmiteți ieșirea unei comenzi către alta, PowerShell transmite de fapt obiectul, nu doar ieșirea text a primei comenzi. Acest lucru oferă următoarei comenzi acces complet la toate proprietățile și metodele obiectului din canal.

Tratarea tuturor elementelor ca obiecte și posibilitatea de a accepta obiecte între comenzi reprezintă o schimbare majoră în teoria utilitarelor din linia de comandă. Acestea fiind spuse, PowerShell funcționează în continuare ca o shell tradițională. Comenzile, scripturile și executabilele pot fi tastate și rulate din linia de comandă, iar rezultatele sunt afișate ca text. Fișierele Windows .CMD și .BAT, VBScript-urile, JScript-urile și executabilele care rulează în CMD.EXE rulează în continuare în PowerShell. Cu toate acestea, deoarece nu sunt orientate pe obiecte, nu au acces complet la obiectele create și utilizate în PowerShell. Aceste scripturi și executabile moștenite vor trata în continuare totul ca text, dar puteți combina PowerShell cu o serie de alte tehnologii. Acest lucru este deosebit de important dacă doriți să începeți să utilizați PowerShell cu o colecție de scripturi existente pe care nu le puteți converti toate dintr-o dată.

Explicația parametrilor PowerShell

Cmdleturile pot accepta parametri pentru a le schimba comportamentul. Când rulați un cmdlet sau o funcție, puteți furniza valori ale parametrilor pentru a specifica ce, când, unde și cum se execută fiecare comandă PowerShell.

De exemplu, Get-Process va prelua și lista toate procesele care rulează în sistemul de operare:

PowerShell și tot ce trebuie să știi despre acest utilitar
Get-Process listează toate procesele care rulează.

Dar dacă vrei doar să obții un anumit proces? Poți face asta folosind parametri. De exemplu, pentru a obține toate procesele Slack, poți utiliza parametrul Name cu cmdletul Get-Process:

Get-Process -Name Slack

Atunci veți vedea doar procese numite „slack”:

PowerShell și tot ce trebuie să știi despre acest utilitar
Utilizarea Get-Process cu parametri

Sfat : Unii parametri sunt „poziționali”, ceea ce înseamnă că numele lor sunt opționale. În acest caz, Get-Process -Name Slack și Get-Process Slack îndeplinesc aceeași sarcină.

Fiecare cmdlet va accepta diferite tipuri de parametri. Folosește comanda Get-Help pentru a vedea parametrii acceptați ai cmdlet-ului în secțiunea SINTAXĂ.

Get-Help Get-Process

Veți vedea o listă cu toate modalitățile posibile prin care puteți rula cmdletul dat:

PowerShell și tot ce trebuie să știi despre acest utilitar
parametrii sintaxei cmdlet

În acest caz, cmdletul Get-Process acceptă parametri precum Name, Id, ComputerName, Module, FileVersionInfo și alți parametri comuni. Simbolurile de aici înseamnă:

Simbol

Nume

Sens

 

Tambur

Parametrul nu acceptă date de intrare

-

Cratimă

Specificați numele parametrului

<>

paranteze

Substitut pentru text

[]

Paranteze

Parametrul poate accepta una sau mai multe valori.

{}

paranteze

Parametrul acceptă un set de valori.

Parametrii acceptă un set de valori care vor indica tipul de date de care au nevoie, cum ar fi șir de caractere, număr întreg, număr boolean sau dată și oră. De exemplu, următoarea comandă:

Get-Process [[-Name] ]

... înseamnă că parametrul Name acceptă una sau mai multe valori de tip șir de caractere, în timp ce această comandă:

Get-Process -Id 

... înseamnă că parametrul Id acceptă una sau mai multe valori întregi.

Exemplul anterior Get-Process a folosit parametrul Name pentru a restrânge rezultatele. Totuși, dacă doriți să restrângeți rezultatele la un proces mai specific, puteți utiliza parametrul ID , care necesită un număr întreg, așa cum este indicat în sintaxa sa.

Get-Process -Id 3016

Atunci veți vedea un singur proces în listă:

PowerShell și tot ce trebuie să știi despre acest utilitar
Utilizarea parametrului Id pe cmdlet-uri

Creați o conductă

PowerShell procesează toate datele ca obiecte. Pentru a construi un script, aceste obiecte sunt rulate printr-o serie de cmdlet-uri sau funcții conectate folosind simbolul bară verticală (|). Alegerea cmdlet-urilor potrivite și conectarea lor într-o secvență logică folosind o conductă este importantă pentru un script eficient.

Să presupunem că creezi un script pentru a sorta și afișa cele 5 fișiere care ocupă cel mai mult spațiu într-un director. Există metode mai puternice de a scrie un script de sortare a fișierelor, dar aceasta este ușor de înțeles:

PowerShell și tot ce trebuie să știi despre acest utilitar
Script Sortare fișiere mari PS1

Pentru a face acest lucru în PowerShell, utilizați o conductă care arată astfel:

Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize

Salvați canalul ca script PS1

Acum că avem o conductă funcțională, o puteți salva ca fișier script PS1, astfel încât să nu fie nevoie să o importați de fiecare dată când o utilizați.

Cea mai simplă metodă de a crea un fișier PS1 este să lipiți scriptul în Notepad și să salvați fișierul cu extensia .ps1.

PowerShell și tot ce trebuie să știi despre acest utilitar
Creați un script cu Notepad

După ce ați creat fișierul PS1, îl puteți utiliza în PowerShell rulând comanda ./ScriptName.ps1 :

PowerShell și tot ce trebuie să știi despre acest utilitar
Folosind scriptul PS1

Sfat : Dacă primiți o eroare de permisiuni, cea mai rapidă soluție este să rulați PowerShell cu drepturi de administrator atunci când rulați scriptul.

Felicitări! Acum puteți crea scripturi PowerShell PS1.

Exemplu de script PowerShell

A citi despre și a înțelege cât de extraordinare sunt noile tehnologii este un lucru, dar a le folosi efectiv este cu totul altceva! În restul acestui articol, vom dezvolta un script PowerShell pentru a demonstra capacitățile sale și cum să îl folosim.

DIR este una dintre cele mai comune comenzi din CMD.EXE . Această comandă afișează toate fișierele și subdirectoarele conținute într-un director părinte (așa cum se arată în Figura 1). Împreună cu numele fiecărui obiect, informațiile furnizate includ data și ora ultimei actualizări și dimensiunea fiecărui fișier. DIR afișează, de asemenea, dimensiunea combinată a tuturor fișierelor din director, precum și numărul total de fișiere și subdirectoare.

PowerShell și tot ce trebuie să știi despre acest utilitar
Figura 1

Rularea comenzii DIR în PowerShell produce, de asemenea, o listă de directoare ca în Figura 2, dar într-un mod ușor diferit. PowerShell nu are o comandă DIR, ci are în schimb Get-ChildItem, care îndeplinește aceeași funcție. În PowerShell, DIR este un alias pentru Get-ChildItem. Nu intenționez să intru în detalii despre aliasuri în acest articol. Vă puteți gândi la DIR în PowerShell ca la o abreviere pentru Get-ChildItem.

DIR în PowerShell oferă multe dintre aceleași informații menționate mai sus: o listă de fișiere și foldere, data și ora ultimei modificări și dimensiunea fiecărui fișier. Cu toate acestea, îi lipsesc informațiile rezumative pe care le oferă DIR în CMD.EXE: dimensiunea totală a tuturor fișierelor din folder, numărul total de fișiere și numărul total de subfoldere.

PowerShell și tot ce trebuie să știi despre acest utilitar
Figura 2

Pentru scenariul exemplificat, va trebui să creați un script PowerShell care simulează comanda CMD.EXE DIR. Mai jos voi explica cele mai importante părți ale unui script.

DIR.PS1: Antet

Un script PowerShell constă din comenzi PowerShell într-un fișier text simplu cu extensia .PS1. În loc de DIR, ați utiliza un fișier text numit DIR.PS1.

Pentru a rula scriptul, tastați următoarea comandă în ecranul PowerShell:

.DIR.PS1 X:Folder

Unde X este litera partiției unității (cum ar fi C, D, E), iar Folder este numele folderului.

Dacă doriți să aflați informații despre partiția unei unități, va trebui să utilizați Windows Management Instrumentation (WMI). Detaliile despre WMI depășesc scopul acestui articol, așa că nu le vom detalia aici. Însă codul PowerShell de mai jos este suficient de ușor de înțeles fără a utiliza WMI. Puteți crea o variabilă „$filter” pe care să o utilizați cu comanda Get-WmiObject. Acest filtru îi spune comenzii Get-WmiObject că doriți doar informații despre o anumită unitate. Rezultatele comenzii Get-WmiObject sunt stocate într-o variabilă numită $volInfo. Rețineți că în PowerShell totul este un obiect; $volInfo este acum un obiect returnat de Get-WmiObject.

$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter

Acum aveți acces la toate obiectele și metodele asociate cu obiectul. Numărul de serie al volumului este accesibil prin proprietatea VolumeSerialNumber. Numărul returnat este un șir de 8 caractere. Dar adesea doriți să îl formatați ca patru numere, separate printr-o cratimă. Se poate face similar ca în linia următoare. Cratima de la sfârșitul primei linii este caracterul de continuare a liniei în PowerShell. Practic, îi spune lui PowerShell că linia nu se întrerupe și că include linia următoare. Sfârșiturile de linie nu sunt necesare la scrierea codului, dar pentru a reduce lățimea și a face codul mai lizibil, ar trebui să faceți acest lucru.

$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)

Acum, că aveți un obiect $volInfo, puteți scrie informațiile din antetul DIR pe ecran. Dacă unitatea nu are nume, textul scris pe ecran va fi ușor diferit față de cazul în care unitatea are un nume. O simplă instrucțiune If-Else este utilizată pentru a verifica dacă proprietatea VolumeName este un șir gol. Instrucțiunea Write-Host este utilizată pentru a scrie fiecare linie de text pe ecran.

If ($volInfo.VolumeName -eq "") { Write-Host (" Volume in drive " + $drive + " has no label") } Else { Write-Host (" Volume in drive " + $drive + " is " + $volInfo.VolumeName) } Write-Host (" Volume Serial Number is " + $serial) Write-Host ("`n Directory of " + $args[0] + "`n")

Caracterul „`n” de la începutul și sfârșitul comenzii Write-Host este utilizat pentru a insera o linie nouă înainte și după text. Comanda Write-Host adaugă o linie nouă la sfârșitul fiecărei linii. Deci efectul lui „`n” este de a crea o linie goală înainte și după text.

Ați observat „-eq” în comanda If? Este un operator de comparație pentru egalități. Tabelul de mai jos vă prezintă toți operatorii de comparație:

-eq, -ieq Comparați după
-ne, -ine Comparația nu este egală
-gt, -igt Comparați mai mare decât
-ge, -ige Comparați mai mare sau egal cu
-lt, -ilt Comparați mai mic decât
-le, -ile Comparați mai mic sau egal cu

Caracterul -i dinaintea operatorilor de comparație indică faptul că operatorul nu ține cont de majuscule/minuscule.

PowerShell și tot ce trebuie să știi despre acest utilitar
Figura 3: Datele de ieșire ale scriptului pe care îl aveți în prezent

DIR.PS1: Listă de fișiere/foldere

Acum sunteți gata să afișați conținutul și proprietățile acestui folder. Primul lucru de făcut este să apelați comanda PowerShell Get-ChildItem pentru a obține o colecție de fișiere și a o transmite scriptului ca parametru. Comanda Get-ChildItem va obține o colecție de obiecte de fișiere și foldere, nu doar numele lor, ci va direcționa aceste obiecte direct către comanda Sort-Object pentru a le sorta. În mod implicit, comanda Sort-Object va sorta obiectele pe baza proprietății Name. Deci nu este nevoie să specificați alți parametri. Colecția sortată de obiecte va fi apoi stocată într-o variabilă numită $items.

$items = Get-ChildItem $args[0] | Sort-Object

După ce aveți o colecție de obiecte de fișiere și foldere, trebuie să le parcurgeți și să afișați proprietățile corespunzătoare. Comanda pentru aceasta este ForEach. Pentru fiecare fișier sau folder, proprietățile afișate vor fi data și ora ultimei modificări, numele, lungimea sau dimensiunea fișierului. Șirurile de caractere cu aspect ciudat din paranteze sunt coduri de format .NET. Acestea sunt folosite pentru alinierea stânga/dreapta câmpurilor și pentru formatarea datelor, orelor și numerelor. Înțelegerea acestor coduri de format șir de caractere nu este foarte importantă, deoarece nu sunt esențiale pentru natura acestui script.

Instrucțiunea If este cea în care se determină dacă un obiect este sau nu un director. Dacă primul caracter al atributului Mode este „d”, obiectul este un director. Trebuie să verificați de două ori, deoarece codul pentru directoare este adesea diferit de codul pentru fișiere.

Observați linia $totalDirs++ din interiorul instrucțiunii If. Acesta este un contor responsabil pentru urmărirea numărului de directoare. În mod similar, există o variabilă $totalFiles care este utilizată pentru a urmări dimensiunea totală a tuturor fișierelor. Aceste valori sunt întotdeauna calculate în timpul execuției. Dar sunt afișate doar după finalizarea procesului de listare a fișierelor.

ForEach ($i In $items)
{
$date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime
$file = $i.Name
If ($i.Mode.SubString(0, 1) -eq "d")
{
$totalDirs++
$list = $date + " {0, -15}" -f "
" + " " + $file
}
Else
{
$totalFiles++
$size = "{0, 18:N0}" -f $i.Length
$list = $date + $size + " " + $file
}
$totalSize += $i.Length
Write-Host $list
}

PowerShell și tot ce trebuie să știi despre acest utilitar
Figura 4: Afișează datele de ieșire ale scriptului actualizat.

DIR.PS1: Subsol

Singurul lucru care rămâne de făcut este să scrieți pe ecran numărul total de fișiere, directoare, dimensiunea totală a tuturor fișierelor și spațiul liber de pe această partiție de unitate. Pentru a face acest lucru, va trebui să utilizați variabilele contor ($totalFiles, $totalDirs, $totalSize) create în secțiunea anterioară. Puteți afla cantitatea de spațiu liber din variabila $volInfo creată la începutul scriptului.

Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `
"{0, 15:N0}" -f $totalSize + " bytes")
Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `
"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")

PowerShell și tot ce trebuie să știi despre acest utilitar
Figura 5: Afișează datele complete de ieșire ale scriptului.

Previziunile și îmbunătățirile pot fi

Deși scriptul pe care îl creați produce o ieșire aproape identică cu comanda CMD.EXE DIR, există câteva avertismente de care ar trebui să fiți conștienți și câteva îmbunătățiri care pot fi făcute.

  • Acest script nu efectuează nicio verificare a erorilor.
  • Dacă nu se transmite o cale validă scriptului, acesta va eșua și va afișa un mesaj de eroare PowerShell.
  • Numărul total de directoare dat în script este cu 2 mai mic decât rezultatul comenzii CMD.EXE DIR, deoarece comanda Get-ChildItem nu ia în considerare cele două directoare „.” și „..” ca în CMD.EXE.
  • Scriptul tău sortează doar după numele fișierului, numele folderului și nu oferă nicio altă sortare după atribute.
  • Scriptul tău nu poate afișa conținutul folderului și al tuturor subfolderelor.

Cum te ajută PowerShell să automatizezi orice pe PC-ul tău

Scrieți scripturi PowerShell simple

Puteți utiliza PowerShell pentru a automatiza aproape orice, cum ar fi redenumirea fișierelor în lot pentru consecvență sau lansarea automată a aplicațiilor. Să scriem câteva scripturi Windows PowerShell simple pentru a vedea cum funcționează.

Notă : Dacă întâmpinați o eroare la executarea scriptului referitoare la politica de execuție, este posibil să fie nevoie să permiteți temporar execuția scriptului executând „Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass”.

Redenumirea în lot a fișierelor dintr-un folder

Puteți utiliza PowerShell pentru a copia, muta și șterge fișiere de pe PC. De asemenea, puteți redenumi fișiere de un anumit tip în bloc. De exemplu, iată cum puteți redenumi mai multe fișiere text înlocuind prefixul „oldco” cu „newco” în numele fișierelor lor:

Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}

În scriptul de mai sus, „.txt” este filtrul pentru extensia de fișier. Îl puteți modifica și seta la .jpg, .docx etc. pentru a căuta diferite tipuri de fișiere.

Lansare automată a aplicației

Dacă deschizi același set de aplicații în fiecare zi, poți scrie un script PowerShell pentru a le lansa cu un singur clic:

#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"

Lipiți scriptul într-un fișier Notepad și salvați-l ca LaunchFavoriteApps.ps1. Apoi, faceți dublu clic pe fișier pentru a lansa toate aplicațiile listate în script.

Copiați fișierele importante într-o locație de rezervă

Puteți face periodic copii de rezervă ale fișierelor importante într-o locație de rezervă utilizând următorul script. Asigurați-vă că modificați căile sursă și destinație după cum este necesar:

#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse

Scrieți un script PowerShell pentru a organiza automat fișierele zilnic

Deoarece multe tipuri de fișiere sunt descărcate zilnic, folderul Descărcări se poate aglomera rapid cu tot felul de fișiere împrăștiate. Pentru a remedia acest lucru, putem scrie un script PowerShell care sortează fișierele descărcate în foldere după tipul de fișier la sfârșitul fiecărei zile.

Deschideți un fișier Notepad nou și lipiți următorul script. Asigurați-vă că modificați calea folderului sursă din script pentru a se potrivi cu calea folderului Descărcări:

# Change the source folder path below
$sourcePath = "E:\Downloads"
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
"Documents" = @("*.docx", "*.pdf", "*.txt")
"Images" = @("*.jpg", "*.png", "*.gif")
"Media" = @("*.mp4", "*.mp3", "*.mov")
"Zip" = @("*.zip", "*.rar")
"ISO" = @("*.iso")
"Others" = @("*")
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn't
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output "Moved: $($_.FullName) to $destPath"
} catch {
Write-Warning "Failed to move file: $($_.FullName). Error: $_"
}
}
}
}
Write-Output "Files organized successfully!"

Pentru a salva fișierul, faceți clic pe Fișier > Salvare ca și introduceți OrganizeDownloadsFolder.ps1 ca nume de fișier. Apoi, faceți clic pe Salvare ca tip și selectați Toate fișierele . Faceți dublu clic pe fișierul OrganizeDownloadsFolder.ps1 pentru a rula scriptul.

Planificați și executați sarcini

Desigur, scrierea unui script este o parte a procesului de automatizare. A doua parte este asigurarea că scriptul poate fi executat automat pentru a îndeplini sarcina. Pentru a face acest lucru, putem crea sarcini programate pentru a rula scriptul zilnic sau după cum este necesar.

Deschideți PowerShell, apoi copiați și lipiți următorul script și apăsați Enter . Asigurați-vă că înlocuiți „J:\OrganizeDownloadsFolder.ps1” cu calea completă către scriptul OrganizeDownloadsFolder.ps1 .

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File 'J:\OrganizeDownloadsFolder.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "5:00 PM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "OrganizeDownloadsFolderDaily"

După ce ați terminat, apăsați Enter . Scriptul va crea o sarcină programată în Task Scheduler pentru a rula scriptul de organizare a fișierelor în fiecare zi la ora 17:00. Dacă preferați o altă oră, o puteți modifica în scriptul de mai sus.

În plus, puteți utiliza PowerShell pentru a automatiza alte sarcini zilnice, cum ar fi un script de monitorizare a spațiului care vă avertizează atunci când rămâneți fără spațiu liber pe unitatea principală, protejarea prin parolă a loturilor de documente PDF și chiar aplicarea de imagini de fundal live din folderul de imagini.

Deși PowerShell este un utilitar și un limbaj de scripting puternic, este nevoie de puțin timp pentru a-l înțelege și utiliza, mai ales dacă nu sunteți familiarizat cu mediul .NET Framework. Sper că acest articol și scriptul exemplu vor fi utile oricui dorește să înțeleagă PowerShell. Însă scriptul exemplu creat în articol este destul de simplu. Cred că poate fi construit și dezvoltat mai complet pentru a servi aplicații mai complexe.

Tags: #System
Sign up and earn $1000 a day ⋙

Leave a Comment

Ce este VPN? Avantajele și dezavantajele unei rețele private virtuale VPN

Ce este VPN? Avantajele și dezavantajele unei rețele private virtuale VPN

Ce este VPN-ul, care sunt avantajele și dezavantajele VPN-ului? Haideți să discutăm cu WebTech360 despre definiția VPN-ului, cum să aplicăm acest model și sistem în muncă.

Majoritatea oamenilor nu folosesc aceste funcții ascunse în Securitate Windows.

Majoritatea oamenilor nu folosesc aceste funcții ascunse în Securitate Windows.

Securitatea Windows face mai mult decât să protejeze împotriva virușilor de bază. Protejează împotriva phishing-ului, blochează ransomware-ul și împiedică rularea aplicațiilor rău intenționate. Cu toate acestea, aceste caracteristici nu sunt ușor de observat - sunt ascunse în spatele unor straturi de meniuri.

Codarea nu este atât de dificilă pe cât crezi

Codarea nu este atât de dificilă pe cât crezi

Odată ce înveți și încerci pe cont propriu, vei descoperi că criptarea este incredibil de ușor de utilizat și incredibil de practică pentru viața de zi cu zi.

Recuperarea datelor șterse cu Recuva Portable în Windows 7

Recuperarea datelor șterse cu Recuva Portable în Windows 7

În articolul următor, vom prezenta operațiunile de bază pentru recuperarea datelor șterse în Windows 7 cu instrumentul de asistență Recuva Portable. Cu Recuva Portable, le puteți stoca pe orice stick USB convenabil și le puteți utiliza oricând este nevoie. Instrumentul este compact, simplu, ușor de utilizat și are câteva dintre următoarele caracteristici:

Cum să ștergi fișierele duplicate pentru a economisi memorie pe calculator folosind CCleaner

Cum să ștergi fișierele duplicate pentru a economisi memorie pe calculator folosind CCleaner

CCleaner scanează fișierele duplicate în doar câteva minute, apoi vă permite să decideți care dintre ele sunt sigure pentru ștergere.

De ce să schimbi locația implicită de descărcare în Windows 11?

De ce să schimbi locația implicită de descărcare în Windows 11?

Mutarea folderului Descărcări de pe unitatea C pe o altă unitate pe Windows 11 vă va ajuta să reduceți capacitatea unității C și va ajuta computerul să funcționeze mai eficient.

Cum să oprești actualizările Windows pe PC

Cum să oprești actualizările Windows pe PC

Aceasta este o modalitate de a consolida și de a ajusta sistemul, astfel încât actualizările să se producă conform programului propriu, nu al Microsoft.

Cum se afișează extensiile de fișiere, cum se vizualizează extensiile de fișiere pe Windows

Cum se afișează extensiile de fișiere, cum se vizualizează extensiile de fișiere pe Windows

Exploratorul de fișiere Windows oferă o mulțime de opțiuni pentru a schimba modul în care vizualizați fișierele. Ceea ce s-ar putea să nu știți este că o opțiune importantă este dezactivată în mod implicit, chiar dacă este crucială pentru securitatea sistemului dvs.

5 instrumente gratuite pentru a găsi spyware și adware pe PC-ul tău

5 instrumente gratuite pentru a găsi spyware și adware pe PC-ul tău

Cu instrumentele potrivite, puteți scana sistemul și elimina programele spyware, adware și alte programe rău intenționate care s-ar putea afla în sistemul dumneavoastră.

14 aplicații și software Windows de care ai nevoie pe noul tău computer

14 aplicații și software Windows de care ai nevoie pe noul tău computer

Mai jos este o listă de software recomandat la instalarea unui computer nou, astfel încât să puteți alege cele mai necesare și mai bune aplicații de pe computerul dvs.!

Cum să clonezi setările Windows pentru a-ți lua fluxul de lucru oriunde

Cum să clonezi setările Windows pentru a-ți lua fluxul de lucru oriunde

A transporta un întreg sistem de operare pe o unitate flash poate fi foarte util, mai ales dacă nu ai un laptop. Dar nu crede că această funcție este limitată la distribuțiile Linux - este timpul să încerci să clonezi instalarea Windows.

Dezactivați aceste 7 servicii Windows pentru a prelungi durata de viață a bateriei!

Dezactivați aceste 7 servicii Windows pentru a prelungi durata de viață a bateriei!

Dezactivarea câtorva dintre aceste servicii vă poate economisi o cantitate semnificativă de energie a bateriei fără a vă afecta utilizarea zilnică.

La ce folosește comanda rapidă Ctrl + Z în Windows? Probabil mai mult decât crezi

La ce folosește comanda rapidă Ctrl + Z în Windows? Probabil mai mult decât crezi

Ctrl + Z este o combinație de taste extrem de comună în Windows. Ctrl + Z vă permite practic să anulați acțiuni în toate zonele Windows.

Nu dați clic pe niciun link scurtat până nu sunteți sigur că este sigur!

Nu dați clic pe niciun link scurtat până nu sunteți sigur că este sigur!

URL-urile scurtate sunt convenabile pentru curățarea link-urilor lungi, dar ascund și destinația reală. Dacă doriți să evitați programele malware sau phishing-ul, nu este o alegere înțeleaptă să faceți clic orbește pe linkul respectiv.

Windows 11 22H2: Prima actualizare cu multe caracteristici notabile

Windows 11 22H2: Prima actualizare cu multe caracteristici notabile

După o lungă așteptare, prima actualizare majoră a Windows 11 a fost lansată oficial.

Ce este VPN? Avantajele și dezavantajele unei rețele private virtuale VPN

Ce este VPN? Avantajele și dezavantajele unei rețele private virtuale VPN

Ce este VPN-ul, care sunt avantajele și dezavantajele VPN-ului? Haideți să discutăm cu WebTech360 despre definiția VPN-ului, cum să aplicăm acest model și sistem în muncă.

Majoritatea oamenilor nu folosesc aceste funcții ascunse în Securitate Windows.

Majoritatea oamenilor nu folosesc aceste funcții ascunse în Securitate Windows.

Securitatea Windows face mai mult decât să protejeze împotriva virușilor de bază. Protejează împotriva phishing-ului, blochează ransomware-ul și împiedică rularea aplicațiilor rău intenționate. Cu toate acestea, aceste caracteristici nu sunt ușor de observat - sunt ascunse în spatele unor straturi de meniuri.

Codarea nu este atât de dificilă pe cât crezi

Codarea nu este atât de dificilă pe cât crezi

Odată ce înveți și încerci pe cont propriu, vei descoperi că criptarea este incredibil de ușor de utilizat și incredibil de practică pentru viața de zi cu zi.

Recuperarea datelor șterse cu Recuva Portable în Windows 7

Recuperarea datelor șterse cu Recuva Portable în Windows 7

În articolul următor, vom prezenta operațiunile de bază pentru recuperarea datelor șterse în Windows 7 cu instrumentul de asistență Recuva Portable. Cu Recuva Portable, le puteți stoca pe orice stick USB convenabil și le puteți utiliza oricând este nevoie. Instrumentul este compact, simplu, ușor de utilizat și are câteva dintre următoarele caracteristici:

Cum să ștergi fișierele duplicate pentru a economisi memorie pe calculator folosind CCleaner

Cum să ștergi fișierele duplicate pentru a economisi memorie pe calculator folosind CCleaner

CCleaner scanează fișierele duplicate în doar câteva minute, apoi vă permite să decideți care dintre ele sunt sigure pentru ștergere.

De ce să schimbi locația implicită de descărcare în Windows 11?

De ce să schimbi locația implicită de descărcare în Windows 11?

Mutarea folderului Descărcări de pe unitatea C pe o altă unitate pe Windows 11 vă va ajuta să reduceți capacitatea unității C și va ajuta computerul să funcționeze mai eficient.

Cum să oprești actualizările Windows pe PC

Cum să oprești actualizările Windows pe PC

Aceasta este o modalitate de a consolida și de a ajusta sistemul, astfel încât actualizările să se producă conform programului propriu, nu al Microsoft.

Cum se afișează extensiile de fișiere, cum se vizualizează extensiile de fișiere pe Windows

Cum se afișează extensiile de fișiere, cum se vizualizează extensiile de fișiere pe Windows

Exploratorul de fișiere Windows oferă o mulțime de opțiuni pentru a schimba modul în care vizualizați fișierele. Ceea ce s-ar putea să nu știți este că o opțiune importantă este dezactivată în mod implicit, chiar dacă este crucială pentru securitatea sistemului dvs.

5 instrumente gratuite pentru a găsi spyware și adware pe PC-ul tău

5 instrumente gratuite pentru a găsi spyware și adware pe PC-ul tău

Cu instrumentele potrivite, puteți scana sistemul și elimina programele spyware, adware și alte programe rău intenționate care s-ar putea afla în sistemul dumneavoastră.

14 aplicații și software Windows de care ai nevoie pe noul tău computer

14 aplicații și software Windows de care ai nevoie pe noul tău computer

Mai jos este o listă de software recomandat la instalarea unui computer nou, astfel încât să puteți alege cele mai necesare și mai bune aplicații de pe computerul dvs.!

Cum să clonezi setările Windows pentru a-ți lua fluxul de lucru oriunde

Cum să clonezi setările Windows pentru a-ți lua fluxul de lucru oriunde

A transporta un întreg sistem de operare pe o unitate flash poate fi foarte util, mai ales dacă nu ai un laptop. Dar nu crede că această funcție este limitată la distribuțiile Linux - este timpul să încerci să clonezi instalarea Windows.

Dezactivați aceste 7 servicii Windows pentru a prelungi durata de viață a bateriei!

Dezactivați aceste 7 servicii Windows pentru a prelungi durata de viață a bateriei!

Dezactivarea câtorva dintre aceste servicii vă poate economisi o cantitate semnificativă de energie a bateriei fără a vă afecta utilizarea zilnică.

La ce folosește comanda rapidă Ctrl + Z în Windows? Probabil mai mult decât crezi

La ce folosește comanda rapidă Ctrl + Z în Windows? Probabil mai mult decât crezi

Ctrl + Z este o combinație de taste extrem de comună în Windows. Ctrl + Z vă permite practic să anulați acțiuni în toate zonele Windows.

Nu dați clic pe niciun link scurtat până nu sunteți sigur că este sigur!

Nu dați clic pe niciun link scurtat până nu sunteți sigur că este sigur!

URL-urile scurtate sunt convenabile pentru curățarea link-urilor lungi, dar ascund și destinația reală. Dacă doriți să evitați programele malware sau phishing-ul, nu este o alegere înțeleaptă să faceți clic orbește pe linkul respectiv.

Windows 11 22H2: Prima actualizare cu multe caracteristici notabile

Windows 11 22H2: Prima actualizare cu multe caracteristici notabile

După o lungă așteptare, prima actualizare majoră a Windows 11 a fost lansată oficial.