PowerShell a všetko, čo potrebujete vedieť o tomto nástroji

Čo keby váš počítač dokázal zvládnuť bežné úlohy za vás? S prostredím Windows PowerShell to dokáže. Tu je návod, ako použiť PowerShell na automatizáciu opakujúcich sa každodenných úloh, ktoré nikto nechce robiť stále dookola.

Obsah

Čo je PowerShell?

Microsoft PowerShell je nástroj príkazového riadka a skriptovací jazyk, ktorý je výkonným nástrojom pre administrátorov na automatizáciu širokej škály úloh pre počítače a siete. PowerShell obsahuje komponenty príkazového riadka a je postavený na rozhraní .NET Framework. Ak čítate o WebTech360, mali by ste vedieť, že PowerShell je nástrojom voľby IT administrátorov na správu rozsiahlych sietí.

Naučiť sa používať PowerShell zjednoduší mnoho zdĺhavých každodenných úloh. Môžete tiež vykonávať zmeny v celom systéme cez sieť bez toho, aby ste museli individuálne konfigurovať každý server. PowerShell sa stáva neoddeliteľnou súčasťou prevádzkovania hybridných cloudových prostredí .

PowerShell má mnoho rôznych využití, ktoré vám pomôžu pracovať efektívnejšie a udržiavať vašu sieť v chode. Medzi najzákladnejšie využitia patrí: plánovanie denných aktualizácií systémov, generovanie správ o aktuálnych procesoch, pravidelné služby a ďalšie. Hoci mnohé z týchto úloh je možné vykonať prostredníctvom grafického rozhrania, cieľom PowerShellu je robiť ich rýchlejšie.

Ak máte bežnú úlohu údržby, ktorej nastavenie trvá niekoľko minút, môžete rovnakú funkciu napísať do jedného príkazu s názvom PowerShell. Pri ďalšom otvorení tohto skriptu sa spustí na pozadí. Zvládnutie logiky skriptovania PowerShellu, pochopenie fungovania objektov, premenných (var) a ich inteligentné nasadenie v sieti vás prinúti zamyslieť sa, prečo ste PowerShell nepoužili skôr.

Tento tutoriál sa bude venovať základom PowerShellu, čo bude užitočné pre nováčikov v oblasti IT, najmä ak sú oboznámení s príkazovým riadkom systému Windows. Dozviete sa, ako používať základné nástroje a príkazy, ako pracovať so súbormi a priečinkami, ako porozumieť objektom, ako používať premenné a ako spravovať vzdialené servery.

Stručná história nástrojov príkazového riadka systému Windows

Po vydaní systému Windows NT sa CMD.EXE stal nástrojom príkazového riadka pre systém Windows. Hoci CMD.EXE zdedil niektoré prvky od svojho predchodcu z systému DOS (COMMAN.COM), stále bol založený na pomerne „primitívnym“ skriptovacom jazyku: používal súbory príkazov systému Windows (.CMD a .BAT). Pridanie Windows Scripting Host a jazykov VBScript a JScript výrazne rozšírilo skriptovacie možnosti tohto nástroja.

Tieto technológie predstavujú pomerne vyváženú kombináciu pokročilých nástrojov príkazového riadka a skriptovacích prostredí. Skutočným problémom nie je, koľko súborov CMD.EXE, .CMD a súborov Windows Scripting Host je možné s nimi manipulovať. Hlavnou sťažnosťou a problémom je vykonávanie niektorých zdanlivo jednoduchých úloh.

Pomocou „rámca“ nástrojov príkazového riadka a skriptovania vyžaduje akýkoľvek mierne komplexný skript kombináciu dávkových príkazov, hostiteľa skriptov systému Windows a samostatných spustiteľných súborov. Každý skript používa iné konvencie pre vykonávanie a požiadavky, parsovanie a vrátenie údajov.

Slabá podpora premenných v CMD.EXE, nekonzistentné rozhrania a obmedzený prístup k nastaveniam systému Windows v kombinácii s ďalšou slabinou sťažujú implementáciu a používanie skriptovania z príkazového riadka. Možno sa pýtate, čo je táto „ďalšia slabina“? Je to text. V týchto technológiách je všetko text. Výstupom príkazu alebo skriptu je text a musí byť analyzovaný a preformátovaný, aby slúžil ako vstup pre ďalší príkaz. Toto je základný východiskový bod, ktorý PowerShell preberá zo všetkých tradičných shellov.

Predstavujeme nástroje, príkazy a moduly PowerShellu

Tri koncepty uvedené v tejto časti sú len základom pre pochopenie kľúčových konceptov, ktoré tvoria základ PowerShellu. Pri práci s príkazmi PowerShellu budete musieť venovať viac času učeniu sa a zvládnutiu pokročilejších konceptov.

Nástroje PowerShellu

PowerShell je štandardne nainštalovaný v systémoch Windows 10, Windows 7, Windows Server 2008 R2 a novších verziách systému Windows. Novšie verzie PowerShellu pridávajú nové funkcie a „cmdlety“ (termín spoločnosti Microsoft pre príkazy PowerShellu – vyslovuje sa „command-lets“) a inštalujú sa spolu s príslušnou verziou rozhrania Windows Management Framework (WMF).

V súčasnosti je najnovšou odporúčanou verziou WMF 5.1. V niektorých prípadoch niektoré nové funkcie závisia okrem verzie WMF aj od operačného systému. Napríklad systémy Windows 8 a Windows Server 2012 podporujú rutinu cmdlet Test-NetConnection, ktorá umožňuje otestovať pripojenie ku konkrétnemu portu TCP/IP , ale táto rutina cmdlet nie je k dispozícii v systéme Windows 7, a to ani pri spustení najnovšej verzie WMF.

Vo väčšine systémov Windows majú používatelia k dispozícii dve prostredia PowerShell, konzolu PowerShell a PowerShell ISE (Integrated Scripting Environment). Konzola PowerShell sa javí ako tradičný príkazový riadok, ale s plnou funkcionalitou PowerShellu. Názvy premenných, slučky, automatické dopĺňanie príkazov a presmerovanie sú k dispozícii z konzoly PowerShell.

Pre pokročilejšie použitie (napríklad skriptovanie) poskytuje PowerShell ISE automatické dopĺňanie príkazov, zvýrazňovanie kódu a dokončovanie kódu Intellisense od spoločnosti Microsoft, ktoré vám pomôžu vytvárať a testovať kód PowerShellu. PowerShell ISE vám tiež umožňuje pracovať s viacerými skriptmi PowerShellu súčasne pomocou navigácie s kartami.

cmdlety v PowerShelle

Základom príkazov PowerShellu je cmdlet. Spoločnosť Microsoft pri vytváraní cmdletov v PowerShelle zvolila niekoľko dizajnových stratégií.

Prvou je možnosť jednoducho odvodiť názvy cmdlet alebo ich aspoň spraviť ľahšie objaviteľnými. Príkazy alebo cmdlety PowerShellu sú tiež navrhnuté tak, aby sa ľahšie používali, so štandardizovanou syntaxou, čo uľahčuje vytváranie skriptov z rozhrania príkazového riadka.

cmdlety používajú formát sloveso-podstatné meno, ako napríklad Get-Service, Stop-Service alebo Import-Csv. Časť slovesa v názve cmdletu označuje akciu vykonanú s podstatným menom. Cmdlety, ktoré sa používajú na načítanie informácií, majú zvyčajne vo svojom názve sloveso Get , napríklad Get-Process alebo Get-Content . Príkazy používané na úpravu niečoho zvyčajne začínajú slovesom Set a príkazy používané na pridanie novej entity k niečomu zvyčajne začínajú slovesom Add alebo New .

Po druhé, parametre bežne používané v PowerShelle majú tiež štandardizované názvy. Napríklad parameter -ComputerName umožňuje spustenie cmdletu na jednom alebo viacerých vzdialených počítačoch. -Credential sa používa na poskytnutie autentifikačného objektu obsahujúceho používateľské poverenia na spustenie príkazu ako konkrétny používateľ.

Moduly v PowerShelle

Aliasy môžete použiť pre cmdlety aj parametre na úsporu času a skrátenie celkovej dĺžky príkazu (užitočné pri reťazení viacerých príkazov). Hoci tieto aliasy nie vždy používajú štandardné konvencie pomenovávania, stále odrážajú tradičné nástroje príkazového riadka.

V prostredí PowerShell zodpovedajú aliasy ako DIR, CD, DEL a CLS cmdletom Get-ChildItem, Set-Location, Remove-Item a Clear-Host. Aliasy parametrov môžu fungovať dvoma spôsobmi: môžu použiť preddefinovaný alias poskytnutý cmdletom alebo ich možno aliasovať zadaním dostatočného počtu znakov na vytvorenie jedinečnej zhody medzi podporovanými parametrami cmdletu.

Správa súborov a priečinkov

Väčšina správcov systému musí počas svojej práce manipulovať so súbormi a priečinkami, či už ide o presúvanie priečinka na iné miesto na serveri, archiváciu súborov denníka alebo vyhľadávanie veľkých súborov. V prípadoch, keď sa rovnaké operácie opakujú na mnohých súboroch, bude použitie PowerShellu na ich automatizáciu efektívnym riešením šetriacim čas.

Na vyhľadanie súborov a priečinkov bol jedným z prvých nástrojov príkazového riadka, ktoré sa administrátor naučil používať v starých časoch výpočtovej techniky, príkaz dir. Príkaz Dir vypíše zoznam súborov a priečinkov nachádzajúcich sa v zadanom adresári.

PowerShell má podobný príkaz vo forme cmdletu Get-ChildItem . Get-ChildItem vám umožňuje rýchlo vytvoriť zoznam súborov v adresári takým spôsobom, že môžete so súbormi manipulovať pomocou príkazu typu pipe alebo priradiť výstup premennej.

Príkaz Get-ChildItem je možné použiť jednoducho zadaním cesty, buď cez kanál, pomocou parametra -Path alebo priamo za názvom cmdletu. Na úpravu odpovede vrátenej príkazom Get-ChildItem je potrebné zvážiť niektoré parametre, ktoré cmdlet sprístupňuje.

Parameter -Filter je jeden zo spôsobov vyhľadávania súborov. Predvolene Get-ChildItem vracia iba priame potomky cieľového adresára. Túto funkcionalitu je možné rozšíriť použitím parametra -Recurse , ktorý rekurzívne prehľadáva adresáre obsiahnuté v aktuálnom adresári.

V PowerShelle 4.0 pridala funkcia Get-ChildItem možnosť obmedziť výsledky na súbory alebo adresáre pomocou prepínača –File alebo –Directory . Predchádzajúce verzie PowerShellu museli odovzdať výsledky Where-Object a filtrovať podľa vlastnosti PSIsContainer, aby toto určili. Príklad oboch techník použitých na vrátenie adresárov obsiahnutých v priečinku C:Users je uvedený tu:

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

Na detekciu skrytých alebo systémových súborov je potrebné použiť  parameter -Force . Parameter Get-ChildItem v PowerShell 4.0 a novších verziách je možné použiť aj na vrátenie iba skrytých, iba na čítanie alebo systémových súborov pomocou parameterov -Hidden, -ReadOnly a –System . Podobnú funkcionalitu bolo možné dosiahnuť v predchádzajúcich verziách filtrovaním vlastnosti Mode pomocou parametra Where-Object:

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

Skontrolujte, či súbor existuje

Pri práci so súbormi zvyčajne potrebujeme vedieť len to, či súbor existuje alebo či je cesta k adresáru platná. PowerShell poskytuje cmdlet vo forme Test-Path, ktorý vracia hodnotu true alebo false.

Testovacia cesta sa používa ako preventívne opatrenie pred pokusom o kopírovanie alebo odstránenie konkrétneho súboru.

Kopírovanie, presúvanie a mazanie súborov

Kopírovať položku: Skopíruje jeden alebo viac súborov alebo adresárov z umiestnenia určeného parametrom -Path do umiestnenia určeného parametrom -Destination.

Presunúť položku: Presunúť súbor alebo priečinok.

Pri kopírovaní alebo presúvaní adresárovej štruktúry by sa mal použiť parameter -Recurse , aby cmdlet vykonal akciu s adresárom a jeho obsahom. V niektorých prípadoch je potrebný aj parameter -Force , napríklad keď je súbor určený len na čítanie prepísaný operáciou kopírovania.

Odstrániť položku: Odstrániť súbor, priečinok.

Prepínač -Force by sa mal použiť pri stretnutí so súborom určeným len na čítanie a prepínač -Recurse by sa mal použiť pri mazaní adresára a jeho obsahu.

Používanie PowerShellu -WhatIf a -Confirm

Pred vykonaním vážneho, hromadného vymazania použite -WhatIf . -WhatIf vám umožňuje zistiť, čo by sa stalo, keby ste spustili skript alebo príkaz a či by to malo nejaký potenciálny negatívny vplyv v podobe vymazania dôležitých obchodných údajov. Za zmienku tiež stojí, že -WhatIf sa neobmedzuje len na operácie so súbormi, ale je široko používaný v PowerShelle.

Pre skripty, ktoré chcete spúšťať manuálne alebo, čo je horšie, máte závislé príkazy, ktoré sa spúšťajú manuálne, zvážte použitie parametra -Confirm . To vám umožní vyžadovať interakciu používateľa pred skutočným vykonaním operácie.

PowerShell skripty = Dávkové súbory na steroidoch

Samotný PowerShell je napísaný v jazyku .NET a je silne založený na .NET Framework. PowerShell je teda navrhnutý ako objektovo orientovaný shell a skriptovací jazyk. Všetko v PowerShelle sa považuje za objekt s plnými možnosťami .NET Frameworku. Príkaz sprístupňuje kolekciu objektov, ktoré je možné použiť pomocou vlastností a metód daného typu objektu. Keď chcete presmerovať výstup jedného príkazu do druhého, PowerShell v skutočnosti presmeruje objekt, nielen textový výstup prvého príkazu. To dáva ďalšiemu príkazu plný prístup ku všetkým vlastnostiam a metódam objektu v kanáli.

Zaobchádzanie so všetkým ako s objektom a možnosť prijímať objekty medzi príkazmi predstavuje veľkú zmenu v teórii nástrojov príkazového riadka. Napriek tomu PowerShell stále funguje ako tradičný shell. Príkazy, skripty a spustiteľné súbory je možné zadávať a spúšťať z príkazového riadka a výsledky sa zobrazujú ako text. Súbory Windows .CMD a .BAT, VBScripts, JScripts a spustiteľné súbory, ktoré sa spúšťajú v CMD.EXE, sa stále spúšťajú v PowerShelle. Keďže však nie sú objektovo orientované, nemajú plný prístup k objektom vytvoreným a používaným v PowerShelle. Tieto staršie skripty a spustiteľné súbory budú stále všetko považovať za text, ale PowerShell môžete kombinovať s množstvom ďalších technológií. Toto je obzvlášť dôležité, ak chcete začať používať PowerShell so súborom existujúcich skriptov, ktoré nie je možné previesť naraz.

Vysvetlenie parametrov PowerShellu

Rutiny typu cmdlet môžu akceptovať parametre na zmenu svojho správania. Pri spúšťaní rutiny typu cmdlet alebo funkcie môžete zadať hodnoty parametrov, ktoré určujú, čo, kedy, kde a ako sa má každý príkaz PowerShell spustiť.

Napríklad Get-Process načíta a zobrazí zoznam všetkých spustených procesov vo vašom operačnom systéme:

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Príkaz Get-Process vypíše všetky spustené procesy.

Čo ak však chcete získať iba konkrétny proces? Môžete to urobiť pomocou parametrov. Napríklad, ak chcete získať všetky procesy v Slacku, môžete použiť parameter Name s rutinou Get-Process:

Get-Process -Name Slack

Potom uvidíte iba procesy s názvom „slack“:

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Používanie Get-Process s parametrami

Tip : Niektoré parametre sú „pozičné“, čo znamená, že ich názvy sú voliteľné. V tomto prípade Get-Process -Name Slack aj Get-Process Slack vykonávajú rovnakú úlohu.

Každý cmdlet akceptuje rôzne typy parametrov. Akceptované parametre cmdletu zobrazíte v sekcii SYNTAX pomocou príkazu Get-Help.

Get-Help Get-Process

Zobrazí sa zoznam všetkých možných spôsobov, ako môžete spustiť daný cmdlet:

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Parametre syntaxe cmdletu

V tomto prípade cmdlet Get-Process akceptuje parametre ako Name, Id, ComputerName, Module, FileVersionInfo a ďalšie bežné parametre. Symboly tu znamenajú:

Symbol

Meno

Význam

 

Bubon

Parameter neakceptuje vstup

-

Spojovník

Zadajte názov parametra

<>

zložené zátvorky

Zástupný symbol pre text

[]

Zátvorky

Parameter môže akceptovať jednu alebo viac hodnôt.

{}

zložené zátvorky

Parameter akceptuje množinu hodnôt.

Parametre akceptujú množinu hodnôt, ktoré budú označovať typ údajov, ktoré požadujú, ako napríklad reťazec, celé číslo, boolovská hodnota alebo dátum a čas. Napríklad nasledujúci príkaz:

Get-Process [[-Name] ]

... znamená, že parameter Name akceptuje jednu alebo viacero reťazcových hodnôt, zatiaľ čo tento príkaz:

Get-Process -Id 

... znamená, že parameter Id akceptuje jednu alebo viac celočíselných hodnôt.

V predchádzajúcom príklade Get-Process sa na zúženie výsledkov použil parameter Name. Ak však chcete výsledky zúžiť na konkrétnejší proces, môžete použiť parameter ID , ktorý vyžaduje celé číslo, ako je uvedené v jeho syntaxi.

Get-Process -Id 3016

Potom v zozname uvidíte iba jeden proces:

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Používanie parametra Id v cmdletoch

Vytvoriť kanál

PowerShell spracováva všetky dáta ako objekty. Na vytvorenie skriptu sa tieto objekty spúšťajú prostredníctvom série cmdletov alebo funkcií prepojených pomocou symbolu zvislej čiary (|). Výber správnych cmdletov a ich prepojenie v logickej postupnosti pomocou kanála je dôležitý pre efektívny skript.

Predpokladajme, že vytvárate skript na triedenie a zobrazenie 5 súborov, ktoré zaberajú najviac miesta v adresári. Existujú aj účinnejšie spôsoby, ako napísať skript na triedenie súborov, ale tento jednoduchý je ľahko pochopiteľný:

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Skriptové triedenie - Veľké súbory PS1

Ak to chcete urobiť v PowerShelle, použite pipeline, ktorý vyzerá takto:

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

Uložiť kanál ako skript PS1

Teraz, keď máme funkčný kanál, môžete ho uložiť ako súbor skriptu PS1, aby ste ho nemuseli importovať pri každom použití.

Najjednoduchší spôsob, ako vytvoriť súbor PS1, je vložiť skript do programu Poznámkový blok a uložiť súbor s príponou .ps1.

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Vytvorenie skriptu pomocou Poznámkového bloku

Po vytvorení súboru PS1 ho môžete použiť v prostredí PowerShell spustením príkazu ./ScriptName.ps1 :

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Používanie skriptu PS1

Tip : Ak sa zobrazí chyba oprávnení, najrýchlejším riešením je spustiť PowerShell s oprávneniami správcu pri spustení skriptu.

Gratulujeme! Teraz môžete vytvárať skripty PowerShell PS1.

Príklad skriptu PowerShell

Čítať o úžasnosti nových technológií a pochopiť ich je jedna vec, ale ich skutočné používanie je vec druhá! Vo zvyšku tohto článku vyvinieme skript PowerShellu, ktorý demonštruje ich možnosti a spôsob ich používania.

DIR je jeden z najbežnejších príkazov v CMD.EXE . Tento príkaz zobrazí všetky súbory a podadresáre obsiahnuté v nadradenom adresári (ako je znázornené na obrázku 1). Spolu s názvom každého objektu poskytujú informácie aj dátum a čas poslednej aktualizácie a veľkosť každého súboru. DIR tiež zobrazuje celkovú veľkosť všetkých súborov v adresári, ako aj celkový počet súborov a podadresárov.

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Obrázok 1

Spustenie príkazu DIR v prostredí PowerShell tiež vygeneruje zoznam adresárov ako na obrázku 2, ale trochu iným spôsobom. PowerShell nemá príkaz DIR, ale namiesto toho má Get-ChildItem, ktorý vykonáva rovnakú funkciu. V prostredí PowerShell je DIR alias pre Get-ChildItem. V tomto článku sa nebudem venovať aliasom. DIR v prostredí PowerShell si môžete predstaviť ako skratku pre Get-ChildItem.

Príkaz DIR v PowerShelle poskytuje veľa rovnakých informácií ako vyššie uvedené: zoznam súborov a priečinkov, dátum a čas ich poslednej úpravy a veľkosť každého súboru. Chýbajú mu však súhrnné informácie, ktoré poskytuje príkaz DIR v CMD.EXE: celková veľkosť všetkých súborov v priečinku, celkový počet súborov a celkový počet podpriečinkov.

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Obrázok 2

Pre príkladový scenár budete musieť vytvoriť skript PowerShell, ktorý simuluje príkaz CMD.EXE DIR. Nižšie vysvetlím najdôležitejšie časti skriptu.

DIR.PS1: Hlavička

Skript PowerShellu pozostáva z príkazov PowerShellu v obyčajnom textovom súbore s príponou .PS1. Namiesto DIR by ste použili textový súbor s názvom DIR.PS1.

Ak chcete spustiť skript, zadajte na obrazovke PowerShell nasledujúci príkaz:

.DIR.PS1 X:Folder

Kde X je písmeno oddielu disku (napríklad C, D, E) a Folder je názov priečinka.

Ak chcete získať informácie o oddiele disku, budete musieť použiť Windows Management Instrumentation (WMI). Podrobnosti o WMI presahujú rámec tohto článku, takže sa nimi tu nebudeme zaoberať. Kód PowerShellu nižšie je však dostatočne ľahko pochopiteľný aj bez použitia WMI. Môžete vytvoriť premennú „$filter“, ktorú budete používať s príkazom Get-WmiObject. Tento filter povie príkazu Get-WmiObject, že chcete získať informácie iba o konkrétnom disku. Výsledky príkazu Get-WmiObject sú uložené v premennej s názvom $volInfo. Pamätajte, že v PowerShelle je všetko objekt; $volInfo je teraz objekt vrátený príkazom Get-WmiObject.

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

Teraz máte prístup ku všetkým objektom a metódam spojeným s objektom. Sériové číslo zväzku je prístupné prostredníctvom vlastnosti VolumeSerialNumber. Vrátené číslo je 8-miestny reťazec. Často ho však chcete formátovať ako štyri čísla oddelené pomlčkou. Dá sa to urobiť podobne ako v nasledujúcom riadku. Pomlčka na konci prvého riadku je znak pokračovania riadku v PowerShelle. V podstate hovorí PowerShellu, že riadok sa nezalomí a že zahŕňa ďalší riadok. Zalomenia riadkov nie sú pri písaní kódu potrebné, ale na zmenšenie šírky a lepšiu čitateľnosť kódu by ste ich mali urobiť.

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

Teraz, keď máte objekt $volInfo, môžete na obrazovku zapísať informácie z hlavičky DIR. Ak disk nemá názov, text zapísaný na obrazovku sa bude mierne líšiť, ako keby disk názov mal. Na kontrolu, či je vlastnosť VolumeName prázdny reťazec, sa používa jednoduchý príkaz If-Else. Príkaz Write-Host sa používa na zapísanie každého riadku textu na obrazovku.

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čiatku a na konci príkazu Write-Host sa používa na vloženie nového riadku pred a za text. Príkaz Write-Host pridá nový riadok na koniec každého riadku. Takže efekt „ `n ” je vytvoriť prázdny riadok pred a za textom.

Všimli ste si „-eq“ v príkaze If? Je to operátor porovnávania rovnosti. Tabuľka nižšie zobrazuje všetky operátory porovnávania:

-eq, -ieq Porovnať podľa
-ne, -ine Porovnanie nie je rovnaké
-gt, -igt Porovnajte väčšie ako
-ge, -ige Porovnaj väčšie alebo rovné
-lt, -ilt Porovnajte menšie ako
-le, -ile Porovnaj menej ako alebo rovné

Znak -i pred porovnávacími operátormi označuje, že operátor nerozlišuje veľké a malé písmená.

PowerShell a všetko, čo potrebujete vedieť o tomto nástroji
Obrázok 3: Výstupné údaje skriptu, ktorý máte momentálne k dispozícii

DIR.PS1: Zoznam súborov/priečinkov

Teraz ste pripravení zobraziť obsah a vlastnosti tohto priečinka. Prvá vec, ktorú musíte urobiť, je zavolať príkaz PowerShell Get-ChildItem na získanie kolekcie súborov a ich odovzdanie skriptu ako parameter. Príkaz Get-ChildItem získa kolekciu objektov súborov a priečinkov, nielen ich názvy, ale tieto objekty tiež priamo presmeruje do príkazu Sort-Object na ich zoradenie. Predvolene príkaz Sort-Object zoradí objekty na základe vlastnosti Name. Takže nemusíte zadávať žiadne ďalšie parametre. Zoradená kolekcia objektov sa potom uloží do premennej s názvom $items.

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

Keď máte kolekciu objektov súborov a priečinkov, musíte ich prejsť a zobraziť príslušné vlastnosti. Príkaz na to je ForEach. Pre každý súbor alebo priečinok sa zobrazia vlastnosti ako dátum a čas poslednej úpravy, názov, dĺžka alebo veľkosť súboru. Zvláštne vyzerajúce reťazce v zátvorkách sú kódy formátu reťazcov .NET. Používajú sa na zarovnanie polí vľavo/vpravo a formátovanie dátumov, časov a čísel. Pochopenie týchto kódov formátu reťazcov nie je veľmi dôležité, pretože nie sú nevyhnutné pre povahu tohto skriptu.

Príkaz If určuje, či je objekt adresár alebo nie. Ak je prvý znak atribútu Mode „d“, objekt je adresár. Musíte to skontrolovať dvakrát, pretože kód pre adresáre sa často líši od kódu pre súbory.

Všimnite si riadok $totalDirs++ vo vnútri príkazu If. Ide o počítadlo zodpovedné za sledovanie počtu adresárov. Podobne existuje premenná $totalFiles, ktorá sa používa na sledovanie celkovej veľkosti všetkých súborov. Tieto hodnoty sa vždy vypočítavajú počas vykonávania. Zobrazia sa však až po dokončení procesu výpisu súborov.

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 a všetko, čo potrebujete vedieť o tomto nástroji
Obrázok 4: Zobrazuje výstupné údaje aktualizovaného skriptu.

DIR.PS1: Päta

Zostáva už len zapísať na obrazovku celkový počet súborov, adresárov, celkovú veľkosť všetkých súborov a voľné miesto na tomto oddiele disku. Na to budete potrebovať premenné počítadla ($totalFiles, $totalDirs, $totalSize) vytvorené v predchádzajúcej časti. Množstvo voľného miesta zistíte z premennej $volInfo vytvorenej na začiatku skriptu.

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 a všetko, čo potrebujete vedieť o tomto nástroji
Obrázok 5: Zobrazuje kompletné výstupné údaje skriptu.

Predpovede a vylepšenia môžu byť

Hoci skript, ktorý vytvoríte, produkuje takmer identický výstup ako príkaz CMD.EXE DIR, existujú určité upozornenia, ktorých by ste si mali byť vedomí, a je možné vykonať určité vylepšenia.

  • Tento skript nevykonáva žiadnu kontrolu chýb.
  • Ak skriptu nie je zadaná platná cesta, skript zlyhá s chybovým hlásením PowerShellu.
  • Celkový počet adresárov uvedený v skripte je o 2 menší ako výsledok z príkazu CMD.EXE DIR, pretože príkaz Get-ChildItem nepočíta dva adresáre „.“ a „..“ ako v CMD.EXE.
  • Váš skript triedi iba podľa názvu súboru, názvu priečinka a neposkytuje žiadne iné triedenie podľa atribútov.
  • Váš skript nedokáže zobraziť obsah priečinka a všetkých podpriečinkov.

Ako vám PowerShell pomáha automatizovať čokoľvek na vašom počítači

Napíšte jednoduché PowerShell skripty

PowerShell môžete použiť na automatizáciu takmer čohokoľvek, napríklad na dávkové premenovanie súborov kvôli konzistencii alebo automatické spúšťanie aplikácií. Napíšme si niekoľko jednoduchých skriptov pre Windows PowerShell, aby sme videli, ako to funguje.

Poznámka : Ak sa pri spúšťaní skriptu vyskytne chyba týkajúca sa politiky vykonávania, možno budete musieť dočasne povoliť spustenie skriptu spustením príkazu „Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass“.

Dávkové premenovanie súborov v priečinku

Pomocou PowerShellu môžete kopírovať, presúvať a odstraňovať súbory v počítači. Súbory konkrétneho typu môžete tiež hromadne premenovať. Napríklad tu je postup, ako môžete premenovať viacero textových súborov nahradením predpony „oldco“ predponou „newco“ v ​​ich názvoch:

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

Vo vyššie uvedenom skripte je „.txt“ filter prípon súborov. Môžete ho upraviť a nastaviť na .jpg, .docx atď., aby ste vyhľadávali rôzne typy súborov.

Automatické spustenie aplikácie

Ak každý deň otvárate rovnakú sadu aplikácií, môžete napísať skript PowerShell, ktorý ich spustí jedným kliknutím:

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

Vložte skript do súboru programu Poznámkový blok a uložte ho ako LaunchFavoriteApps.ps1. Potom dvakrát kliknite na súbor a spustite všetky aplikácie uvedené v skripte.

Skopírujte dôležité súbory do záložného umiestnenia

Dôležité súbory môžete pravidelne zálohovať do záložného umiestnenia pomocou nasledujúceho skriptu. Nezabudnite podľa potreby zmeniť zdrojovú a cieľovú cestu:

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

Napíšte PowerShell skript na automatické denné usporiadanie súborov

Keďže sa každý deň sťahuje veľa typov súborov, priečinok Stiahnuté súbory sa môže rýchlo zaplniť všemožnými súbormi roztrúsenými po ňom. Aby sme to vyriešili, môžeme napísať skript PowerShell, ktorý na konci každého dňa zoradí stiahnuté súbory do priečinkov podľa typu súboru.

Otvorte nový súbor programu Poznámkový blok a vložte nasledujúci skript. Uistite sa, že ste v skripte zmenili cestu k zdrojovému priečinku tak, aby sa zhodovala s cestou k priečinku Stiahnuté súbory:

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

Ak chcete súbor uložiť, kliknite na Súbor > Uložiť ako a ako názov súboru zadajte OrganizeDownloadsFolder.ps1 . Potom kliknite na Uložiť ako typ a vyberte Všetky súbory . Dvojitým kliknutím na súbor OrganizeDownloadsFolder.ps1 spustite skript.

Plánovanie a vykonávanie úloh

Samozrejme, písanie skriptu je jednou časťou automatizačného procesu. Druhou časťou je zabezpečenie automatického spustenia skriptu na vykonanie úlohy. Na tento účel môžeme vytvoriť naplánované úlohy na spúšťanie skriptu denne alebo podľa potreby.

Otvorte PowerShell, potom skopírujte a vložte nasledujúci skript a stlačte kláves Enter . Nezabudnite nahradiť „J:\OrganizeDownloadsFolder.ps1“ úplnou cestou k súboru skriptu 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"

Po dokončení stlačte kláves Enter . Skript vytvorí naplánovanú úlohu v Plánovači úloh, ktorá bude spúšťať skript na organizáciu súborov každý deň o 17:00. Ak uprednostňujete iný čas, môžete ho upraviť vo vyššie uvedenom skripte.

Okrem toho môžete pomocou PowerShellu automatizovať ďalšie každodenné úlohy, ako je napríklad skript na monitorovanie miesta, ktorý vás upozorní, keď vám dôjde voľné miesto na primárnom disku, ochrana dávok PDF dokumentov heslom a dokonca aj použitie živých tapiet z priečinka s obrázkami.

Hoci PowerShell je výkonný nástroj a skriptovací jazyk, jeho pochopenie a používanie si vyžaduje určitý čas, najmä ak nie ste oboznámení s prostredím .NET Framework. Dúfam, že tento článok a vzorový skript budú užitočné pre každého, kto chce pochopiť PowerShell. Vzorový skript vytvorený v článku je však pomerne jednoduchý. Verím, že ho možno komplexnejšie zostaviť a vyvinúť tak, aby slúžil zložitejším aplikáciám.

Tags: #System

Leave a Comment

Ako resetovať aplikácie na počítačoch so systémom Windows

Ako resetovať aplikácie na počítačoch so systémom Windows

Ak vaša aplikácia Nastavenia alebo Microsoft Store nefunguje správne, zlyháva alebo sa neotvára, môžete aplikáciu resetovať.

Čo je PING? Ako otestovať PING?

Čo je PING? Ako otestovať PING?

V nasledujúcom článku vás pozývame, aby ste sa naučili niekoľko jednoduchých príkladov príkazu PING vo Windowse!

Ako spustiť naplánované úlohy s oneskorením v systéme Windows

Ako spustiť naplánované úlohy s oneskorením v systéme Windows

Táto funkcia je mimoriadne užitočná na odloženie nepotrebných úloh, zabezpečenie sieťového pripojenia pred spustením úlohy, spúšťanie úloh v určitom poradí, plánovanie aktualizácií alebo vykonávanie údržby hardvéru.

Čo je VPN? Výhody a nevýhody virtuálnej súkromnej siete VPN

Čo je VPN? Výhody a nevýhody virtuálnej súkromnej siete VPN

Čo je VPN, aké sú výhody a nevýhody VPN? Poďme si s WebTech360 prediskutovať definíciu VPN a ako tento model a systém aplikovať v práci.

Ako invertovať farby obrazovky pomocou programu Lupa v systéme Windows 11

Ako invertovať farby obrazovky pomocou programu Lupa v systéme Windows 11

Používanie funkcie inverzie lupy v systéme Windows 11 môže zlepšiť čitateľnosť textu, najmä pre ľudí citlivých na svetlo.

Oprava nefunkčného príkazu Kopírovať a Vložiť vo Worde a Exceli (2007, 2010)

Oprava nefunkčného príkazu Kopírovať a Vložiť vo Worde a Exceli (2007, 2010)

Existuje mnoho dôvodov, prečo príkaz Kopírovať a Vložiť nefunguje v počítači so systémom Windows, napríklad ak je počítač napadnutý vírusom, schránka nefunguje, a preto príkaz kopírovať (Ctrl + C) a príkaz vložiť (Ctrl + V) nefungujú. Ako túto chybu opraviť, pozrite si článok nižšie na webovej stránke WebTech360.

Znova si v systéme Windows 10 stiahnite prehliadač fotografií systému Windows, aby ste si fotografie prezerali rýchlejšie. Aplikácia Fotografie je príliš pomalá!

Znova si v systéme Windows 10 stiahnite prehliadač fotografií systému Windows, aby ste si fotografie prezerali rýchlejšie. Aplikácia Fotografie je príliš pomalá!

Ak sa vám aplikácia Fotografie v systéme Windows 10 nepáči a chcete si fotografie prezerať pomocou prehliadača fotografií systému Windows v systéme Windows 10, postupujte podľa tohto návodu, ktorý vám pomôže preniesť prehliadač fotografií systému Windows do systému Windows 10 a rýchlejšie si fotografie prezerať.

Ako klonovať pevný disk so systémom Windows bez softvéru tretej strany

Ako klonovať pevný disk so systémom Windows bez softvéru tretej strany

Proces klonovania zahŕňa presun údajov z jedného úložného zariadenia na druhé (v tomto prípade pevný disk) s presnou kópiou skopírovanou z cieľového disku.

Ako zakázať rýchle spustenie v systéme Windows

Ako zakázať rýchle spustenie v systéme Windows

Rýchle spustenie systému Windows 11 pomáha rýchlejšiemu spusteniu počítača, ale môže byť aj dôvodom, prečo sa počítač so systémom Windows úplne nevypne.

Ako pridať Ukončiť úlohu na panel úloh systému Windows 11

Ako pridať Ukončiť úlohu na panel úloh systému Windows 11

Systém Windows 11 má funkciu, ktorá pridáva tlačidlo Ukončiť úlohu priamo na panel úloh, takže na zatvorenie nereagujúcich aplikácií nemusíte pristupovať k Správcovi úloh.

Ako zálohovať dáta bez použitia externého pevného disku

Ako zálohovať dáta bez použitia externého pevného disku

Niekedy jednoducho neviete nájsť externý pevný disk, keď ho najviac potrebujete. Po niekoľkých stratách dôležitých súborov niektorí ľudia našli jednoduchý a spoľahlivý spôsob, ako zálohovať všetko, aj keď pevný disk nie je k dispozícii.

Na čo slúži skratka Ctrl + Z vo Windowse? Pravdepodobne viac, než si myslíte.

Na čo slúži skratka Ctrl + Z vo Windowse? Pravdepodobne viac, než si myslíte.

Ctrl + Z je mimoriadne bežná kombinácia klávesov v systéme Windows. Ctrl + Z v podstate umožňuje vrátiť späť akcie vo všetkých oblastiach systému Windows.

Tu je postup, ako odstrániť oddiel na obnovenie a oddiel na obnovenie s veľkosťou 450 MB v systéme Windows 10

Tu je postup, ako odstrániť oddiel na obnovenie a oddiel na obnovenie s veľkosťou 450 MB v systéme Windows 10

Obnovovacia oblasť je samostatná oblasť na pevnom disku alebo SSD disku vášho počítača a používa sa na obnovenie alebo preinštalovanie operačného systému v prípade zlyhania systému.

10 tipov na odstránenie programov, ktoré sa nedajú odinštalovať

10 tipov na odstránenie programov, ktoré sa nedajú odinštalovať

Množstvo nechceného softvéru môže spomaliť a spôsobiť neporiadok vo vašom počítači. Jeho vyčistenie však nie je vždy jednoduché. Pozrite si preto týchto 10 spôsobov, ako čisto odinštalovať aplikácie, hromadne odstrániť starý softvér, odinštalovať položky, ktoré sa nedajú odinštalovať, a dokonca odstrániť predinštalované programy systému Windows.

Pokyny na aktiváciu virtuálnych počítačov v systéme Windows 11

Pokyny na aktiváciu virtuálnych počítačov v systéme Windows 11

Virtuálny počítač v systéme Windows 11 umožní používateľom spustiť iný operačný systém ako Windows priamo na vašom počítači.

Vstavané bezpečnostné nástroje systému Windows 11 vás pred týmito hrozbami nedokážu ochrániť

Vstavané bezpečnostné nástroje systému Windows 11 vás pred týmito hrozbami nedokážu ochrániť

Systém Windows dnes chráni vašu bezpečnosť oveľa lepšie ako kedysi, ale Zabezpečenie systému Windows a s ním spojené nástroje stále nie sú dokonalé. Musíte si dávať pozor na hrozby, na ktoré počítačová bezpečnosť nemá riešenie.

Zastarané ovládače spomaľujú váš počítač so systémom Windows: Čo robiť?

Zastarané ovládače spomaľujú váš počítač so systémom Windows: Čo robiť?

Počítače so systémom Windows sa niekedy môžu zdať pomalé, ale Správca úloh nezobrazuje nič podozrivé. V tejto fáze väčšina ľudí kontroluje škodlivý softvér alebo problémy s úložiskom, ale zastarané ovládače môžu tiež spôsobiť problémy s výkonom.

Jednoduché zmeny, ktoré pomôžu rýchlejšiemu spusteniu počítača so systémom Windows

Jednoduché zmeny, ktoré pomôžu rýchlejšiemu spusteniu počítača so systémom Windows

Vypnutie aplikácií, ktoré nepotrebujete, je najúčinnejší spôsob, ako pomôcť počítaču so systémom Windows rýchlejšie sa spustiť.

Pokyny na zmenu tapety v systéme Windows 11

Pokyny na zmenu tapety v systéme Windows 11

Zmena tapety v systéme Windows 11 je jedným z najlepších spôsobov, ako si prispôsobiť pracovnú plochu.

Ako opraviť automatické reštartovanie počítača so systémom Windows po stlačení tlačidla vypnutia

Ako opraviť automatické reštartovanie počítača so systémom Windows po stlačení tlačidla vypnutia

V tomto článku vás Quantrimang prevedie niekoľkými spôsobmi, ako opraviť chybu automatického reštartovania počítačov so systémom Windows po stlačení tlačidla vypnutia.

Ako resetovať aplikácie na počítačoch so systémom Windows

Ako resetovať aplikácie na počítačoch so systémom Windows

Ak vaša aplikácia Nastavenia alebo Microsoft Store nefunguje správne, zlyháva alebo sa neotvára, môžete aplikáciu resetovať.

Čo je PING? Ako otestovať PING?

Čo je PING? Ako otestovať PING?

V nasledujúcom článku vás pozývame, aby ste sa naučili niekoľko jednoduchých príkladov príkazu PING vo Windowse!

Ako spustiť naplánované úlohy s oneskorením v systéme Windows

Ako spustiť naplánované úlohy s oneskorením v systéme Windows

Táto funkcia je mimoriadne užitočná na odloženie nepotrebných úloh, zabezpečenie sieťového pripojenia pred spustením úlohy, spúšťanie úloh v určitom poradí, plánovanie aktualizácií alebo vykonávanie údržby hardvéru.

Čo je VPN? Výhody a nevýhody virtuálnej súkromnej siete VPN

Čo je VPN? Výhody a nevýhody virtuálnej súkromnej siete VPN

Čo je VPN, aké sú výhody a nevýhody VPN? Poďme si s WebTech360 prediskutovať definíciu VPN a ako tento model a systém aplikovať v práci.

Ako invertovať farby obrazovky pomocou programu Lupa v systéme Windows 11

Ako invertovať farby obrazovky pomocou programu Lupa v systéme Windows 11

Používanie funkcie inverzie lupy v systéme Windows 11 môže zlepšiť čitateľnosť textu, najmä pre ľudí citlivých na svetlo.

Oprava nefunkčného príkazu Kopírovať a Vložiť vo Worde a Exceli (2007, 2010)

Oprava nefunkčného príkazu Kopírovať a Vložiť vo Worde a Exceli (2007, 2010)

Existuje mnoho dôvodov, prečo príkaz Kopírovať a Vložiť nefunguje v počítači so systémom Windows, napríklad ak je počítač napadnutý vírusom, schránka nefunguje, a preto príkaz kopírovať (Ctrl + C) a príkaz vložiť (Ctrl + V) nefungujú. Ako túto chybu opraviť, pozrite si článok nižšie na webovej stránke WebTech360.

Znova si v systéme Windows 10 stiahnite prehliadač fotografií systému Windows, aby ste si fotografie prezerali rýchlejšie. Aplikácia Fotografie je príliš pomalá!

Znova si v systéme Windows 10 stiahnite prehliadač fotografií systému Windows, aby ste si fotografie prezerali rýchlejšie. Aplikácia Fotografie je príliš pomalá!

Ak sa vám aplikácia Fotografie v systéme Windows 10 nepáči a chcete si fotografie prezerať pomocou prehliadača fotografií systému Windows v systéme Windows 10, postupujte podľa tohto návodu, ktorý vám pomôže preniesť prehliadač fotografií systému Windows do systému Windows 10 a rýchlejšie si fotografie prezerať.

Ako klonovať pevný disk so systémom Windows bez softvéru tretej strany

Ako klonovať pevný disk so systémom Windows bez softvéru tretej strany

Proces klonovania zahŕňa presun údajov z jedného úložného zariadenia na druhé (v tomto prípade pevný disk) s presnou kópiou skopírovanou z cieľového disku.

Ako zakázať rýchle spustenie v systéme Windows

Ako zakázať rýchle spustenie v systéme Windows

Rýchle spustenie systému Windows 11 pomáha rýchlejšiemu spusteniu počítača, ale môže byť aj dôvodom, prečo sa počítač so systémom Windows úplne nevypne.

Ako pridať Ukončiť úlohu na panel úloh systému Windows 11

Ako pridať Ukončiť úlohu na panel úloh systému Windows 11

Systém Windows 11 má funkciu, ktorá pridáva tlačidlo Ukončiť úlohu priamo na panel úloh, takže na zatvorenie nereagujúcich aplikácií nemusíte pristupovať k Správcovi úloh.