PowerShell i sve što trebate znati o ovom uslužnom programu

Što ako bi vaše računalo moglo obavljati svakodnevne zadatke umjesto vas? S Windows PowerShellom to može. Evo kako koristiti PowerShell za automatizaciju repetitivnih, svakodnevnih zadataka koje nitko ne želi raditi iznova i iznova.

Sadržaj

Što je PowerShell?

Microsoft PowerShell je uslužni program naredbenog retka i skriptni jezik koji administratorima omogućuje automatizaciju širokog raspona zadataka za računala i mreže. PowerShell sadrži komponente naredbenog retka i izgrađen je na .NET frameworku. Ako čitate o WebTech360, trebali biste znati da je PowerShell alat izbora IT administratora za upravljanje velikim mrežama.

Učenje korištenja PowerShella pojednostavit će mnoge zamorne svakodnevne zadatke. Također možete napraviti promjene na razini cijelog sustava putem mreže bez potrebe za pojedinačnim konfiguriranjem svakog poslužitelja. PowerShell postaje bitan dio pokretanja hibridnih okruženja u oblaku .

PowerShell ima mnogo različitih namjena koje vam pomažu u učinkovitijem radu i održavanju učinkovitosti vaše mreže. Najosnovnije upotrebe uključuju: zakazivanje dnevnih ažuriranja sustava, generiranje izvješća o trenutnim procesima, periodične usluge i još mnogo toga. Iako se mnogi od ovih zadataka mogu obaviti putem grafičkog korisničkog sučelja, svrha PowerShella je da ih obavi brže.

Ako imate rutinski zadatak održavanja čije postavljanje traje nekoliko minuta, možete skriptirati istu funkcionalnost u jednu naredbu pod nazivom PowerShell. Zatim će se sljedeći put kada otvorite tu skriptu, ona pokrenuti u pozadini. Savladavanje logike skriptiranja PowerShella, razumijevanje načina rada objekata, varijabli i njezino inteligentno postavljanje na vašu mrežu natjerat će vas da se zapitate zašto niste ranije koristili PowerShell.

Ovaj vodič će obuhvatiti osnove PowerShella, što će biti korisno za one koji su novi u IT-u, posebno ako ste upoznati s Windows naredbenim retkom. Obuhvatit će kako koristiti osnovne alate i naredbe, kako raditi s datotekama i mapama, razumjeti objekte, koristiti varijable i upravljati udaljenim poslužiteljima.

Kratka povijest uslužnih programa naredbenog retka u sustavu Windows

Nakon izlaska sustava Windows NT, CMD.EXE je postao uslužni program naredbenog retka za Windows. Iako je CMD.EXE naslijedio neke elemente od svog DOS prethodnika (COMMAN.COM), i dalje se temeljio na prilično "primitivnom" skriptnom jeziku: korištenju Windows Command datoteka (.CMD i .BAT). Dodavanje Windows Scripting Hosta te jezika VBScript i JScript uvelike je poboljšalo mogućnosti skriptiranja uslužnog programa.

Ove tehnologije su prilično uravnotežena mješavina naprednih uslužnih programa naredbenog retka i okruženja za skriptiranje. Prava briga nije koliko se CMD.EXE, .CMD i Windows Scripting Host datoteka može manipulirati njima. Glavna zamjerka i briga je obavljanje nekih naizgled jednostavnih zadataka.

Koristeći "okvir" alata za naredbeni redak i skriptiranje, svaka umjereno sveobuhvatna skripta zahtijeva kombinaciju batch naredbi, Windows Scripting Hosta i samostalnih izvršnih datoteka. Svaka skripta koristi različite konvencije za izvršavanje i zahtjeve, parsiranje i vraćanje podataka.

Loša podrška za varijable u CMD.EXE-u, nedosljedna sučelja i ograničen pristup postavkama sustava Windows, u kombinaciji s još jednom slabošću, otežavaju implementaciju i korištenje skriptiranja naredbenog retka. Možda se pitate što je ta 'druga slabost'? To je tekst. U tim tehnologijama sve je tekst. Izlaz naredbe ili skripte je tekst i mora se analizirati i preoblikovati kako bi djelovao kao ulaz za sljedeću naredbu. Ovo je osnovna početna točka koju PowerShell preuzima od svih tradicionalnih ljuski.

Uvod u PowerShell alate, naredbe i module

Tri koncepta predstavljena u ovom odjeljku samo su osnove za razumijevanje ključnih koncepata koji čine temelj PowerShella. Morat ćete posvetiti više vremena učenju i savladavanju naprednijih koncepata kako budete pristupali PowerShell naredbama.

PowerShell alati

PowerShell se prema zadanim postavkama instalira u sustavima Windows 10, Windows 7, Windows Server 2008 R2 i novijim verzijama sustava Windows. Novije verzije PowerShella dodaju nove značajke i "cmdlete" (Microsoftov izraz za PowerShell naredbe - izgovara se "command-lets") i instaliraju se s odgovarajućom verzijom Windows Management Frameworka (WMF).

Trenutno je WMF 5.1 najnovija preporučena verzija. U nekim slučajevima, neke nove značajke ovise o operativnom sustavu, uz verziju WMF-a. Na primjer, Windows 8 i Windows Server 2012 podržavaju cmdlet Test-NetConnection koji vam omogućuje testiranje povezivosti s određenim TCP/IP priključkom , ali ovaj cmdlet nije dostupan u sustavu Windows 7 čak ni kada se pokreće najnovija verzija WMF-a .

Na većini Windows sustava, korisnici će imati dva PowerShell okruženja dostupna, PowerShell konzolu i PowerShell ISE (Integrirano okruženje za skriptiranje). PowerShell konzola izgleda kao tradicionalna naredbena linija, ali s punom funkcionalnošću PowerShella. Nazivi varijabli, petlje, automatsko dovršavanje naredbi i cjevovodi dostupni su iz PowerShell konzole.

Za napredniju upotrebu (kao što je skriptiranje), PowerShell ISE nudi automatsko dovršavanje naredbi, isticanje koda i Microsoftovo Intellisense dovršavanje koda kako bi vam pomogao u stvaranju i testiranju PowerShell koda. PowerShell ISE vam također omogućuje istovremeni rad s više PowerShell skripti pomoću navigacije s karticama.

cmdleti u PowerShellu

Temelj PowerShell naredbi je cmdlet. Microsoft je primijenio nekoliko dizajnerskih strategija prilikom stvaranja cmdleta u PowerShellu.

Prvo je mogućnost jednostavnog zaključivanja naziva cmdleta ili barem njihova lakšeg otkrivanja. PowerShell naredbe ili cmdleti također su dizajnirani za lakše korištenje, sa standardiziranom sintaksom, što olakšava izradu skripti iz sučelja naredbenog retka.

cmdleti koriste format glagola i imenice, kao u Get-Service, Stop-Service ili Import-Csv. Glagolski dio naziva cmdleta označava radnju koja se izvodi na imenici. Obično će cmdleti koji se koriste za dohvaćanje informacija imati glagol Get u svom nazivu, kao što su Get-Process ili Get-Content . Naredbe koje se koriste za izmjenu nečega obično počinju glagolom Set , a naredbe koje se koriste za dodavanje novog entiteta nečemu obično počinju s Add ili New .

Drugo, parametri koji se obično koriste u PowerShellu također dobivaju standardizirana imena. Na primjer, parametar -ComputerName omogućuje izvršavanje cmdleta na jednom ili više udaljenih računala. -Credential se koristi za pružanje objekta za autentifikaciju, koji sadrži korisničke vjerodajnice, za pokretanje naredbe kao određeni korisnik.

Moduli u PowerShellu

Možete koristiti aliase i za cmdlete i za parametre kako biste uštedjeli pritiske tipki i skratili ukupnu duljinu naredbe (korisno prilikom lančanog povezivanja više naredbi). Iako ovi aliasi ne koriste uvijek standardne konvencije imenovanja, oni i dalje odražavaju tradicionalne uslužne programe naredbenog retka.

U PowerShellu, aliasi poput DIR, CD, DEL i CLS odgovaraju cmdletima Get-ChildItem, Set-Location, Remove-Item i Clear-Host. Aliasi parametara mogu funkcionirati na dva načina: mogu koristiti unaprijed definirani alias koji pruža cmdlet ili im se može dodijeliti alias unosom dovoljnog broja znakova za stvaranje jedinstvenog podudaranja između podržanih parametara cmdleta.

Upravljanje datotekama i mapama

Većina administratora sustava mora manipulirati datotekama i mapama tijekom svog rada, bilo da se radi o premještanju mape na drugu lokaciju na poslužitelju, arhiviranju datoteka zapisnika ili pretraživanju velikih datoteka. U slučajevima kada se iste operacije ponavljaju na mnogim datotekama, korištenje PowerShella za njihovu automatizaciju bit će učinkovito rješenje za uštedu vremena.

Za pronalaženje datoteka i mapa, jedan od prvih alata naredbenog retka koji bi administrator naučio u stara vremena računarstva bila je naredba dir. Dir će popisati datoteke i mape sadržane u navedenom direktoriju.

PowerShell ima sličnu naredbu u obliku Get-ChildItem cmdleta . Get-ChildItem vam omogućuje brzu izradu popisa datoteka u direktoriju na način da možete manipulirati datotekama putem naredbe pipe ili dodijeliti izlaz varijabli.

Get-ChildItem se može koristiti jednostavnim navođenjem puta, bilo putem cjevovoda, pomoću parametra -Path ili izravno nakon naziva cmdleta. Za izmjenu odgovora koji vraća Get-ChildItem, potrebno je uzeti u obzir neke parametre koje cmdlet stavlja na raspolaganje.

Parametar -Filter je jedan od načina pretraživanja datoteka. Prema zadanim postavkama, Get-ChildItem vraća samo izravne potomke ciljnog direktorija. Ova funkcionalnost može se proširiti korištenjem parametra -Recurse , koji rekurzivno pretražuje direktorije sadržane u trenutnom direktoriju.

U PowerShellu 4.0 Get-ChildItem dodana je mogućnost ograničavanja rezultata na datoteke ili direktorije pomoću prekidača –File ili –Directory . Prethodne verzije PowerShella morale su proslijediti rezultate Where-Objectu, filtrirajući prema svojstvu PSIsContainer kako bi se to utvrdilo. Primjer obje tehnike korištene za vraćanje direktorija sadržanih u C:Users prikazan je ovdje:

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

Za otkrivanje skrivenih ili sistemskih datoteka mora se koristiti  -Force . Get-ChildItem u PowerShellu 4.0 i novijim verzijama također se može koristiti za vraćanje samo skrivenih, datoteka samo za čitanje ili sistemskih datoteka pomoću -Hidden, -ReadOnly i –System . Slična funkcionalnost mogla se postići u prethodnim verzijama filtriranjem svojstva Mode pomoću Where-Object:

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

Provjerite postoji li datoteka

Obično pri radu s datotekama, sve što trebamo znati je postoji li datoteka ili je li put do direktorija valjan. PowerShell nudi cmdlet za to u obliku Test-Path, koji vraća vrijednost true ili false.

Test-Path se koristi kao mjera opreza prije pokušaja kopiranja ili brisanja određene datoteke.

Kopiranje, premještanje i brisanje datoteka

Copy-Item: Kopira jednu ili više datoteka ili direktorija s lokacije određene parametrom -Path na lokaciju određenu opcijom -Destination.

Premještanje stavke: Premještanje datoteke ili mape.

Kada se struktura direktorija kopira ili premješta, treba koristiti -Recurse kako bi cmdlet izvršio radnju na direktoriju i njegovom sadržaju. U nekim slučajevima potreban je i -Force , na primjer kada se datoteka samo za čitanje prebriše operacijom kopiranja.

Ukloni stavku: Izbriši datoteku, mapu.

Prekidač -Force treba koristiti kada se naiđe na datoteku samo za čitanje, a -Recurse prilikom brisanja direktorija i njegovog sadržaja.

Korištenje PowerShell-a -WhatIf i -Confirm

Prije ozbiljnog, masovnog brisanja, upotrijebite -WhatIf . -WhatIf vam omogućuje da vidite što bi se dogodilo ako pokrenete skriptu ili naredbu i hoće li to imati potencijalni negativan utjecaj brisanjem važnih poslovnih podataka. Također vrijedi napomenuti da -WhatIf nije ograničen samo na operacije s datotekama, već se široko koristi u PowerShellu.

Za skripte koje namjeravate pokretati ručno ili, još gore, imate ovisne naredbe koje se pokreću ručno, razmislite o korištenju opcije -Confirm . To vam omogućuje da zahtijevate interakciju korisnika prije nego što se operacija zapravo izvrši.

PowerShell skripte = paketne datoteke na steroidima

Sam PowerShell je napisan u .NET programskom jeziku i uvelike se temelji na .NET Frameworku. Kao takav, PowerShell je dizajniran kao objektno orijentirana ljuska i skriptni jezik. Sve u PowerShellu se tretira kao objekt s punim mogućnostima .NET Frameworka. Naredba otkriva kolekciju objekata koji se mogu koristiti pomoću svojstava i metoda te vrste objekta. Kada želite proslijediti izlaz jedne naredbe drugoj, PowerShell zapravo prosljeđuje objekt, a ne samo tekstualni izlaz prve naredbe. To sljedećoj naredbi daje puni pristup svim svojstvima i metodama objekta u cjevovodu.

Tretiranje svega kao objekta i mogućnost prihvaćanja objekata između naredbi velika je promjena u teoriji uslužnih programa naredbenog retka. Uz to, PowerShell i dalje radi kao tradicionalna ljuska. Naredbe, skripte i izvršne datoteke mogu se upisivati ​​i pokretati iz naredbenog retka, a rezultati se prikazuju kao tekst. Windows .CMD i .BAT datoteke, VBScripts, JScripts i izvršne datoteke koje se pokreću unutar CMD.EXE i dalje se pokreću u PowerShellu. Međutim, budući da nisu objektno orijentirane, nemaju puni pristup objektima stvorenim i korištenim u PowerShellu. Ove naslijeđene skripte i izvršne datoteke i dalje će sve tretirati kao tekst, ali PowerShell možete kombinirati s nizom drugih tehnologija. To je posebno važno ako želite početi koristiti PowerShell s kolekcijom postojećih skripti koje ne možete pretvoriti sve odjednom.

Objašnjenje PowerShell parametara

Cmdleti mogu prihvatiti parametre za promjenu svog ponašanja. Prilikom pokretanja Cmdleta ili funkcije, možete navesti vrijednosti parametara kako biste odredili što, kada, gdje i kako se svaka PowerShell naredba izvršava.

Na primjer, Get-Process će dohvatiti i navesti sve pokrenute procese u vašem operativnom sustavu:

PowerShell i sve što trebate znati o ovom uslužnom programu
Get-Process navodi sve pokrenute procese.

Ali što ako želite dobiti samo određeni proces? To možete učiniti pomoću parametara. Na primjer, da biste dobili sve Slack procese, možete koristiti parametar Name s Get-Process cmdletom:

Get-Process -Name Slack

Tada ćete vidjeti samo procese pod nazivom "slack":

PowerShell i sve što trebate znati o ovom uslužnom programu
Korištenje Get-Processa s parametrima

Savjet : Neki parametri su "pozicijski", što znači da su im imena opcionalna. U ovom slučaju, Get-Process -Name Slack i Get-Process Slack oba izvršavaju isti zadatak.

Svaki Cmdlet prihvaća različite vrste parametara. Pomoću naredbe Get-Help možete vidjeti prihvaćene parametre Cmdleta u odjeljku SYNTAX.

Get-Help Get-Process

Vidjet ćete popis svih mogućih načina na koje možete pokrenuti zadani Cmdlet:

PowerShell i sve što trebate znati o ovom uslužnom programu
Parametri sintakse cmdleta

U ovom slučaju, Get-Process Cmdlet prihvaća parametre poput Name, Id, ComputerName, Module, FileVersionInfo i drugih uobičajenih parametara. Simboli ovdje znače:

Simbol

Ime

Značenje

 

Bubanj

Parametar ne prihvaća unos

-

Crtica

Navedite naziv parametra

<>

vitičaste zagrade

Rezervirano mjesto za tekst

[]

Zagrade

Parametar može prihvatiti jednu ili više vrijednosti.

{}

vitičaste zagrade

Parametar prihvaća skup vrijednosti.

Parametri prihvaćaju skup vrijednosti koje će označavati vrstu podataka koje zahtijevaju, kao što su niz znakova, cijeli broj, logički broj ili datum i vrijeme. Na primjer, sljedeća naredba:

Get-Process [[-Name] ]

... znači da parametar Name prihvaća jednu ili više string vrijednosti, dok ova naredba:

Get-Process -Id 

... znači da parametar Id prihvaća jednu ili više cjelobrojnih vrijednosti.

U prethodnom primjeru Get-Process korišten je parametar Name za sužavanje rezultata. Međutim, ako želite suziti pretragu na specifičniji proces, možete upotrijebiti parametar ID , koji zahtijeva cijeli broj kako je navedeno u njegovoj sintaksi.

Get-Process -Id 3016

Tada ćete na popisu vidjeti samo jedan proces:

PowerShell i sve što trebate znati o ovom uslužnom programu
Korištenje parametra Id na cmdletima

Izradi cjevovod

PowerShell obrađuje sve podatke kao objekte. Za izradu skripte, ovi se objekti pokreću kroz niz cmdleta ili funkcija povezanih simbolom okomite crte (|). Odabir pravih cmdleta i njihovo povezivanje u logički slijed pomoću cjevovoda važno je za učinkovitu skriptu.

Pretpostavimo da stvarate skriptu za sortiranje i prikaz 5 datoteka koje zauzimaju najviše prostora u direktoriju. Postoje moćniji načini za pisanje skripte za sortiranje datoteka, ali ovaj jednostavni je lako razumjeti:

PowerShell i sve što trebate znati o ovom uslužnom programu
Sortiranje skripte - velike datoteke PS1

Da biste to učinili u PowerShellu, upotrijebite cjevovod koji izgleda ovako:

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

Spremi cjevovod kao PS1 skriptu

Sada kada imamo funkcionalni cjevovod, možete ga spremiti kao PS1 skriptnu datoteku kako ga ne biste morali uvoziti svaki put kada ga koristite.

Najjednostavniji način za stvaranje PS1 datoteke je zalijepiti skriptu u Notepad i spremiti datoteku s ekstenzijom .ps1.

PowerShell i sve što trebate znati o ovom uslužnom programu
Izradite skriptu pomoću Notepada

Nakon što ste kreirali PS1 datoteku, možete je koristiti u PowerShellu pokretanjem ./ScriptName.ps1 :

PowerShell i sve što trebate znati o ovom uslužnom programu
Korištenje PS1 skripte

Savjet : Ako dobijete grešku s dozvolama, najbrže rješenje je pokrenuti PowerShell s administratorskim pravima prilikom pokretanja skripte.

Čestitamo! Sada možete stvarati PowerShell PS1 skripte.

Primjer PowerShell skripte

Čitati o novoj tehnologiji i razumjeti njezine sjajne karakteristike je jedno, ali njezino stvarno korištenje je nešto sasvim drugo! U ostatku ovog članka razvit ćemo PowerShell skriptu kako bismo demonstrirali njezine mogućnosti i kako je koristiti.

DIR je jedna od najčešćih naredbi u CMD.EXE . Ova naredba prikazuje sve datoteke i poddirektorije sadržane unutar nadređenog direktorija (kao što je prikazano na slici 1). Uz naziv svakog objekta, navedene informacije uključuju datum i vrijeme posljednjeg ažuriranja te veličinu svake datoteke. DIR također prikazuje ukupnu veličinu svih datoteka u direktoriju, kao i ukupan broj datoteka i poddirektorija.

PowerShell i sve što trebate znati o ovom uslužnom programu
Slika 1

Pokretanje DIR-a u PowerShellu također stvara popis direktorija kao na slici 2, ali na malo drugačiji način. PowerShell nema naredbu DIR, već umjesto toga ima Get-ChildItem, koja obavlja istu funkciju. U PowerShellu, DIR je pseudonim za Get-ChildItem. Ne namjeravam ulaziti u pseudonime u ovom članku. DIR u PowerShellu možete smatrati kraticom za Get-ChildItem.

DIR u PowerShellu pruža većinu istih informacija kao što je gore spomenuto: popis datoteka i mapa, datum i vrijeme njihove zadnje izmjene te veličinu svake datoteke. Međutim, nedostaju mu sažetne informacije koje DIR u CMD.EXE pruža: ukupna veličina svih datoteka u mapi, ukupan broj datoteka i ukupan broj podmapa.

PowerShell i sve što trebate znati o ovom uslužnom programu
Slika 2

Za primjer scenarija, trebat ćete stvoriti PowerShell skriptu koja simulira naredbu CMD.EXE DIR. U nastavku ću objasniti najvažnije dijelove skripte.

DIR.PS1: Zaglavlje

PowerShell skripta se sastoji od PowerShell naredbi u običnoj tekstualnoj datoteci s ekstenzijom .PS1. Umjesto DIR, koristili biste tekstualnu datoteku pod nazivom DIR.PS1.

Za pokretanje skripte upišite sljedeću naredbu na ekranu PowerShella:

.DIR.PS1 X:Folder

Gdje je X slovo particije pogona (kao što je C, D, E), a Folder je naziv mape.

Ako želite znati neke informacije o particiji diska, morat ćete koristiti Windows Management Instrumentation (WMI). Pojedinosti o WMI-ju prelaze okvir ovog članka, pa ih ovdje nećemo objašnjavati. No, PowerShell kod u nastavku dovoljno je jednostavan za razumjeti i bez korištenja WMI-ja. Možete stvoriti varijablu "$filter" za korištenje s naredbom Get-WmiObject. Ovaj filter govori naredbi Get-WmiObject da želite samo informacije o određenom disku. Rezultati naredbe Get-WmiObject pohranjeni su u varijabli pod nazivom $volInfo. Zapamtite, u PowerShellu je sve objekt; $volInfo je sada objekt koji vraća Get-WmiObject.

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

Sada imate pristup svim objektima i metodama povezanim s objektom. Serijski broj volumena dostupan je putem svojstva VolumeSerialNumber. Vraćeni broj je niz od 8 znakova. Ali često ga želite formatirati kao četiri broja, odvojena crticom. To se može učiniti slično kao u sljedećem retku. Crtica na kraju prvog retka je znak za nastavak retka u PowerShellu. U osnovi govori PowerShellu da se redak ne prekida i da uključuje sljedeći redak. Prijelomi redaka nisu potrebni pri pisanju koda, ali da biste smanjili širinu i učinili kod čitljivijim, trebali biste to učiniti.

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

Sada kada imate objekt $volInfo, možete na zaslon zapisati podatke zaglavlja DIR. Ako pogon nema naziv, tekst ispisan na zaslon bit će malo drugačiji nego ako pogon ima naziv. Jednostavna naredba If-Else koristi se za provjeru je li svojstvo VolumeName prazan niz. Naredba Write-Host koristi se za pisanje svakog retka teksta na zaslon.

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")

Znak " `n " na početku i kraju naredbe Write-Host koristi se za umetanje novog retka prije i poslije teksta. Naredba Write-Host dodaje novi redak na kraj svakog retka. Dakle, učinak " `n " je stvaranje praznog retka prije i poslije teksta.

Jeste li primijetili "-eq" u naredbi If? To je operator usporedbe jednakosti. Tablica u nastavku prikazuje sve operatore usporedbe:

-eq, -ieq Usporedi po
-ne, -ine Usporedba nije jednaka
-gt, -igt Usporedi veće od
-ge, -ige Usporedi veće ili jednako s
-lt, -ilt Usporedi manje od
-le, -ile Usporedi manje od ili jednako s

Znak -i prije operatora usporedbe označava da operator ne razlikuje velika i mala slova.

PowerShell i sve što trebate znati o ovom uslužnom programu
Slika 3: Izlazni podaci skripte koju trenutno imate

DIR.PS1: Popis datoteka/mapa

Sada ste spremni prikazati sadržaj i svojstva ove mape. Prvo što trebate učiniti je pozvati PowerShell naredbu Get-ChildItem kako biste dobili kolekciju datoteka i proslijedili je skripti kao parametar. Naredba Get-ChildItem će dobiti kolekciju objekata datoteka i mapa, ne samo njihova imena, već će te objekte izravno proslijediti u naredbu Sort-Object kako bi ih sortirala. Prema zadanim postavkama, naredba Sort-Object će sortirati objekte na temelju svojstva Name. Stoga ne morate navoditi nikakve druge parametre. Sortirana kolekcija objekata zatim će se pohraniti u varijablu pod nazivom $items.

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

Nakon što imate kolekciju objekata datoteka i mapa, morate ih proći kroz petlju i prikazati odgovarajuća svojstva. Naredba za to je ForEach. Za svaku datoteku ili mapu, prikazana svojstva bit će datum i vrijeme zadnje izmjene, naziv, duljina ili veličina datoteke. Čudno izgledajući nizovi znakova unutar zagrada su .NET kodovi formata nizova znakova. Koriste se za poravnavanje polja lijevo/desno i formatiranje datuma, vremena i brojeva. Razumijevanje ovih kodova formata nizova znakova nije jako važno jer nisu bitni za prirodu ovog skripta.

Naredbom If određujete je li objekt direktorij ili ne. Ako je prvi znak atributa Mode "d", objekt je direktorij. Morate provjeriti dvaput jer se kod za direktorije često razlikuje od koda za datoteke.

Obratite pozornost na redak $totalDirs++ unutar If naredbe. To je brojač odgovoran za praćenje broja direktorija. Slično tome, postoji varijabla $totalFiles koja se koristi za praćenje ukupne veličine svih datoteka. Ove se vrijednosti uvijek izračunavaju tijekom izvršavanja. Ali prikazuju se tek kada je proces popisivanja datoteka završen.

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 sve što trebate znati o ovom uslužnom programu
Slika 4: Prikazuje izlazne podatke ažurirane skripte.

DIR.PS1: Podnožje

Jedino što preostaje jest ispisati na ekran ukupan broj datoteka, direktorija, ukupnu veličinu svih datoteka i slobodni prostor na ovoj particiji diska. Za to ćete morati koristiti varijable brojača ($totalFiles, $totalDirs, $totalSize) stvorene u prethodnom odjeljku. Količinu slobodnog prostora možete saznati iz varijable $volInfo stvorene na početku skripte.

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 sve što trebate znati o ovom uslužnom programu
Slika 5: Prikazuje potpune izlazne podatke skripte.

Prognoze i poboljšanja mogu biti

Iako skripta koju kreirate proizvodi gotovo identičan izlaz kao i naredba CMD.EXE DIR, postoje neka upozorenja kojih biste trebali biti svjesni i neka poboljšanja koja se mogu napraviti.

  • Ovaj skript ne provodi nikakvu provjeru grešaka.
  • Ako se skripti ne proslijedi valjana putanja, skripta će se prestati izvršavati uz poruku o pogrešci PowerShella.
  • Ukupan broj direktorija zadanih u skripti je za 2 manji od rezultata naredbe CMD.EXE DIR jer naredba Get-ChildItem ne broji dva direktorija "." i ".." kao u CMD.EXE.
  • Vaša skripta sortira samo po nazivu datoteke, nazivu mape i ne nudi nikakvo drugo sortiranje po atributima.
  • Vaša skripta ne može prikazati sadržaj mape i svih podmapa.

Kako vam PowerShell pomaže automatizirati sve na vašem računalu

Pišite jednostavne PowerShell skripte

PowerShell možete koristiti za automatizaciju gotovo svega, poput grupnog preimenovanja datoteka radi dosljednosti ili automatskog pokretanja aplikacija. Napišimo nekoliko jednostavnih Windows PowerShell skripti da vidimo kako to funkcionira.

Napomena : Ako prilikom izvršavanja skripte naiđete na grešku u vezi s pravilima izvršavanja, možda ćete morati privremeno dopustiti izvršavanje skripte pokretanjem naredbe "Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass".

Grupno preimenovanje datoteka u mapi

PowerShell možete koristiti za kopiranje, premještanje i brisanje datoteka na računalu. Također možete skupno preimenovati datoteke određene vrste datoteka. Na primjer, evo kako možete preimenovati više tekstualnih datoteka zamjenom prefiksa "oldco" s "newco" u njihovim nazivima datoteka:

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

U gornjem skriptu, ".txt" je filter ekstenzije datoteke. Možete ga izmijeniti i postaviti na .jpg, .docx itd. za pretraživanje različitih vrsta datoteka.

Automatsko pokretanje aplikacije

Ako svaki dan otvarate isti skup aplikacija, možete napisati PowerShell skriptu za njihovo pokretanje jednim klikom:

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

Zalijepite skriptu u datoteku Notepada i spremite je kao LaunchFavoriteApps.ps1. Zatim samo dvaput kliknite datoteku da biste pokrenuli sve aplikacije navedene u skripti.

Kopirajte važne datoteke na sigurnosnu lokaciju

Povremeno možete sigurnosno kopirati važne datoteke na lokaciju sigurnosne kopije pomoću sljedećeg skripta. Obavezno promijenite izvorni i odredišni put prema potrebi:

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

Napišite PowerShell skriptu za automatsko svakodnevno organiziranje datoteka

Budući da se svakodnevno preuzimaju mnoge vrste datoteka, mapa Preuzimanja može se brzo zatrpati svakakvim datotekama razasutim okolo. Da bismo to riješili, možemo napisati PowerShell skriptu koja na kraju svakog dana sortira preuzete datoteke u mape prema vrsti datoteke.

Otvorite novu datoteku Notepada i zalijepite sljedeći skript. Obavezno promijenite putanju izvorne mape u skripti tako da odgovara putanji mape Preuzimanja:

# 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!"

Za spremanje datoteke kliknite Datoteka > Spremi kao i unesite OrganizeDownloadsFolder.ps1 kao naziv datoteke. Zatim kliknite Spremi kao vrstu i odaberite Sve datoteke . Dvaput kliknite datoteku OrganizeDownloadsFolder.ps1 za pokretanje skripte.

Raspored i izvršavanje zadataka

Naravno, pisanje skripte je jedan dio procesa automatizacije. Drugi dio je osigurati da se skripta može automatski izvršiti za obavljanje zadatka. Da bismo to učinili, možemo stvoriti zakazane zadatke za svakodnevno ili po potrebi pokretanje skripte.

Otvorite PowerShell, zatim kopirajte i zalijepite sljedeći skript i pritisnite Enter . Obavezno zamijenite 'J:\OrganizeDownloadsFolder.ps1' s punom putanjom datoteke do vašeg skripta 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"

Nakon što završite, pritisnite Enter . Skripta će stvoriti zakazani zadatak u Planeru zadataka za pokretanje skripte za organizaciju datoteka svaki dan u 17:00 sati. Ako želite drugo vrijeme, možete ga izmijeniti u gornjoj skripti.

Osim toga, PowerShell možete koristiti za automatizaciju drugih svakodnevnih zadataka, kao što je skripta za nadzor prostora koja vas upozorava kada vam ponestane slobodnog prostora na primarnom disku, zaštita lozinkom serija PDF dokumenata, pa čak i primjena živih pozadina iz mape slika.

Iako je PowerShell moćan uslužni program i skriptni jezik, potrebno je malo vremena da ga se shvati i koristi, posebno ako niste upoznati s .NET Framework okruženjem. Nadam se da će ovaj članak i primjer skripte biti korisni svima koji žele razumjeti PowerShell. No, primjer skripte stvoren u članku je prilično jednostavan. Vjerujem da se može potpunije izgraditi i razviti kako bi služio složenijim aplikacijama.

Tags: #System

Leave a Comment

Kako resetirati aplikacije na Windows računalima

Kako resetirati aplikacije na Windows računalima

Ako vaša aplikacija Postavke ili Microsoft Store ne radi ispravno, ruši se ili se ne otvara, možete resetirati aplikaciju.

Što je PING? Kako testirati PING?

Što je PING? Kako testirati PING?

U donjem članku pozivamo vas da naučite nekoliko jednostavnih primjera naredbe PING u sustavu Windows!

Kako pokrenuti zakazane zadatke s odgodom u sustavu Windows

Kako pokrenuti zakazane zadatke s odgodom u sustavu Windows

Ova je značajka izuzetno korisna za odgađanje nepotrebnih zadataka, osiguravanje mrežne povezivosti prije pokretanja zadatka, pokretanje zadataka određenim redoslijedom, zakazivanje ažuriranja ili održavanje hardvera.

Što je VPN? Prednosti i nedostaci VPN virtualne privatne mreže

Što je VPN? Prednosti i nedostaci VPN virtualne privatne mreže

Što je VPN, koje su prednosti i nedostaci VPN-a? Razgovarajmo s WebTech360 o definiciji VPN-a, kako primijeniti ovaj model i sustav u radu.

Kako invertirati boje ekrana pomoću povećala u sustavu Windows 11

Kako invertirati boje ekrana pomoću povećala u sustavu Windows 11

Korištenje funkcije inverzije povećala u sustavu Windows 11 može poboljšati čitljivost teksta, posebno za osobe osjetljive na svjetlost.

Ispravljena naredba Kopiraj i Zalijepi koja ne radi u Wordu i Excelu (2007, 2010)

Ispravljena naredba Kopiraj i Zalijepi koja ne radi u Wordu i Excelu (2007, 2010)

Postoji mnogo razloga zašto naredba Kopiraj i zalijepi ne radi na Windows računalu, na primjer ako je računalo napadnuto virusom, međuspremnik ne radi i stoga naredba kopiraj (Ctrl + C) i naredba zalijepi (Ctrl + V) ne rade. Dakle, kako ispraviti ovu pogrešku, pogledajte članak u nastavku na WebTech360.

Vratite Windows preglednik fotografija na Windows 10 za brži pregled fotografija, Fotografije su previše spore!

Vratite Windows preglednik fotografija na Windows 10 za brži pregled fotografija, Fotografije su previše spore!

Ako vam se ne sviđaju Fotografije u sustavu Windows 10 i želite pregledavati fotografije pomoću Preglednika fotografija u sustavu Windows 10, slijedite ovaj vodič kako biste prenijeli Preglednik fotografija u sustav Windows 10 i brže pregledavali fotografije.

Kako klonirati tvrdi disk sustava Windows bez softvera treće strane

Kako klonirati tvrdi disk sustava Windows bez softvera treće strane

Proces kloniranja uključuje premještanje podataka s jednog uređaja za pohranu na drugi (u ovom slučaju, tvrdi disk) s točnom kopijom kopiranom s odredišnog diska.

Kako onemogućiti brzo pokretanje u sustavu Windows

Kako onemogućiti brzo pokretanje u sustavu Windows

Brzo pokretanje sustava Windows 11 pomaže vašem računalu da se brže pokrene, ali također može biti razlog zašto se vaše Windows računalo ne isključuje u potpunosti.

Kako dodati Završi zadatak na programsku traku sustava Windows 11

Kako dodati Završi zadatak na programsku traku sustava Windows 11

Windows 11 ima značajku koja dodaje gumb Završi zadatak izravno na programsku traku, tako da ne morate pristupati Upravitelju zadataka da biste zatvorili aplikacije koje ne reagiraju.

Kako napraviti sigurnosnu kopiju podataka bez korištenja vanjskog tvrdog diska

Kako napraviti sigurnosnu kopiju podataka bez korištenja vanjskog tvrdog diska

Ponekad jednostavno ne možete pronaći vanjski tvrdi disk kada vam je najpotrebniji. Nakon što su nekoliko puta izgubili važne datoteke, neki su ljudi pronašli jednostavan i pouzdan način za sigurnosno kopiranje svega, čak i kada tvrdi disk nije dostupan.

Čemu služi prečac Ctrl + Z na Windowsima? Vjerojatno više nego što mislite.

Čemu služi prečac Ctrl + Z na Windowsima? Vjerojatno više nego što mislite.

Ctrl + Z je izuzetno uobičajena kombinacija tipki u sustavu Windows. Ctrl + Z u osnovi omogućuje poništavanje radnji u svim područjima sustava Windows.

Evo kako izbrisati particiju za oporavak i particiju za oporavak od 450 MB u sustavu Windows 10

Evo kako izbrisati particiju za oporavak i particiju za oporavak od 450 MB u sustavu Windows 10

Particija za oporavak je zasebna particija na tvrdom disku ili SSD-u vašeg računala i koristi se za vraćanje ili ponovnu instalaciju operativnog sustava u slučaju kvara sustava.

10 savjeta za uklanjanje programa koji se ne mogu deinstalirati

10 savjeta za uklanjanje programa koji se ne mogu deinstalirati

Gomila neželjenog softvera može usporiti vaše računalo i učiniti ga pretrpanim. Ali čišćenje nije uvijek jednostavno. Stoga pogledajte ovih 10 načina za čistu deinstalaciju aplikacija, uklanjanje starog softvera u serijama, deinstalaciju stavki koje se ne mogu deinstalirati, pa čak i uklanjanje unaprijed instaliranih Windows programa.

Upute za aktiviranje virtualnih strojeva u sustavu Windows 11

Upute za aktiviranje virtualnih strojeva u sustavu Windows 11

Virtualni stroj u sustavu Windows 11 podržat će korisnike da na računalu pokreću operativni sustav koji nije Windows.

Ugrađeni sigurnosni alati sustava Windows 11 ne mogu vas zaštititi od ovih prijetnji

Ugrađeni sigurnosni alati sustava Windows 11 ne mogu vas zaštititi od ovih prijetnji

Windows danas puno bolje štiti vašu sigurnost nego što je to nekad bio, ali Sigurnost sustava Windows i povezani alati još uvijek nisu savršeni. Morate paziti na prijetnje za koje računalna sigurnost nema rješenje.

Zastarjeli upravljački programi usporavaju vaše Windows računalo: Što učiniti?

Zastarjeli upravljački programi usporavaju vaše Windows računalo: Što učiniti?

Windows računala ponekad mogu djelovati sporo, ali Upravitelj zadataka ne pokazuje ništa sumnjivo. U ovoj fazi većina ljudi provjerava ima li zlonamjernog softvera ili problema s pohranom, ali zastarjeli upravljački programi također mogu uzrokovati probleme s performansama.

Jednostavne promjene koje će pomoći bržem pokretanju vašeg Windows računala

Jednostavne promjene koje će pomoći bržem pokretanju vašeg Windows računala

Isključivanje aplikacija koje vam nisu potrebne najučinkovitiji je način da se vaše Windows računalo brže pokrene.

Upute za promjenu pozadine u sustavu Windows 11

Upute za promjenu pozadine u sustavu Windows 11

Promjena pozadine u sustavu Windows 11 jedan je od najboljih načina za prilagođavanje radne površine.

Kako popraviti automatsko ponovno pokretanje Windows računala pritiskom na gumb za isključivanje

Kako popraviti automatsko ponovno pokretanje Windows računala pritiskom na gumb za isključivanje

U ovom članku, Quantrimang će vas voditi kroz neke načine za ispravljanje pogreške automatskog ponovnog pokretanja Windows računala pritiskom na gumb za isključivanje.

Kako resetirati aplikacije na Windows računalima

Kako resetirati aplikacije na Windows računalima

Ako vaša aplikacija Postavke ili Microsoft Store ne radi ispravno, ruši se ili se ne otvara, možete resetirati aplikaciju.

Što je PING? Kako testirati PING?

Što je PING? Kako testirati PING?

U donjem članku pozivamo vas da naučite nekoliko jednostavnih primjera naredbe PING u sustavu Windows!

Kako pokrenuti zakazane zadatke s odgodom u sustavu Windows

Kako pokrenuti zakazane zadatke s odgodom u sustavu Windows

Ova je značajka izuzetno korisna za odgađanje nepotrebnih zadataka, osiguravanje mrežne povezivosti prije pokretanja zadatka, pokretanje zadataka određenim redoslijedom, zakazivanje ažuriranja ili održavanje hardvera.

Što je VPN? Prednosti i nedostaci VPN virtualne privatne mreže

Što je VPN? Prednosti i nedostaci VPN virtualne privatne mreže

Što je VPN, koje su prednosti i nedostaci VPN-a? Razgovarajmo s WebTech360 o definiciji VPN-a, kako primijeniti ovaj model i sustav u radu.

Kako invertirati boje ekrana pomoću povećala u sustavu Windows 11

Kako invertirati boje ekrana pomoću povećala u sustavu Windows 11

Korištenje funkcije inverzije povećala u sustavu Windows 11 može poboljšati čitljivost teksta, posebno za osobe osjetljive na svjetlost.

Ispravljena naredba Kopiraj i Zalijepi koja ne radi u Wordu i Excelu (2007, 2010)

Ispravljena naredba Kopiraj i Zalijepi koja ne radi u Wordu i Excelu (2007, 2010)

Postoji mnogo razloga zašto naredba Kopiraj i zalijepi ne radi na Windows računalu, na primjer ako je računalo napadnuto virusom, međuspremnik ne radi i stoga naredba kopiraj (Ctrl + C) i naredba zalijepi (Ctrl + V) ne rade. Dakle, kako ispraviti ovu pogrešku, pogledajte članak u nastavku na WebTech360.

Vratite Windows preglednik fotografija na Windows 10 za brži pregled fotografija, Fotografije su previše spore!

Vratite Windows preglednik fotografija na Windows 10 za brži pregled fotografija, Fotografije su previše spore!

Ako vam se ne sviđaju Fotografije u sustavu Windows 10 i želite pregledavati fotografije pomoću Preglednika fotografija u sustavu Windows 10, slijedite ovaj vodič kako biste prenijeli Preglednik fotografija u sustav Windows 10 i brže pregledavali fotografije.

Kako klonirati tvrdi disk sustava Windows bez softvera treće strane

Kako klonirati tvrdi disk sustava Windows bez softvera treće strane

Proces kloniranja uključuje premještanje podataka s jednog uređaja za pohranu na drugi (u ovom slučaju, tvrdi disk) s točnom kopijom kopiranom s odredišnog diska.

Kako onemogućiti brzo pokretanje u sustavu Windows

Kako onemogućiti brzo pokretanje u sustavu Windows

Brzo pokretanje sustava Windows 11 pomaže vašem računalu da se brže pokrene, ali također može biti razlog zašto se vaše Windows računalo ne isključuje u potpunosti.

Kako dodati Završi zadatak na programsku traku sustava Windows 11

Kako dodati Završi zadatak na programsku traku sustava Windows 11

Windows 11 ima značajku koja dodaje gumb Završi zadatak izravno na programsku traku, tako da ne morate pristupati Upravitelju zadataka da biste zatvorili aplikacije koje ne reagiraju.