PowerShell in vse, kar morate vedeti o tem pripomočku

Kaj če bi vaš računalnik lahko namesto vas opravil vsakdanja opravila? Z lupo Windows PowerShell to zmore. Tukaj je opisano, kako s PowerShellom avtomatizirati ponavljajoča se, vsakodnevna opravila, ki jih nihče noče opravljati znova in znova.

Kazalo vsebine

Kaj je PowerShell?

Microsoft PowerShell je pripomoček ukazne vrstice in skriptni jezik, ki je zmogljivo orodje za skrbnike, s katerim lahko avtomatizirajo širok nabor opravil za računalnike in omrežja. PowerShell vsebuje komponente ukazne vrstice in je zgrajen na ogrodju .NET. Če berete o WebTech360, morate vedeti, da je PowerShell orodje, ki ga izbirajo skrbniki IT za upravljanje velikih omrežij.

Učenje uporabe PowerShella bo poenostavilo številna dolgočasna vsakodnevna opravila. Spremembe na ravni celotnega sistema lahko izvajate tudi prek omrežja, ne da bi morali vsak strežnik posebej konfigurirati. PowerShell postaja bistveni del delovanja hibridnih oblačnih okolij .

PowerShell ima veliko različnih načinov uporabe, ki vam pomagajo pri učinkovitejšem delu in ohranjanju učinkovitega delovanja omrežja. Najosnovnejše uporabe vključujejo: načrtovanje dnevnih posodobitev sistemov, ustvarjanje poročil o trenutnih procesih, periodične storitve in drugo. Čeprav je veliko teh nalog mogoče opraviti prek grafičnega uporabniškega vmesnika, je namen PowerShella, da jih opravi hitreje.

Če imate rutinsko vzdrževalno nalogo, katere nastavitev traja nekaj minut, lahko isto funkcionalnost skriptirate v en sam ukaz z imenom PowerShell. Ko boste naslednjič odprli ta skript, se bo ta izvajal v ozadju. Če boste obvladali logiko skriptiranja PowerShella, razumeli delovanje objektov, spremenljivk (var) in jih inteligentno namestili v omrežju, se boste spraševali, zakaj niste PowerShella uporabili že prej.

Ta vadnica bo zajemala osnove PowerShella, kar bo koristno za tiste, ki so novi v IT-ju, še posebej, če poznate ukazni poziv sistema Windows. Ogledali si bomo, kako uporabljati osnovna orodja in ukaze, kako delati z datotekami in mapami, kako razumeti objekte, kako uporabljati spremenljivke in kako upravljati oddaljene strežnike.

Kratka zgodovina pripomočkov ukazne vrstice sistema Windows

Po izdaji sistema Windows NT je CMD.EXE postal pripomoček ukazne vrstice za Windows. Čeprav je CMD.EXE podedoval nekatere elemente od svojega predhodnika v sistemu DOS (COMMAN.COM), je še vedno temeljil na precej "primitivnem" skriptnem jeziku: uporabi ukaznih datotek sistema Windows (.CMD in .BAT). Dodatek programa Windows Scripting Host ter jezikov VBScript in JScript je močno izboljšal skriptne zmogljivosti pripomočka.

Te tehnologije so dokaj uravnotežena mešanica naprednih orodij ukazne vrstice in skriptnih okolij. Prava skrb ni, koliko datotek CMD.EXE, .CMD in datotek Windows Scripting Host je mogoče z njimi manipulirati. Glavna pritožba in skrb je opravljanje nekaterih na videz preprostih nalog.

Z uporabo »ogrodja« orodij ukazne vrstice in skriptov vsaka zmerno obsežna skripta zahteva kombinacijo paketnih ukazov, gostitelja skriptov sistema Windows in samostojnih izvedljivih datotek. Vsaka skripta uporablja različne konvencije za izvajanje in zahteve, razčlenjevanje in vračanje podatkov.

Slaba podpora spremenljivkam v CMD.EXE, nedosledni vmesniki in omejen dostop do nastavitev sistema Windows, skupaj z drugo slabostjo, otežujejo implementacijo in uporabo skriptov ukazne vrstice. Kaj je ta »druga slabost«, se morda sprašujete? To je besedilo. V teh tehnologijah je vse besedilo. Izhod ukaza ali skripte je besedilo in ga je treba razčleniti in preoblikovati, da deluje kot vhod za naslednji ukaz. To je osnovno izhodišče, ki ga PowerShell črpa iz vseh tradicionalnih lupin.

Predstavljamo orodja, ukaze in module PowerShell

Trije koncepti, predstavljeni v tem razdelku, so le osnove za razumevanje ključnih konceptov, ki tvorijo temelje PowerShella. Ko se boste lotili ukazov PowerShella, boste morali porabiti več časa za učenje in obvladovanje naprednejših konceptov.

Orodja PowerShell

PowerShell je privzeto nameščen v sistemih Windows 10, Windows 7, Windows Server 2008 R2 in novejših različicah sistema Windows. Novejše različice PowerShella dodajajo nove funkcije in »cmdlete« (Microsoftov izraz za ukaze PowerShell – izgovarja se »command-lets«) in so nameščene z ustrezno različico ogrodja Windows Management Framework (WMF).

Trenutno je WMF 5.1 najnovejša priporočena različica. V nekaterih primerih so nekatere nove funkcije poleg različice WMF odvisne tudi od operacijskega sistema. Na primer, Windows 8 in Windows Server 2012 podpirata ukaz »Test-NetConnection«, ki omogoča preizkus povezljivosti z določenimi vrati TCP/IP , vendar ta ukaz »cmdlet« ni na voljo v sistemu Windows 7, niti če uporabljate najnovejšo različico WMF.

V večini sistemov Windows imajo uporabniki na voljo dve okolji PowerShell, konzolo PowerShell in PowerShell ISE (Integrated Scripting Environment). Konzola PowerShell je videti kot tradicionalna ukazna vrstica, vendar s polno funkcionalnostjo PowerShella. Imena spremenljivk, zanke, samodejno dokončanje ukazov in cevovodi so na voljo v konzoli PowerShell.

Za naprednejšo uporabo (kot je skriptanje) PowerShell ISE ponuja samodejno dokončanje ukazov, označevanje kode in Microsoftovo dokončanje kode Intellisense, ki vam pomaga pri ustvarjanju in testiranju kode PowerShell. PowerShell ISE vam omogoča tudi delo z več skripti PowerShell hkrati z uporabo navigacije z zavihki.

ukazi »cmdlet« v PowerShellu

Temelj ukazov PowerShell je ukaz »cmdlet«. Microsoft je pri ustvarjanju ukazov »cmdlet« v PowerShellu uporabil več strategij oblikovanja.

Prva je možnost enostavnega sklepanja imen ukazov »cmdlet« ali vsaj njihove lažje odkritosti. Ukazi ali ukazi »cmdlet« PowerShell so zasnovani tudi za lažjo uporabo s standardizirano sintakso, kar olajša ustvarjanje skriptov iz vmesnika ukazne vrstice.

Ukazi »cmdlet« uporabljajo format glagol-samostalnik, kot so Get-Service, Stop-Service ali Import-Csv. Glagolski del imena ukaza »cmdlet« označuje dejanje, ki se izvede s samostalnikom. Običajno imajo ukazi »cmdlet«, ki se uporabljajo za pridobivanje informacij, v svojem imenu glagol » Get« , na primer Get-Process ali Get-Content . Ukazi, ki se uporabljajo za spreminjanje nečesa, se običajno začnejo z glagolom » Set« , ukazi, ki se uporabljajo za dodajanje nove entitete nečemu, pa se običajno začnejo z » Add« ali » New« .

Drugič, parametri, ki se pogosto uporabljajo v PowerShellu, dobijo tudi standardizirana imena. Na primer, parameter -ComputerName omogoča izvajanje ukaza »cmdlet« na enem ali več oddaljenih računalnikih. Parameter -Credential se uporablja za zagotavljanje predmeta za preverjanje pristnosti, ki vsebuje uporabniške poverilnice, za zagon ukaza kot določen uporabnik.

Moduli v PowerShellu

Vzdevke lahko uporabite tako za ukaze »cmdlet« kot za parametre, da prihranite pritiske tipk in skrajšate celotno dolžino ukaza (uporabno pri povezovanju več ukazov). Čeprav ti vzdevki ne uporabljajo vedno standardnih konvencij poimenovanja, še vedno odražajo tradicionalne pripomočke ukazne vrstice.

V PowerShellu vzdevki, kot so DIR, CD, DEL in CLS, ustrezajo ukazom »cmdlet« Get-ChildItem, Set-Location, Remove-Item in Clear-Host. Vzdevki parametrov lahko delujejo na dva načina: lahko uporabljajo vnaprej določen vzdevek, ki ga zagotavlja ukaz »cmdlet«, ali pa se jim lahko dodeli vzdevek z vnosom dovolj znakov, da se ustvari enolično ujemanje med podprtimi parametri ukaza »cmdlet«.

Upravljanje datotek in map

Večina sistemskih skrbnikov mora med svojim delom upravljati datoteke in mape, pa naj gre za premikanje mape na drugo mesto na strežniku, arhiviranje dnevniških datotek ali iskanje velikih datotek. V primerih, ko se iste operacije ponavljajo na številnih datotekah, bo uporaba PowerShella za njihovo avtomatizacijo učinkovita rešitev za prihranek časa.

Za iskanje datotek in map je bilo eno prvih orodij ukazne vrstice, ki se jih je skrbnik naučil uporabljati v starih časih računalništva, ukaz dir. Dir bo navedel datoteke in mape v določenem imeniku.

PowerShell ima podoben ukaz v obliki ukaza » Get-ChildItem« . Ukaz »Get-ChildItem« vam omogoča hitro izdelavo seznama datotek v imeniku tako, da lahko datoteke upravljate z ukazom »pipe« ali pa izhod dodelite spremenljivki.

Funkcijo Get-ChildItem lahko uporabite preprosto tako, da navedete pot, bodisi prek cevovoda z uporabo parametra -Path bodisi neposredno za imenom ukaza »cmdlet«. Za spreminjanje odgovora, ki ga vrne Get-ChildItem, je treba upoštevati nekatere parametre, ki jih omogoča ukaz »cmdlet«.

Parameter -Filter je eden od načinov iskanja datotek. Get-ChildItem privzeto vrne le neposredne podrejene elemente ciljnega imenika. To funkcionalnost je mogoče razširiti z uporabo parametra -Recurse , ki rekurzivno išče imenike v trenutnem imeniku.

V PowerShellu 4.0 je Get-ChildItem dodal možnost omejevanja rezultatov na datoteke ali imenike z uporabo stikala –File ali –Directory . Prejšnje različice PowerShella so morale rezultate posredovati Where-Object, pri čemer so za to določitev filtrirale po lastnosti PSIsContainer. Primer obeh tehnik, uporabljenih za vračanje imenikov, ki jih vsebuje C:Users, je prikazan tukaj:

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

Za zaznavanje skritih ali sistemskih datotek je treba uporabiti  -Force . Get-ChildItem v PowerShellu 4.0 in novejših različicah se lahko uporabi tudi za vračanje samo skritih, bralnih ali sistemskih datotek z uporabo -Hidden, -ReadOnly in –System . Podobno funkcionalnost je bilo mogoče doseči v prejšnjih različicah s filtriranjem lastnosti Mode z uporabo Where-Object:

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

Preverite, ali datoteka obstaja

Običajno moramo pri delu z datotekami vedeti le, ali datoteka obstaja oziroma ali je pot do imenika veljavna. PowerShell za to ponuja ukaz »cmdlet« v obliki Test-Path, ki vrne vrednost true ali false.

Testna pot se uporablja kot previdnostni ukrep pred poskusom kopiranja ali brisanja določene datoteke.

Kopiranje, premikanje in brisanje datotek

Kopiraj-element: Kopira eno ali več datotek ali imenikov z lokacije, določene s parametrom -Pot, na lokacijo, določeno z možnostjo -Cilj.

Premakni element: Premakni datoteko ali mapo.

Ko se struktura imenika kopira ali premika, je treba uporabiti -Recurse , da ukaz »cmdlet« izvede dejanje na imeniku in njegovi vsebini. V nekaterih primerih je potreben tudi -Force , na primer, ko operacija kopiranja prepiše datoteko, ki je samo za branje.

Odstrani element: Izbriši datoteko, mapo.

Stikalo -Force je treba uporabiti, ko naletite na datoteko samo za branje, stikalo -Recurse pa pri brisanju imenika in njegove vsebine.

Uporaba PowerShell-a -WhatIf in -Confirm

Preden izvedete resno, množično brisanje, uporabite -WhatIf . -WhatIf vam omogoča, da vidite, kaj bi se zgodilo, če bi zagnali skript ali ukaz, in ali bi to imelo kakšen morebiten negativen vpliv z brisanjem pomembnih poslovnih podatkov. Omeniti velja tudi, da -WhatIf ni omejen na operacije z datotekami, temveč se pogosto uporablja v PowerShellu.

Za skripte, ki jih nameravate zagnati ročno ali, še huje, imajo odvisne ukaze, ki se izvajajo ročno, razmislite o uporabi -Confirm . To vam omogoča, da zahtevate interakcijo uporabnika, preden se operacija dejansko izvede.

Skripti PowerShell = Paketne datoteke na steroidih

PowerShell je napisan v jeziku .NET in močno temelji na ogrodju .NET Framework. Kot tak je PowerShell zasnovan kot objektno usmerjena lupina in skriptni jezik. Vse v PowerShellu se obravnava kot objekt s polnimi zmogljivostmi ogrodja .NET Framework. Ukaz razkrije zbirko objektov, ki jih je mogoče uporabiti z lastnostmi in metodami te vrste objekta. Ko želite izhod enega ukaza posredovati drugemu, PowerShell dejansko posreduje objekt, ne le besedilnega izhoda prvega ukaza. To daje naslednjemu ukazu poln dostop do vseh lastnosti in metod objekta v cevovodu.

Obravnavanje vsega kot objekta in možnost sprejemanja objektov med ukazi je velika sprememba v teoriji pripomočkov ukazne vrstice. Kljub temu PowerShell še vedno deluje kot tradicionalna lupina. Ukaze, skripte in izvršljive datoteke je mogoče vnesti in zagnati iz ukazne vrstice, rezultati pa so prikazani kot besedilo. Datoteke Windows .CMD in .BAT, VBScripts, JScripts in izvršljive datoteke, ki se izvajajo znotraj CMD.EXE, se še vedno izvajajo v PowerShellu. Ker pa niso objektno usmerjene, nimajo polnega dostopa do objektov, ustvarjenih in uporabljenih v PowerShellu. Te starejše skripte in izvršljive datoteke bodo še vedno vse obravnavale kot besedilo, vendar lahko PowerShell kombinirate s številnimi drugimi tehnologijami. To je še posebej pomembno, če želite začeti uporabljati PowerShell z zbirko obstoječih skriptov, ki jih ne morete pretvoriti vseh naenkrat.

Razlaga parametrov PowerShella

Ukazi »cmdlet« lahko sprejemajo parametre za spreminjanje svojega vedenja. Pri izvajanju ukaza »cmdlet« ali funkcije lahko navedete vrednosti parametrov, s katerimi določite, kaj, kdaj, kje in kako se izvede posamezen ukaz PowerShell.

Na primer, Get-Process bo pridobil in navedel vse procese, ki se izvajajo v vašem operacijskem sistemu:

PowerShell in vse, kar morate vedeti o tem pripomočku
Get-Process izpiše vse procese, ki se izvajajo.

Kaj pa, če želite pridobiti le določen proces? To lahko storite z uporabo parametrov. Na primer, če želite pridobiti vse procese Slack, lahko uporabite parameter Name z ukazom Get-Process:

Get-Process -Name Slack

Potem boste videli samo procese z imenom »slack«:

PowerShell in vse, kar morate vedeti o tem pripomočku
Uporaba Get-Process s parametri

Nasvet : Nekateri parametri so "pozicijski", kar pomeni, da njihova imena niso obvezna. V tem primeru Get-Process -Name Slack in Get-Process Slack oba opravita isto nalogo.

Vsak ukaz »cmdlet« sprejema različne vrste parametrov. Za ogled sprejetih parametrov ukaza »cmdlet« v razdelku SYNTAX (sintaksa) uporabite ukaz Get-Help.

Get-Help Get-Process

Videli boste seznam vseh možnih načinov, kako lahko zaženete dani ukaz »cmdlet«:

PowerShell in vse, kar morate vedeti o tem pripomočku
Parametri sintakse ukaza »cmdlet«

V tem primeru ukaz »Get-Process« sprejme parametre, kot so »Name«, »Id«, »ComputerName«, »Module«, »FileVersionInfo « in drugi pogosti parametri. Simboli tukaj pomenijo:

Simbol

Ime

Pomen

 

Boben

Parameter ne sprejema vnosa

-

Veznik

Določite ime parametra

<>

zaviti oklepaji

Nadomestno besedilo

[]

Oklepaji

Parameter lahko sprejme eno ali več vrednosti.

{}

zaviti oklepaji

Parameter sprejema niz vrednosti.

Parametri sprejemajo niz vrednosti, ki bodo označevale vrsto podatkov, ki jih zahtevajo, kot so niz, celo število, logična vrednost ali datum in čas. Na primer naslednji ukaz:

Get-Process [[-Name] ]

... pomeni, da parameter Ime sprejme eno ali več nizovnih vrednosti, medtem ko ta ukaz:

Get-Process -Id 

... pomeni, da parameter Id sprejme eno ali več celoštevilskih vrednosti.

V prejšnjem primeru Get-Process je bil za zožitev rezultatov uporabljen parameter Name. Če pa želite rezultate zožiti na bolj specifičen proces, lahko uporabite parameter ID , ki zahteva celo število, kot je navedeno v njegovi sintaksi.

Get-Process -Id 3016

Potem boste na seznamu videli samo en proces:

PowerShell in vse, kar morate vedeti o tem pripomočku
Uporaba parametra Id v ukazih »cmdlet«

Ustvari cevovod

PowerShell obdeluje vse podatke kot objekte. Za izdelavo skripta se ti objekti izvajajo skozi vrsto ukazov »cmdlet« ali funkcij, povezanih z navpično črto (|). Izbira pravih ukazov »cmdlet« in njihovo povezovanje v logičnem zaporedju z uporabo cevovoda je pomembna za učinkovit skript.

Recimo, da ustvarjate skript za razvrščanje in prikaz 5 datotek, ki zavzemajo največ prostora v imeniku. Obstajajo zmogljivejši načini za pisanje skripta za razvrščanje datotek, vendar je ta preprosti enostaven za razumevanje:

PowerShell in vse, kar morate vedeti o tem pripomočku
Sortiranje skriptov - velike datoteke PS1

Če želite to narediti v PowerShellu, uporabite cevovod, ki je videti takole:

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

Shrani cevovod kot skript PS1

Zdaj, ko imamo delujoč cevovod, ga lahko shranite kot datoteko skripta PS1, da vam ga ni treba uvoziti vsakič, ko ga uporabite.

Najenostavnejši način za ustvarjanje datoteke PS1 je, da skript prilepite v beležnico in datoteko shranite s pripono .ps1.

PowerShell in vse, kar morate vedeti o tem pripomočku
Ustvari skript z Notepadom

Ko ustvarite datoteko PS1, jo lahko uporabite v PowerShellu tako, da zaženete ./ScriptName.ps1 :

PowerShell in vse, kar morate vedeti o tem pripomočku
Uporaba skripta PS1

Nasvet : Če se prikaže napaka glede dovoljenj, je najhitrejša rešitev, da med izvajanjem skripta zaženete PowerShell s skrbniškimi pravicami.

Čestitamo! Zdaj lahko ustvarjate skripte PowerShell PS1.

Primer skripta PowerShell

Branje o izjemnih lastnostih nove tehnologije in njeno razumevanje je eno, dejanska uporaba pa nekaj drugega! V preostalem delu članka bomo razvili skript PowerShell, ki bo prikazal njene zmogljivosti in kako jo uporabljati.

DIR je eden najpogostejših ukazov v CMD.EXE . Ta ukaz prikaže vse datoteke in poddirektorije v nadrejenem direktoriju (kot je prikazano na sliki 1). Poleg imena vsakega objekta so prikazani tudi datum in čas zadnje posodobitve ter velikost vsake datoteke. DIR prikaže tudi skupno velikost vseh datotek v direktoriju ter skupno število datotek in poddirektorjev.

PowerShell in vse, kar morate vedeti o tem pripomočku
Slika 1

Z zagonom DIR v PowerShellu se prav tako prikaže seznam imenikov, kot je prikazano na sliki 2, vendar na nekoliko drugačen način. PowerShell nima ukaza DIR, temveč ima Get-ChildItem, ki opravlja isto funkcijo. V PowerShellu je DIR vzdevek za Get-ChildItem. V tem članku se ne nameravam spuščati v vzdevke. DIR v PowerShellu si lahko predstavljate kot okrajšavo za Get-ChildItem.

DIR v PowerShellu ponuja večino enakih informacij kot zgoraj omenjene: seznam datotek in map, datum in čas zadnje spremembe ter velikost vsake datoteke. Vendar pa mu manjkajo povzetek informacij, ki jih ponuja DIR v CMD.EXE: skupna velikost vseh datotek v mapi, skupno število datotek in skupno število podmap.

PowerShell in vse, kar morate vedeti o tem pripomočku
Slika 2

Za primer scenarija boste morali ustvariti skript PowerShell, ki simulira ukaz CMD.EXE DIR. Spodaj bom razložil najpomembnejše dele skripta.

DIR.PS1: Glava

Skript PowerShell je sestavljen iz ukazov PowerShell v navadni besedilni datoteki s končnico .PS1. Namesto DIR bi uporabili besedilno datoteko z imenom DIR.PS1.

Če želite zagnati skript, v zaslon PowerShell vnesite naslednji ukaz:

.DIR.PS1 X:Folder

Kjer je X črka particije pogona (kot C, D, E), Folder pa ime mape.

Če želite izvedeti nekaj informacij o particiji pogona, boste morali uporabiti Windows Management Instrumentation (WMI). Podrobnosti o WMI presegajo obseg tega članka, zato se jih tukaj ne bomo podrobneje lotevali. Vendar je spodnja koda PowerShell dovolj enostavna za razumevanje tudi brez uporabe WMI. Ustvarite lahko spremenljivko »$filter«, ki jo boste uporabili z ukazom Get-WmiObject. Ta filter pove ukazu Get-WmiObject, da želite le informacije o določenem pogonu. Rezultati ukaza Get-WmiObject so shranjeni v spremenljivki z imenom $volInfo. Ne pozabite, da je v PowerShellu vse objekt; $volInfo je zdaj objekt, ki ga vrne Get-WmiObject.

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

Zdaj imate dostop do vseh objektov in metod, povezanih z objektom. Serijska številka nosilca je dostopna prek lastnosti VolumeSerialNumber. Vrnjena številka je niz z 8 znaki. Pogosto pa jo želite oblikovati kot štiri številke, ločene z vezajem. To lahko storite podobno kot v naslednji vrstici. Vez na koncu prve vrstice je znak za nadaljevanje vrstice v PowerShellu. V bistvu pove PowerShellu, da se vrstica ne prelomi in da vključuje naslednjo vrstico. Prelomi vrstic niso potrebni pri pisanju kode, vendar jih morate uporabiti za zmanjšanje širine in izboljšanje branja kode.

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

Zdaj, ko imate objekt $volInfo, lahko na zaslon zapišete podatke glave DIR. Če pogon nima imena, se bo besedilo, zapisano na zaslonu, nekoliko razlikovalo od besedila, zapisano v primeru, če ima pogon ime. Za preverjanje, ali je lastnost VolumeName prazen niz, se uporabi preprost stavek If-Else. Stavek Write-Host se uporablja za zapis vsake vrstice besedila 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 začetku in koncu ukaza Write-Host se uporablja za vstavljanje nove vrstice pred in za besedilom. Ukaz Write-Host doda novo vrstico na konec vsake vrstice. Učinek »`n« je torej ustvarjanje prazne vrstice pred in za besedilom.

Ste opazili »-eq« v ukazu If? To je operator primerjave enakosti. Spodnja tabela prikazuje vse operatorje primerjave:

-eq, -ieq Primerjaj po
-ne, -ine Primerjava ni enaka
-gt, -igt Primerjaj več kot
-ge, -ige Primerjaj večje ali enako z
-lt, -ilt Primerjaj manjše od
-le, -ile Primerjaj manj kot ali enako z

Znak -i pred operatorji primerjave pomeni, da operator ne razlikuje med velikimi in malimi črkami.

PowerShell in vse, kar morate vedeti o tem pripomočku
Slika 3: Izhodni podatki skripte, ki jo trenutno imate

DIR.PS1: Seznam datotek/map

Zdaj ste pripravljeni na prikaz vsebine in lastnosti te mape. Najprej morate poklicati ukaz PowerShell Get-ChildItem, da pridobite zbirko datotek in jo kot parameter posredujete skriptu. Ukaz Get-ChildItem bo pridobil zbirko objektov datotek in map, ne le njihovih imen, temveč bo te objekte tudi neposredno posredoval ukazu Sort-Object, da jih razvrsti. Ukaz Sort-Object bo privzeto razvrstil objekte na podlagi lastnosti Name. Zato vam ni treba določiti nobenih drugih parametrov. Razvrščena zbirka objektov bo nato shranjena v spremenljivki z imenom $items.

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

Ko imate zbirko objektov datotek in map, jih morate pregledati in prikazati ustrezne lastnosti. Ukaz za to je ForEach. Za vsako datoteko ali mapo bodo prikazane lastnosti datum in čas zadnje spremembe, ime, dolžina ali velikost datoteke. Nenavadni nizi v oklepajih so kode formata nizov .NET. Uporabljajo se za poravnavo polj levo/desno ter oblikovanje datumov, časov in številk. Razumevanje teh kod formata nizov ni zelo pomembno, saj niso bistvene za naravo tega skripta.

Stavek If je tisti, ki določa, ali je objekt imenik ali ne. Če je prvi znak atributa Mode »d«, je objekt imenik. Dvakrat morate preveriti, ker se koda za imenike pogosto razlikuje od kode za datoteke.

Bodite pozorni na vrstico $totalDirs++ znotraj stavka If. To je števec, ki je odgovoren za sledenje številu imenikov. Podobno obstaja spremenljivka $totalFiles, ki se uporablja za sledenje skupne velikosti vseh datotek. Te vrednosti se vedno izračunajo med izvajanjem. Vendar se prikažejo šele, ko je postopek seznama datotek končan.

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 in vse, kar morate vedeti o tem pripomočku
Slika 4: Prikazuje izhodne podatke posodobljenega skripta.

DIR.PS1: Noga

Preostane nam le še, da na zaslon zapišemo skupno število datotek, imenikov, skupno velikost vseh datotek in prosti prostor na tej particiji diska. Za to bomo morali uporabiti spremenljivke števca ($totalFiles, $totalDirs, $totalSize), ki smo jih ustvarili v prejšnjem razdelku. Količino prostega prostora lahko izveste iz spremenljivke $volInfo, ki smo jo ustvarili na zač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 in vse, kar morate vedeti o tem pripomočku
Slika 5: Prikazuje celotne izhodne podatke skripte.

Napovedi in izboljšave so lahko

Čeprav skript, ki ga ustvarite, ustvari skoraj enak izpis kot ukaz CMD.EXE DIR, morate biti pozorni na nekaj opozoril in narediti nekaj izboljšav.

  • Ta skripta ne izvaja nobenega preverjanja napak.
  • Če skriptu ni posredovana veljavna pot, bo skript spodletel in prikazal bo sporočilo o napaki PowerShell.
  • Skupno število imenikov, podanih v skriptu, je za 2 manjše od rezultata ukaza CMD.EXE DIR, ker ukaz Get-ChildItem ne šteje imenikov ».« in »..« kot v CMD.EXE.
  • Vaš skript razvršča samo po imenu datoteke, imenu mape in ne omogoča nobenega drugega razvrščanja po atributih.
  • Vaš skript ne more prikazati vsebine mape in vseh podmap.

Kako vam PowerShell pomaga avtomatizirati karkoli v računalniku

Pišite preproste skripte PowerShell

S PowerShellom lahko avtomatizirate skoraj vse, na primer paketno preimenovanje datotek za doslednost ali samodejno zaganjanje aplikacij. Napišimo nekaj preprostih skriptov Windows PowerShell, da vidimo, kako deluje.

Opomba : Če pri izvajanju skripta naletite na napako glede pravilnika izvajanja, boste morda morali začasno dovoliti izvajanje skripta tako, da zaženete ukaz »Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass«.

Paketno preimenovanje datotek v mapi

S PowerShellom lahko kopirate, premikate in brišete datoteke v računalniku. Datoteke določene vrste datotek lahko tudi preimenujete v večjem obsegu. Na primer, tako lahko preimenujete več besedilnih datotek tako, da v njihovih imenih datotek predpono »oldco« zamenjate z »newco«:

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

V zgornjem skriptu je ».txt« filter za končnico datotek. Lahko ga spremenite in nastavite na .jpg, .docx itd., da iščete različne vrste datotek.

Samodejni zagon aplikacije

Če vsak dan odprete isti nabor aplikacij, lahko napišete skript PowerShell, ki jih zažene z enim samim klikom:

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

Prilepite skript v datoteko Beležnice in jo shranite kot LaunchFavoriteApps.ps1. Nato samo dvokliknite datoteko, da zaženete vse aplikacije, navedene v skriptu.

Kopirajte pomembne datoteke na mesto varnostne kopije

Pomembne datoteke lahko občasno varnostno kopirate na lokacijo za varnostno kopiranje z uporabo naslednjega skripta. Po potrebi spremenite izvorno in ciljno pot:

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

Napišite skript PowerShell za samodejno dnevno organiziranje datotek

Ker se vsak dan prenese veliko vrst datotek, se lahko mapa Prenosi hitro napolni z najrazličnejšimi datotekami, raztresenimi naokoli. Da bi to odpravili, lahko napišemo skript PowerShell, ki na koncu vsakega dne razvrsti prenesene datoteke v mape po vrsti datoteke.

Odprite novo datoteko Beležnice in prilepite naslednji skript. Spremenite pot izvorne mape v skriptu, da se bo ujemala s potjo mape Prenosi:

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

Če želite shraniti datoteko, kliknite Datoteka > Shrani kot in kot ime datoteke vnesite OrganizeDownloadsFolder.ps1 . Nato kliknite Shrani kot vrsto in izberite Vse datoteke . Dvokliknite datoteko OrganizeDownloadsFolder.ps1 , da zaženete skript.

Načrtovanje in izvajanje nalog

Seveda je pisanje skripta del procesa avtomatizacije. Drugi del je zagotoviti, da se skript lahko samodejno izvede za izvedbo naloge. Da bi to dosegli, lahko ustvarimo načrtovana opravila, ki bodo skript izvajala dnevno ali po potrebi.

Odprite PowerShell, nato kopirajte in prilepite naslednji skript ter pritisnite Enter . Ne pozabite zamenjati »J:\OrganizeDownloadsFolder.ps1« s celotno potjo datoteke do 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"

Ko končate, pritisnite Enter . Skript bo v razporejevalniku opravil ustvaril načrtovano opravilo, ki bo vsak dan ob 17.00 zagnalo skript za organizacijo datotek. Če želite drug čas, ga lahko spremenite v zgornjem skriptu.

Poleg tega lahko s PowerShellom avtomatizirate tudi druga vsakodnevna opravila, kot je skript za spremljanje prostora, ki vas opozori, ko vam zmanjka prostega prostora na primarnem disku, zaščita paketov dokumentov PDF z geslom in celo uporaba živih ozadij iz mape s slikami.

Čeprav je PowerShell zmogljiv pripomoček in skriptni jezik, je za njegovo razumevanje in uporabo potrebno nekaj časa, še posebej, če niste seznanjeni z okoljem .NET Framework. Upam, da bosta ta članek in primer skripta koristna vsem, ki želijo razumeti PowerShell. Vendar je primer skripta, ustvarjen v članku, precej preprost. Verjamem, da ga je mogoče bolj celovito zgraditi in razviti za uporabo bolj kompleksnih aplikacij.

Tags: #System

Leave a Comment

Navodila za blokiranje samodejne namestitve gonilnikov v sistemu Windows 11

Navodila za blokiranje samodejne namestitve gonilnikov v sistemu Windows 11

Windows 11 lahko prenese gonilnike za vaš računalnik brez posredovanja uporabnika, vendar gonilnikov ne želite vedno namestiti samodejno, da bi se izognili neželenim težavam.

Kako ponastaviti aplikacije v računalnikih z operacijskim sistemom Windows

Kako ponastaviti aplikacije v računalnikih z operacijskim sistemom Windows

Če vaša aplikacija Nastavitve ali Microsoft Store ne deluje pravilno, se sesuje ali se ne odpre, lahko aplikacijo ponastavite.

Kaj je PING? Kako preizkusiti PING?

Kaj je PING? Kako preizkusiti PING?

V spodnjem članku vas vabimo, da se naučite nekaj preprostih primerov ukaza PING v sistemu Windows!

Kako zagnati načrtovana opravila z zakasnitvijo v sistemu Windows

Kako zagnati načrtovana opravila z zakasnitvijo v sistemu Windows

Ta funkcija je izjemno uporabna za odlašanje nepotrebnih opravil, zagotavljanje omrežne povezljivosti pred začetkom opravila, izvajanje opravil v določenem vrstnem redu, načrtovanje posodobitev ali izvajanje vzdrževanja strojne opreme.

Kaj je VPN? Prednosti in slabosti virtualnega zasebnega omrežja VPN

Kaj je VPN? Prednosti in slabosti virtualnega zasebnega omrežja VPN

Kaj je VPN, kakšne so prednosti in slabosti VPN-ja? Pogovorimo se z WebTech360 o definiciji VPN-ja in o tem, kako ta model in sistem uporabiti pri delu.

Kako obrniti barve zaslona s pomočjo povečevalnika v sistemu Windows 11

Kako obrniti barve zaslona s pomočjo povečevalnika v sistemu Windows 11

Uporaba funkcije inverzije lupe v sistemu Windows 11 lahko izboljša berljivost besedila, zlasti za ljudi, ki so občutljivi na svetlobo.

Popravljeno delovanje ukaza Kopiraj in prilepi v programih Word in Excel (2007, 2010)

Popravljeno delovanje ukaza Kopiraj in prilepi v programih Word in Excel (2007, 2010)

Obstaja veliko razlogov, zakaj ukaz Kopiraj in prilepi ne deluje v računalniku z operacijskim sistemom Windows, na primer, če je računalnik napaden z virusom, odložišče ne deluje in zato ukaza za kopiranje (Ctrl + C) in ukaz za lepljenje (Ctrl + V) ne delujeta. Kako odpraviti to napako, si oglejte spodnji članek na WebTech360.

Za hitrejši ogled fotografij znova namestite pregledovalnik fotografij v sistemu Windows 10, saj je aplikacija Photos prepočasna!

Za hitrejši ogled fotografij znova namestite pregledovalnik fotografij v sistemu Windows 10, saj je aplikacija Photos prepočasna!

Če vam aplikacija Fotografije v sistemu Windows 10 ni všeč in si želite fotografije ogledati s pregledovalnikom fotografij sistema Windows v sistemu Windows 10, sledite temu vodniku, da pregledovalnik fotografij sistema Windows prenesete v sistem Windows 10 in si fotografije ogledate hitreje.

Kako klonirati trdi disk sistema Windows brez programske opreme drugih proizvajalcev

Kako klonirati trdi disk sistema Windows brez programske opreme drugih proizvajalcev

Postopek kloniranja vključuje premikanje podatkov iz ene naprave za shranjevanje v drugo (v tem primeru trdi disk) z natančno kopijo, kopirano s ciljnega pogona.

Kako onemogočiti hitri zagon v sistemu Windows

Kako onemogočiti hitri zagon v sistemu Windows

Hitri zagon sistema Windows 11 pomaga pri hitrejšem zagonu računalnika, lahko pa je tudi razlog, zakaj se računalnik z operacijskim sistemom Windows ne izklopi popolnoma.

Kako dodati »Končaj opravilo« v opravilno vrstico sistema Windows 11

Kako dodati »Končaj opravilo« v opravilno vrstico sistema Windows 11

Windows 11 ima funkcijo, ki doda gumb Končaj opravilo neposredno v opravilno vrstico, tako da vam ni treba dostopati do upravitelja opravil, da bi zaprli neodzivne aplikacije.

Kako varnostno kopirati podatke brez uporabe zunanjega trdega diska

Kako varnostno kopirati podatke brez uporabe zunanjega trdega diska

Včasih preprosto ne najdete zunanjega trdega diska, ko ga najbolj potrebujete. Potem ko so nekateri ljudje nekajkrat izgubili pomembne datoteke, so našli preprost in zanesljiv način za varnostno kopiranje vsega, tudi ko trdi disk ni na voljo.

Čemu služi bližnjica Ctrl + Z v sistemu Windows? Verjetno bolj, kot si mislite.

Čemu služi bližnjica Ctrl + Z v sistemu Windows? Verjetno bolj, kot si mislite.

Ctrl + Z je izjemno pogosta kombinacija tipk v sistemu Windows. Ctrl + Z vam v bistvu omogoča razveljavitev dejanj na vseh področjih sistema Windows.

Takole izbrišete obnovitveno particijo in 450 MB obnovitveno particijo v sistemu Windows 10

Takole izbrišete obnovitveno particijo in 450 MB obnovitveno particijo v sistemu Windows 10

Obnovitvena particija je ločena particija na trdem disku ali SSD-ju vašega računalnika in se uporablja za obnovitev ali ponovno namestitev operacijskega sistema v primeru sistemske napake.

10 nasvetov za odstranitev programov, ki jih ni mogoče odstraniti

10 nasvetov za odstranitev programov, ki jih ni mogoče odstraniti

Kup neželene programske opreme lahko upočasni vaš računalnik in povzroči nered. Vendar čiščenje ni vedno enostavno. Zato si oglejte teh 10 načinov za čisto odstranitev aplikacij, odstranitev stare programske opreme v paketih, odstranitev elementov, ki jih ni mogoče odstraniti, in celo odstranitev vnaprej nameščenih programov za Windows.

Navodila za aktiviranje virtualnih strojev v sistemu Windows 11

Navodila za aktiviranje virtualnih strojev v sistemu Windows 11

Virtualni stroj v sistemu Windows 11 bo uporabnikom omogočil zagon operacijskega sistema, ki ni Windows, neposredno v računalniku.

Vgrajena varnostna orodja sistema Windows 11 vas ne morejo zaščititi pred temi grožnjami

Vgrajena varnostna orodja sistema Windows 11 vas ne morejo zaščititi pred temi grožnjami

Windows danes veliko bolje ščiti vašo varnost kot nekoč, vendar varnost sistema Windows in z njo povezana orodja še vedno niso popolna. Paziti morate na grožnje, za katere računalniška varnost nima rešitve.

Zastareli gonilniki upočasnjujejo vaš računalnik z operacijskim sistemom Windows: kaj storiti?

Zastareli gonilniki upočasnjujejo vaš računalnik z operacijskim sistemom Windows: kaj storiti?

Računalniki z operacijskim sistemom Windows se včasih zdijo počasni, vendar upravitelj opravil ne pokaže ničesar sumljivega. Na tej stopnji večina ljudi preveri, ali obstajajo zlonamerna programska oprema ali težave s shranjevanjem, vendar lahko težave z delovanjem povzročijo tudi zastareli gonilniki.

Preproste spremembe za hitrejši zagon računalnika z operacijskim sistemom Windows

Preproste spremembe za hitrejši zagon računalnika z operacijskim sistemom Windows

Izklop aplikacij, ki jih ne potrebujete, je najučinkovitejši način za hitrejši zagon računalnika z operacijskim sistemom Windows.

Navodila za spreminjanje ozadja v sistemu Windows 11

Navodila za spreminjanje ozadja v sistemu Windows 11

Spreminjanje ozadja v sistemu Windows 11 je eden najboljših načinov za prilagoditev namizja.

Navodila za blokiranje samodejne namestitve gonilnikov v sistemu Windows 11

Navodila za blokiranje samodejne namestitve gonilnikov v sistemu Windows 11

Windows 11 lahko prenese gonilnike za vaš računalnik brez posredovanja uporabnika, vendar gonilnikov ne želite vedno namestiti samodejno, da bi se izognili neželenim težavam.

Kako ponastaviti aplikacije v računalnikih z operacijskim sistemom Windows

Kako ponastaviti aplikacije v računalnikih z operacijskim sistemom Windows

Če vaša aplikacija Nastavitve ali Microsoft Store ne deluje pravilno, se sesuje ali se ne odpre, lahko aplikacijo ponastavite.

Kaj je PING? Kako preizkusiti PING?

Kaj je PING? Kako preizkusiti PING?

V spodnjem članku vas vabimo, da se naučite nekaj preprostih primerov ukaza PING v sistemu Windows!

Kako zagnati načrtovana opravila z zakasnitvijo v sistemu Windows

Kako zagnati načrtovana opravila z zakasnitvijo v sistemu Windows

Ta funkcija je izjemno uporabna za odlašanje nepotrebnih opravil, zagotavljanje omrežne povezljivosti pred začetkom opravila, izvajanje opravil v določenem vrstnem redu, načrtovanje posodobitev ali izvajanje vzdrževanja strojne opreme.

Kaj je VPN? Prednosti in slabosti virtualnega zasebnega omrežja VPN

Kaj je VPN? Prednosti in slabosti virtualnega zasebnega omrežja VPN

Kaj je VPN, kakšne so prednosti in slabosti VPN-ja? Pogovorimo se z WebTech360 o definiciji VPN-ja in o tem, kako ta model in sistem uporabiti pri delu.

Kako obrniti barve zaslona s pomočjo povečevalnika v sistemu Windows 11

Kako obrniti barve zaslona s pomočjo povečevalnika v sistemu Windows 11

Uporaba funkcije inverzije lupe v sistemu Windows 11 lahko izboljša berljivost besedila, zlasti za ljudi, ki so občutljivi na svetlobo.

Popravljeno delovanje ukaza Kopiraj in prilepi v programih Word in Excel (2007, 2010)

Popravljeno delovanje ukaza Kopiraj in prilepi v programih Word in Excel (2007, 2010)

Obstaja veliko razlogov, zakaj ukaz Kopiraj in prilepi ne deluje v računalniku z operacijskim sistemom Windows, na primer, če je računalnik napaden z virusom, odložišče ne deluje in zato ukaza za kopiranje (Ctrl + C) in ukaz za lepljenje (Ctrl + V) ne delujeta. Kako odpraviti to napako, si oglejte spodnji članek na WebTech360.

Za hitrejši ogled fotografij znova namestite pregledovalnik fotografij v sistemu Windows 10, saj je aplikacija Photos prepočasna!

Za hitrejši ogled fotografij znova namestite pregledovalnik fotografij v sistemu Windows 10, saj je aplikacija Photos prepočasna!

Če vam aplikacija Fotografije v sistemu Windows 10 ni všeč in si želite fotografije ogledati s pregledovalnikom fotografij sistema Windows v sistemu Windows 10, sledite temu vodniku, da pregledovalnik fotografij sistema Windows prenesete v sistem Windows 10 in si fotografije ogledate hitreje.

Kako klonirati trdi disk sistema Windows brez programske opreme drugih proizvajalcev

Kako klonirati trdi disk sistema Windows brez programske opreme drugih proizvajalcev

Postopek kloniranja vključuje premikanje podatkov iz ene naprave za shranjevanje v drugo (v tem primeru trdi disk) z natančno kopijo, kopirano s ciljnega pogona.

Kako onemogočiti hitri zagon v sistemu Windows

Kako onemogočiti hitri zagon v sistemu Windows

Hitri zagon sistema Windows 11 pomaga pri hitrejšem zagonu računalnika, lahko pa je tudi razlog, zakaj se računalnik z operacijskim sistemom Windows ne izklopi popolnoma.