PowerShell a vše, co potřebujete vědět o tomto nástroji

Co kdyby váš počítač dokázal zvládnout ty všední úkoly za vás? S Windows PowerShellem to dokáže. Zde je návod, jak pomocí PowerShellu automatizovat opakující se každodenní úkoly, které nikdo nechce dělat pořád dokola.

Obsah

Co je PowerShell?

Microsoft PowerShell je nástroj příkazového řádku a skriptovací jazyk, který je výkonným nástrojem pro administrátory k automatizaci široké škály úloh pro počítače a sítě. PowerShell obsahuje komponenty příkazového řádku a je postaven na frameworku .NET. Pokud čtete o WebTech360, měli byste vědět, že PowerShell je nástrojem volby IT administrátorů pro správu rozsáhlých sítí.

Naučit se používat PowerShell zjednoduší mnoho únavných každodenních úkolů. Můžete také provádět změny v celém systému přes síť, aniž byste museli individuálně konfigurovat každý server. PowerShell se stává nezbytnou součástí provozování hybridních cloudových prostředí .

PowerShell má mnoho různých využití, které vám pomohou pracovat efektivněji a udržovat vaši síť v chodu. Mezi nejzákladnější využití patří: plánování denních aktualizací systémů, generování reportů o aktuálních procesech, pravidelné služby a další. I když mnoho z těchto úkolů lze provádět pomocí grafického rozhraní, smyslem PowerShellu je jejich urychlení.

Pokud máte rutinní úkol údržby, jehož nastavení trvá několik minut, můžete stejnou funkcionalitu napsat do jediného příkazu s názvem PowerShell. Při příštím otevření tohoto skriptu se pak spustí na pozadí. Zvládnutí logiky skriptování PowerShellu, pochopení fungování objektů a proměnných (var) a jejich inteligentního nasazení v síti vás donutí zamyslet se nad tím, proč jste PowerShell nepoužili dříve.

Tento tutoriál se bude zabývat základy PowerShellu, což bude užitečné pro nováčky v oblasti IT, zejména pokud jste obeznámeni s příkazovým řádkem systému Windows. Probereme, jak používat základní nástroje a příkazy, jak pracovat se soubory a složkami, jak porozumět objektům, jak používat proměnné a jak spravovat vzdálené servery.

Stručná historie utilit příkazového řádku systému Windows

Po vydání Windows NT se CMD.EXE stal nástrojem příkazového řádku pro Windows. Přestože CMD.EXE zdědil některé prvky od svého předchůdce pro DOS (COMMAN.COM), stále byl založen na poněkud „primitivní“ skriptovacím jazyce: používal soubory příkazů systému Windows (.CMD a .BAT). Přidání Windows Scripting Host a jazyků VBScript a JScript výrazně rozšířilo skriptovací možnosti tohoto nástroje.

Tyto technologie představují poměrně vyváženou kombinaci pokročilých utilit příkazového řádku a skriptovacích prostředí. Skutečným problémem není, kolik souborů CMD.EXE, .CMD a souborů Windows Scripting Host lze s nimi manipulovat. Hlavní stížností a problémem je provádění některých zdánlivě jednoduchých úkolů.

S využitím „rámce“ nástrojů pro příkazový řádek a skriptování vyžaduje jakýkoli středně komplexní skript kombinaci dávkových příkazů, hostitele skriptů ve Windows a samostatných spustitelných souborů. Každý skript používá jiné konvence pro spouštění a požadavky, parsování a vracení dat.

Špatná podpora proměnných v CMD.EXE, nekonzistentní rozhraní a omezený přístup k nastavení Windows v kombinaci s další slabinou ztěžují implementaci a používání skriptů z příkazového řádku. Možná se ptáte, co je tou „další slabinou“? Je to text. V těchto technologiích je vše text. Výstupem příkazu nebo skriptu je text a musí být analyzován a přeformátován, aby fungoval jako vstup pro další příkaz. Toto je základní výchozí bod, který PowerShell přebírá ze všech tradičních shellů.

Úvod do nástrojů, příkazů a modulů PowerShellu

Tři koncepty uvedené v této části jsou pouze základními prvky pro pochopení klíčových konceptů, které tvoří základ PowerShellu. S postupným používáním příkazů PowerShellu budete muset věnovat více času studiu a zvládnutí pokročilejších konceptů.

Nástroje PowerShellu

PowerShell je ve výchozím nastavení nainstalován v systémech Windows 10, Windows 7, Windows Server 2008 R2 a novějších verzích Windows. Novější verze PowerShellu přidávají nové funkce a „cmdlety“ (termín společnosti Microsoft pro příkazy PowerShellu – vyslovuje se „command-lets“) a instalují se s odpovídající verzí Windows Management Framework (WMF).

V současné době je nejnovější doporučenou verzí WMF 5.1. V některých případech závisí kromě verze WMF i na operačním systému některé nové funkce. Například Windows 8 a Windows Server 2012 podporují rutinu Test-NetConnection, která umožňuje testovat připojení ke konkrétnímu portu TCP/IP , ale tato rutina není k dispozici ve Windows 7, a to ani při spuštění nejnovější verze WMF.

Ve většině systémů Windows mají uživatelé k dispozici dvě prostředí PowerShellu, konzoli PowerShellu a PowerShell ISE (Integrated Scripting Environment). Konzola PowerShellu se jeví jako tradiční příkazový řádek, ale s plnou funkcionalitou PowerShellu. Názvy proměnných, smyčky, automatické dokončování příkazů a propojování jsou k dispozici v konzoli PowerShellu.

Pro pokročilejší použití (například skriptování) nabízí PowerShell ISE automatické doplňování příkazů, zvýrazňování kódu a doplňování kódu pomocí technologie Microsoft Intellisense, které vám pomohou s vytvářením a testováním kódu PowerShellu. PowerShell ISE také umožňuje pracovat s více skripty PowerShellu současně pomocí navigace s kartami.

cmdlety v PowerShellu

Základem příkazů PowerShellu je cmdlet. Společnost Microsoft při vytváření cmdletů v PowerShellu zvolila několik designových strategií.

První je možnost snadno odvodit názvy cmdletů, nebo je alespoň zvýšit pro lepší vyhledatelnost. Příkazy nebo cmdlety PowerShellu jsou také navrženy tak, aby se snáze používaly, se standardizovanou syntaxí, což usnadňuje vytváření skriptů z rozhraní příkazového řádku.

Rutiny (cmdlety) používají formát Verb-Noun, jako například Get-Service, Stop-Service nebo Import-Csv. Část slovesa v názvu rutiny označuje akci provedenou s podstatným jménem. Rutiny, které se používají k načtení informací, obvykle obsahují ve svém názvu sloveso Get , například Get-Process nebo Get-Content . Příkazy používané k úpravě něčeho obvykle začínají slovesem Set a příkazy používané k přidání nové entity k něčemu obvykle začínají slovesem Add nebo New .

Za druhé, parametry běžně používané v PowerShellu dostávají také standardizované názvy. Například parametr -ComputerName umožňuje spuštění rutiny na jednom nebo více vzdálených počítačích. -Credential se používá k poskytnutí ověřovacího objektu obsahujícího uživatelské přihlašovací údaje pro spuštění příkazu jako konkrétní uživatel.

Moduly v PowerShellu

Aliasy můžete použít jak pro rutiny, tak pro parametry, abyste ušetřili stisknutí kláves a zkrátili celkovou délku příkazu (užitečné při řetězení více příkazů). I když tyto aliasy ne vždy používají standardní konvence pojmenování, stále odrážejí tradiční nástroje příkazového řádku.

V PowerShellu odpovídají aliasy jako DIR, CD, DEL a CLS rutinám Get-ChildItem, Set-Location, Remove-Item a Clear-Host. Aliasy parametrů mohou fungovat dvěma způsoby: mohou používat předdefinovaný alias poskytnutý rutinou nebo mohou být aliasovány zadáním dostatečného počtu znaků, aby se vytvořila jedinečná shoda mezi podporovanými parametry rutiny.

Správa souborů a složek

Většina správců systémů musí během své práce manipulovat se soubory a složkami, ať už se jedná o přesun složky na jiné místo na serveru, archivaci souborů protokolů nebo vyhledávání velkých souborů. V případech, kdy se stejné operace opakují na mnoha souborech, bude použití PowerShellu k jejich automatizaci efektivním řešením, které ušetří čas.

Pro vyhledávání souborů a složek byl jedním z prvních nástrojů příkazového řádku, které se administrátoři v dobách informatiky naučili používat, příkaz dir. Příkaz Dir vypíše soubory a složky obsažené v zadaném adresáři.

PowerShell má podobný příkaz ve formě rutiny Get-ChildItem . Get-ChildItem umožňuje rychle vytvořit seznam souborů v adresáři tak, aby bylo možné s nimi manipulovat pomocí příkazu typu pipe nebo přiřadit výstup proměnné.

Funkce Get-ChildItem se dá použít jednoduše zadáním cesty, buď prostřednictvím kanálu, pomocí parametru -Path , nebo přímo za názvem rutiny. Pro úpravu odpovědi vrácené funkcí Get-ChildItem je nutné zvážit některé parametry, které rutina zpřístupňuje.

Parametr -Filter je jeden ze způsobů, jak můžete vyhledávat soubory. Ve výchozím nastavení Get-ChildItem vrací pouze přímé podřízené objekty cílového adresáře. Tuto funkcionalitu lze rozšířit pomocí parametru -Recurse , který rekurzivně prohledává adresáře obsažené v aktuálním adresáři.

V PowerShellu 4.0 byla přidána možnost omezit výsledky na soubory nebo adresáře pomocí přepínače –File nebo –Directory . Předchozí verze PowerShellu musely předat výsledky Where-Object a filtrovat podle vlastnosti PSIsContainer, aby toto určení provedly. Příklad obou technik použitých k vrácení adresářů obsažených v C:Users je uveden zde:

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

Pro detekci skrytých nebo systémových souborů je nutné použít  parametr -Force . Get-ChildItem v PowerShellu 4.0 a novějších verzích lze také použít k vrácení pouze skrytých, read-only nebo systémových souborů pomocí parametrů -Hidden, -ReadOnly a –System . Podobné funkcionality bylo možné v předchozích verzích dosáhnout filtrováním vlastnosti Mode pomocí parametru Where-Object:

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

Zkontrolujte, zda soubor existuje

Při práci se soubory obvykle potřebujeme vědět, zda soubor existuje nebo zda je cesta k adresáři platná. PowerShell k tomu poskytuje cmdlet ve formě Test-Path, který vrací hodnotu true nebo false.

Test-Path se používá jako preventivní krok před pokusem o kopírování nebo smazání konkrétního souboru.

Kopírování, přesouvání a mazání souborů

Copy-Item: Zkopíruje jeden nebo více souborů nebo adresářů z umístění určeného parametrem -Path do umístění určeného parametrem -Destination.

Přesunout položku: Přesunout soubor nebo složku.

Při kopírování nebo přesouvání adresářové struktury by se měla použít volba -Recurse , aby rutina provedla akci s adresářem a jeho obsahem. V některých případech je také vyžadována volba -Force , například když je soubor určený jen pro čtení přepsán operací kopírování.

Odstranit položku: Smazat soubor, složku.

Přepínač -Force by se měl použít při setkání se souborem určeným pouze pro čtení a přepínač -Recurse při mazání adresáře a jeho obsahu.

Použití PowerShellu -WhatIf a -Confirm

Před provedením závažného, ​​hromadného smazání použijte -WhatIf . -WhatIf vám umožní zjistit, co by se stalo, kdybyste spustili skript nebo příkaz, a zda by to mělo nějaký potenciální negativní dopad v podobě smazání důležitých obchodních dat. Za zmínku také stojí, že -WhatIf se neomezuje pouze na operace se soubory, je široce používán v PowerShellu.

U skriptů, které chcete spouštět ručně, nebo, co je horší, máte závislé příkazy, které se spouštějí ručně, zvažte použití parametru -Confirm . To vám umožní vyžadovat interakci uživatele před skutečným provedením operace.

PowerShellové skripty = dávkové soubory na steroidech

Samotný PowerShell je napsán v jazyce .NET a je silně založen na .NET Frameworku. PowerShell je proto navržen jako objektově orientovaný shell a skriptovací jazyk. Vše v PowerShellu je považováno za objekt s plnými možnostmi .NET Frameworku. Příkaz zpřístupňuje kolekci objektů, které lze použít pomocí vlastností a metod daného typu objektu. Pokud chcete předat výstup jednoho příkazu druhému, PowerShell ve skutečnosti předá objekt, nikoli pouze textový výstup prvního příkazu. To dává dalšímu příkazu plný přístup ke všem vlastnostem a metodám objektu v pipeline.

Zacházení se vším jako s objektem a možnost přijímat objekty mezi příkazy představuje velkou změnu v teorii utilit příkazového řádku. PowerShell však stále funguje jako tradiční shell. Příkazy, skripty a spustitelné soubory lze zadávat a spouštět z příkazového řádku a výsledky se zobrazují jako text. Soubory Windows .CMD a .BAT, VBScripts, JScripts a spustitelné soubory, které běží uvnitř CMD.EXE, se v PowerShellu stále spouštějí. Protože však nejsou objektově orientované, nemají plný přístup k objektům vytvořeným a používaným v PowerShellu. Tyto starší skripty a spustitelné soubory budou i nadále vše považovat za text, ale PowerShell můžete kombinovat s řadou dalších technologií. To je obzvláště důležité, pokud chcete začít používat PowerShell s kolekcí existujících skriptů, které nelze převést najednou.

Vysvětlení parametrů PowerShellu

Rutiny mohou přijímat parametry pro změnu svého chování. Při spuštění rutiny nebo funkce můžete zadat hodnoty parametrů, které určují, co, kdy, kde a jak se jednotlivé příkazy PowerShellu spustí.

Například Get-Process načte a vypíše všechny spuštěné procesy ve vašem operačním systému:

PowerShell a vše, co potřebujete vědět o tomto nástroji
Příkaz Get-Process vypíše všechny spuštěné procesy.

Ale co když chcete získat pouze konkrétní proces? Můžete to udělat pomocí parametrů. Například pro získání všech procesů Slacku můžete použít parametr Name s rutinou Get-Process:

Get-Process -Name Slack

Pak uvidíte pouze procesy s názvem „slack“:

PowerShell a vše, co potřebujete vědět o tomto nástroji
Použití Get-Process s parametry

Tip : Některé parametry jsou „poziční“, což znamená, že jejich názvy jsou volitelné. V tomto případě Get-Process -Name Slack a Get-Process Slack provádějí stejnou úlohu.

Každá rutina přijímá různé typy parametrů. Pomocí příkazu Get-Help zobrazíte akceptované parametry rutiny v části SYNTAXE.

Get-Help Get-Process

Zobrazí se seznam všech možných způsobů, jak spustit danou rutinu:

PowerShell a vše, co potřebujete vědět o tomto nástroji
Parametry syntaxe rutiny

V tomto případě rutina Get-Process přijímá parametry jako Name, Id, ComputerName, Module, FileVersionInfo a další běžné parametry. Symboly zde znamenají:

Symbol

Jméno

Význam

 

Buben

Parametr nepřijímá vstup

-

Spojovník

Zadejte název parametru

<>

složené závorky

Zástupný symbol pro text

[]

Závorky

Parametr může přijímat jednu nebo více hodnot.

{}

složené závorky

Parametr přijímá sadu hodnot.

Parametry přijímají sadu hodnot, které budou označovat typ dat, které požadují, například řetězec, celé číslo, booleovská hodnota nebo datum a čas. Například následující příkaz:

Get-Process [[-Name] ]

... znamená, že parametr Name přijímá jednu nebo více řetězcových hodnot, zatímco tento příkaz:

Get-Process -Id 

... znamená, že parametr Id přijímá jednu nebo více celočíselných hodnot.

V předchozím příkladu Get-Process byl k upřesnění výsledků použit parametr Name. Pokud však chcete výsledky zúžit na konkrétnější proces, můžete použít parametr ID , který vyžaduje celé číslo, jak je uvedeno v jeho syntaxi.

Get-Process -Id 3016

Pak v seznamu uvidíte pouze jeden proces:

PowerShell a vše, co potřebujete vědět o tomto nástroji
Použití parametru Id v rutinách

Vytvořit kanál

PowerShell zpracovává všechna data jako objekty. Pro vytvoření skriptu se tyto objekty spouštějí pomocí série cmdletů nebo funkcí propojených pomocí symbolu svislé čáry (|). Výběr správných cmdletů a jejich propojení v logické posloupnosti pomocí pipeline je důležitý pro efektivní skript.

Předpokládejme, že vytváříte skript pro třídění a zobrazení 5 souborů, které zabírají v adresáři nejvíce místa. Existují účinnější způsoby, jak napsat skript pro třídění souborů, ale tento jednoduchý je snadno pochopitelný:

PowerShell a vše, co potřebujete vědět o tomto nástroji
Skript řazení - velké soubory PS1

Chcete-li to provést v PowerShellu, použijte pipeline, který vypadá takto:

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

Uložit kanál jako skript PS1

Nyní, když máme funkční pipeline, si ho můžete uložit jako soubor skriptu PS1, abyste ho nemuseli importovat pokaždé, když ho používáte.

Nejjednodušší způsob, jak vytvořit soubor PS1, je vložit skript do programu Poznámkový blok a uložit soubor s příponou .ps1.

PowerShell a vše, co potřebujete vědět o tomto nástroji
Vytvořte skript pomocí Poznámkového bloku

Jakmile vytvoříte soubor PS1, můžete jej použít v PowerShellu spuštěním příkazu ./ScriptName.ps1 :

PowerShell a vše, co potřebujete vědět o tomto nástroji
Použití skriptu PS1

Tip : Pokud se zobrazí chyba oprávnění, nejrychlejším řešením je spustit PowerShell s administrátorskými právy při spuštění skriptu.

Gratulujeme! Nyní můžete vytvářet skripty PowerShellu PS1.

Příklad skriptu PowerShellu

Číst o úžasnosti nových technologií a chápat je jedna věc, ale jejich skutečné používání je věc druhá! Ve zbytku tohoto článku vyvineme PowerShellový skript, který demonstruje jejich možnosti a jak je používat.

DIR je jeden z nejběžnějších příkazů v CMD.EXE . Tento příkaz zobrazí všechny soubory a podadresáře obsažené v nadřazeném adresáři (jak je znázorněno na obrázku 1). Spolu s názvem každého objektu zahrnují poskytnuté informace datum a čas poslední aktualizace a velikost každého souboru. DIR také zobrazuje celkovou velikost všech souborů v adresáři a celkový počet souborů a podadresářů.

PowerShell a vše, co potřebujete vědět o tomto nástroji
Obrázek 1

Spuštění příkazu DIR v PowerShellu také vygeneruje výpis adresářů jako na obrázku 2, ale trochu odlišným způsobem. PowerShell nemá příkaz DIR, ale místo něj má Get-ChildItem, který provádí stejnou funkci. V PowerShellu je DIR alias pro Get-ChildItem. V tomto článku se aliasy zabývat nehodlám. DIR v PowerShellu si můžete představit jako zkratku pro Get-ChildItem.

Funkce DIR v PowerShellu poskytuje mnoho stejných informací jako výše uvedené: seznam souborů a složek, datum a čas jejich poslední úpravy a velikost každého souboru. Chybí však souhrnné informace, které funkce DIR v CMD.EXE poskytuje: celkovou velikost všech souborů ve složce, celkový počet souborů a celkový počet podsložek.

PowerShell a vše, co potřebujete vědět o tomto nástroji
Obrázek 2

Pro ukázkový scénář budete muset vytvořit skript PowerShellu, který simuluje příkaz CMD.EXE DIR. Níže vysvětlím nejdůležitější části skriptu.

DIR.PS1: Záhlaví

Skript PowerShellu se skládá z příkazů PowerShellu v souboru ve formátu prostého textu s příponou .PS1. Místo DIR byste použili textový soubor s názvem DIR.PS1.

Chcete-li skript spustit, zadejte na obrazovce PowerShellu následující příkaz:

.DIR.PS1 X:Folder

Kde X je písmeno oddílu disku (například C, D, E) a Folder je název složky.

Pokud chcete zjistit nějaké informace o oddílu disku, budete muset použít Windows Management Instrumentation (WMI). Podrobnosti o WMI přesahují rámec tohoto článku, takže se jimi zde nebudeme zabývat. Níže uvedený kód PowerShellu je však dostatečně snadno pochopitelný i bez použití WMI. Můžete vytvořit proměnnou „$filter“, kterou budete používat s příkazem Get-WmiObject. Tento filtr sdělí příkazu Get-WmiObject, že chcete získat informace pouze o konkrétním disku. Výsledky příkazu Get-WmiObject jsou uloženy v proměnné s názvem $volInfo. Nezapomeňte, že v PowerShellu je vše objekt; $volInfo je nyní objekt vrácený příkazem Get-WmiObject.

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

Nyní máte přístup ke všem objektům a metodám spojeným s objektem. Sériové číslo svazku je přístupné prostřednictvím vlastnosti VolumeSerialNumber. Vrácené číslo je řetězec o délce 8 znaků. Často ho však chcete formátovat jako čtyři čísla oddělená pomlčkou. Lze to provést podobně jako v následujícím řádku. Pomlčka na konci prvního řádku je znak pro pokračování řádku v PowerShellu. V podstatě říká PowerShellu, že se řádek nezalomí a že zahrnuje i další řádek. Zalomení řádků není při psaní kódu nutné, ale pro zmenšení šířky a zvýšení čitelnosti kódu byste je měli použít.

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

Nyní, když máte objekt $volInfo, můžete na obrazovku zapsat informace ze záhlaví DIR. Pokud disk nemá název, text zapsaný na obrazovku se bude mírně lišit, než kdyby disk název měl. Jednoduchý příkaz If-Else se používá k ověření, zda je vlastnost VolumeName prázdný řetězec. Příkaz Write-Host se používá k zapsání každého řádku 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čátku a na konci příkazu Write-Host se používá k vložení nového řádku před a za text. Příkaz Write-Host přidá nový řádek na konec každého řádku. Důsledkem znaku „ `n ” je tedy vytvoření prázdného řádku před a za textem.

Všimli jste si znaku „-eq“ v příkazu If? Je to operátor porovnávání rovnosti. Níže uvedená tabulka ukazuje všechny operátory porovnávání:

-eq, -ieq Porovnat podle
-ne, -ine Srovnání není stejné
-gt, -igt Porovnat větší než
-ge, -ige Porovnejte větší nebo rovno s
-lt, -ilt Porovnat menší než
-le, -ile Porovnat menší než nebo rovno

Znak -i před porovnávacími operátory označuje, že operátor nerozlišuje velká a malá písmena.

PowerShell a vše, co potřebujete vědět o tomto nástroji
Obrázek 3: Výstupní data skriptu, který aktuálně máte

DIR.PS1: Seznam souborů/složek

Nyní jste připraveni zobrazit obsah a vlastnosti této složky. První věcí, kterou je třeba udělat, je zavolat příkaz PowerShellu Get-ChildItem pro získání kolekce souborů a její předání skriptu jako parametr. Příkaz Get-ChildItem získá kolekci objektů souborů a složek, nejen jejich názvy, ale také tyto objekty přímo předá příkazu Sort-Object pro jejich seřazení. Ve výchozím nastavení příkaz Sort-Object seřadí objekty na základě vlastnosti Name. Není tedy nutné zadávat žádné další parametry. Seřazená kolekce objektů bude poté uložena v proměnné s názvem $items.

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

Jakmile máte kolekci objektů souborů a složek, musíte je projít a zobrazit příslušné vlastnosti. Příkaz pro to je ForEach. Pro každý soubor nebo složku se zobrazí data a čas poslední úpravy, název, délka nebo velikost souboru. Podivně vypadající řetězce v závorkách jsou kódy formátu řetězců .NET. Používají se k zarovnání polí vlevo/vpravo a k formátování data, časů a čísel. Pochopení těchto kódů formátu řetězců není příliš důležité, protože nejsou nezbytné pro povahu tohoto skriptu.

Příkaz If určuje, zda je objekt adresářem či nikoli. Pokud je první znak atributu Mode „d“, objekt je adresářem. Je třeba to zkontrolovat dvakrát, protože kód pro adresáře se často liší od kódu pro soubory.

Všimněte si řádku $totalDirs++ uvnitř příkazu If. Jedná se o čítač, který je zodpovědný za sledování počtu adresářů. Podobně existuje proměnná $totalFiles, která se používá ke sledování celkové velikosti všech souborů. Tyto hodnoty se vždy počítají během provádění. Zobrazí se však až po dokončení procesu výpisu souborů.

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še, co potřebujete vědět o tomto nástroji
Obrázek 4: Zobrazuje výstupní data aktualizovaného skriptu.

DIR.PS1: Zápatí

Zbývá už jen vypsat na obrazovku celkový počet souborů, adresářů, celkovou velikost všech souborů a volné místo na tomto oddílu disku. K tomu budete potřebovat proměnné čítače ($totalFiles, $totalDirs, $totalSize) vytvořené v předchozí části. Množství volného místa zjistíte z proměnné $volInfo vytvořené na začátku 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še, co potřebujete vědět o tomto nástroji
Obrázek 5: Zobrazuje kompletní výstupní data skriptu.

Předpovědi a vylepšení mohou být

Přestože vytvořený skript produkuje téměř identický výstup jako příkaz CMD.EXE DIR, existují určitá upozornění, kterých byste si měli být vědomi, a lze provést určitá vylepšení.

  • Tento skript neprovádí žádnou kontrolu chyb.
  • Pokud skriptu není předána platná cesta, skript selže s chybovou zprávou PowerShellu.
  • Celkový počet adresářů zadaných ve skriptu je o 2 menší než výsledek z příkazu CMD.EXE DIR, protože příkaz Get-ChildItem nepočítá dva adresáře „.“ a „..“ jako v CMD.EXE.
  • Váš skript třídí pouze podle názvu souboru, názvu složky a neposkytuje žádné další třídění podle atributů.
  • Váš skript nedokáže zobrazit obsah složky a všech jejích podsložek.

Jak vám PowerShell pomáhá automatizovat cokoli na vašem počítači

Pište jednoduché PowerShellové skripty

PowerShell můžete použít k automatizaci téměř čehokoli, například dávkového přejmenování souborů pro zajištění konzistence nebo automatického spouštění aplikací. Pojďme si napsat několik jednoduchých skriptů Windows PowerShellu, abychom viděli, jak to funguje.

Poznámka : Pokud se při spuštění skriptu setkáte s chybou týkající se zásad spouštění, bude pravděpodobně nutné dočasně povolit spuštění skriptu spuštěním příkazu „Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass“.

Dávkové přejmenování souborů ve složce

Pomocí PowerShellu můžete kopírovat, přesouvat a mazat soubory v počítači. Soubory určitého typu můžete také hromadně přejmenovat. Například takto můžete přejmenovat více textových souborů nahrazením předpony „oldco“ za „newco“ v ​​jejich názvech:

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

Ve výše uvedeném skriptu je „.txt“ filtrem přípon souborů. Můžete jej upravit a nastavit na .jpg, .docx atd. pro vyhledávání různých typů souborů.

Automatické spuštění aplikace

Pokud každý den otevíráte stejnou sadu aplikací, můžete napsat PowerShellový skript, který je spustí jediný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 souboru programu Poznámkový blok a uložte jej jako LaunchFavoriteApps.ps1. Poté stačí dvakrát kliknout na soubor a spustit všechny aplikace uvedené ve skriptu.

Zkopírujte důležité soubory do záložního umístění

Důležité soubory můžete pravidelně zálohovat do záložního umístění pomocí následujícího skriptu. Nezapomeňte podle potřeby změnit zdrojovou a cílovou cestu:

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

Napište PowerShellový skript pro automatické denní uspořádání souborů

Protože se každý den stahuje mnoho typů souborů, složka Stažení se může rychle zahltit nejrůznějšími soubory rozházenými po ní. Abychom to vyřešili, můžeme napsat skript PowerShellu, který na konci každého dne seřadí stažené soubory do složek podle typu souboru.

Otevřete nový soubor programu Poznámkový blok a vložte do něj následující skript. Ujistěte se, že jste ve skriptu změnili cestu ke zdrojové složce tak, aby odpovídala cestě ke složce Stažené soubory:

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

Chcete-li soubor uložit, klikněte na Soubor > Uložit jako a jako název souboru zadejte OrganizeDownloadsFolder.ps1 . Poté klikněte na Uložit jako typ a vyberte Všechny soubory . Poklepáním na soubor OrganizeDownloadsFolder.ps1 spusťte skript.

Plánování a provádění úkolů

Samozřejmě, psaní skriptu je jednou součástí automatizačního procesu. Druhou částí je zajištění automatického spuštění skriptu pro provedení úkolu. K tomu můžeme vytvořit naplánované úlohy, které skript spouštějí denně nebo podle potřeby.

Otevřete PowerShell, zkopírujte a vložte následující skript a stiskněte klávesu Enter . Nezapomeňte nahradit 'J:\OrganizeDownloadsFolder.ps1' úplnou cestou k souboru 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í stiskněte klávesu Enter . Skript vytvoří v Plánovači úloh naplánovanou úlohu, která bude spouštět skript pro organizaci souborů každý den v 17:00. Pokud preferujete jiný čas, můžete jej ve výše uvedeném skriptu upravit.

Kromě toho můžete PowerShell použít k automatizaci dalších každodenních úkolů, jako je skript pro sledování místa, který vás upozorní, když vám dojde volné místo na primárním disku, ochrana dávek PDF dokumentů heslem a dokonce i použití živých tapet ze složky s obrázky.

Přestože je PowerShell výkonný nástroj a skriptovací jazyk, jeho pochopení a používání vyžaduje trochu času, zejména pokud nejste obeznámeni s prostředím .NET Framework. Doufám, že tento článek a ukázkový skript budou užitečné pro každého, kdo chce porozumět PowerShellu. Ukázkový skript vytvořený v článku je však poměrně jednoduchý. Věřím, že jej lze kompletněji sestavit a vyvinout tak, aby sloužil složitějším aplikacím.

Tags: #System

Leave a Comment

Jak zobrazit přípony souborů, zobrazit přípony souborů ve Windows

Jak zobrazit přípony souborů, zobrazit přípony souborů ve Windows

Průzkumník souborů ve Windows nabízí spoustu možností, jak změnit způsob zobrazení souborů. Možná nevíte, že jedna důležitá možnost je ve výchozím nastavení zakázána, přestože je klíčová pro zabezpečení vašeho systému.

Jak stahovat, aktualizovat a řešit problémy s ovladači USB v systému Windows 10

Jak stahovat, aktualizovat a řešit problémy s ovladači USB v systému Windows 10

Zařízení USB se stala nepostradatelnou součástí každodenního života a umožňují nám připojit k našim počítačům širokou škálu nezbytného hardwaru.

4 typy dat ve Windows, jejichž velikost roste: Jak je ovládat?

4 typy dat ve Windows, jejichž velikost roste: Jak je ovládat?

Přestože Inteligentní úložiště systému Windows efektivně maže dočasné soubory, některé typy dat jsou trvalé a nadále se hromadí.

Jak změnit DNS pro rychlejší surfování po webu a zvýšení rychlosti internetu

Jak změnit DNS pro rychlejší surfování po webu a zvýšení rychlosti internetu

Změna DNS ve Windows má mnoho výhod, například: Přístup k některým blokovaným webovým stránkám, zrychlení internetového připojení, zlepšení stability sítě. Níže je uveden návod, jak změnit DNS ve Windows 10, Windows 7 a dalších verzích Windows. V poslední části článku si WebTech360 krátce poví, proč změna DNS pomáhá zrychlit internet.

10 skvělých funkcí Windows, které mnoho lidí nepoužívá

10 skvělých funkcí Windows, které mnoho lidí nepoužívá

Od ukončení zamrzlých aplikací přímo na hlavním panelu až po automatické uzamčení počítače při odchodu – existuje spousta nástrojů, které byste si přáli objevit dříve.

Jak vypnout zabezpečení sdílením hesla ve Windows 11

Jak vypnout zabezpečení sdílením hesla ve Windows 11

Společnost Microsoft povoluje sdílení chráněné heslem. Pokud toto nastavení považujete za zbytečné, můžete sdílení chráněné heslem v systému Windows 11 zakázat.

Jak změnit výchozí jazykové zkratky ve Windows 11

Jak změnit výchozí jazykové zkratky ve Windows 11

Výchozí zkratka pro změnu jazyka je Windows + mezerník, kterou nelze ve výchozím nastavení vypnout, ale můžete ji také změnit podle níže uvedeného článku.

Jak vypnout automatické aktualizace aplikací v obchodě Microsoft Store

Jak vypnout automatické aktualizace aplikací v obchodě Microsoft Store

Obchod odstranil trvalý přepínač a nyní umožňuje pozastavit aktualizace aplikací pouze na 1–5 týdnů. Pokud chcete blokovat vynucené aktualizace aplikací, můžete vyzkoušet některá z níže uvedených nastavení.

Co je to end-to-end šifrování? Jak funguje?

Co je to end-to-end šifrování? Jak funguje?

Vzhledem k této potřebě používají hlavní online služby pro zasílání zpráv techniku ​​zvanou end-to-end šifrování k zabezpečení a ochraně konverzací uživatelů.

Jak nastavit různé tapety na každém monitoru ve Windows 10/11

Jak nastavit různé tapety na každém monitoru ve Windows 10/11

Nastavení více monitorů ve Windows je poměrně jednoduché a trvá jen několik minut. Po nastavení režimu více monitorů (více obrazovek) můžete pro každou obrazovku nastavit samostatnou tapetu. Postup naleznete v níže uvedeném článku od WebTech360.

Stručný návod k opravě chyby „Nepřístupné spouštěcí zařízení“ ve Windows

Stručný návod k opravě chyby „Nepřístupné spouštěcí zařízení“ ve Windows

Nepřístupné spouštěcí zařízení je chyba způsobující modrou obrazovku smrti (BSOD). K této chybě obvykle dochází v systému Windows 10 poté, co uživatelé použijí funkci Obnovit tento počítač k obnovení počítače se systémem Windows 10 do výchozího nastavení nebo k aktualizaci (přeinstalaci) systému Windows 10 bez ztráty souborů, případně po upgradu systému na Windows 10.

Zde je návod, jak zkontrolovat, zda je vaše IP adresa statická nebo dynamická

Zde je návod, jak zkontrolovat, zda je vaše IP adresa statická nebo dynamická

Chcete-li zkontrolovat, zda je IP adresa, kterou používáte, dynamická nebo statická, můžete se podívat na níže uvedený článek od WebTech360.

Jak změnit název sítě ve Windows 11

Jak změnit název sítě ve Windows 11

Změna názvu sítě ve Windows neovlivní konfiguraci a usnadňuje identifikaci sítě. Existuje několik způsobů, jak změnit název sítě ve Windows.

Jak stáhnout Windows 11, stáhněte si oficiální ISO soubor Windows 11 od Microsoftu

Jak stáhnout Windows 11, stáhněte si oficiální ISO soubor Windows 11 od Microsoftu

V současné době byl oficiálně spuštěn systém Windows 11 a my si můžeme stáhnout oficiální ISO soubor Windows 11 nebo verzi Insider Preview k instalaci.

Povolte XMP pro optimalizaci rychlosti RAM

Povolte XMP pro optimalizaci rychlosti RAM

Pokud si chcete sestavit vlastní počítač a rozhodnete se investovat do vysokorychlostní paměti RAM, jak zajistíte, aby vaše paměť RAM dosahovala inzerovaných rychlostí?

Obnovení smazaných dat pomocí Recuva Portable ve Windows 7

Obnovení smazaných dat pomocí Recuva Portable ve Windows 7

V následujícím článku si představíme základní operace pro obnovu smazaných dat ve Windows 7 pomocí podpůrného nástroje Recuva Portable. S Recuva Portable je můžete uložit na libovolný USB disk a používat je, kdykoli je potřeba. Nástroj je kompaktní, jednoduchý, snadno použitelný a nabízí některé z následujících funkcí:

10 nastavení systému Windows, která byste nikdy neměli nechat jako výchozí

10 nastavení systému Windows, která byste nikdy neměli nechat jako výchozí

Systém Windows není standardně dodáván s nastaveným zabezpečením, což znamená, že je třeba změnit některá výchozí nastavení.

6 nejlepších poskytovatelů dynamického DNS zdarma

6 nejlepších poskytovatelů dynamického DNS zdarma

Dynamický DNS (také známý jako DDNS nebo DynDNS) je služba pro mapování internetové domény na počítač s dynamickou IP adresou. Většina počítačů se připojuje k routeru přes DHCP, což znamená, že router náhodně přiřazuje počítači IP adresu.

Jak zobrazit všechny účty ve Windows 11

Jak zobrazit všechny účty ve Windows 11

V systému Windows 11 může být v mnoha případech užitečné zkontrolovat všechny účty v počítači. Zde je návod, jak zobrazit všechny účty v systému Windows 11.

8 přenosných nástrojů pro Windows, které byste měli mít na USB, abyste je mohli používat kdekoli

8 přenosných nástrojů pro Windows, které byste měli mít na USB, abyste je mohli používat kdekoli

Bez ohledu na to, kde jste nebo jaký počítač používáte, máte k dispozici vše, co potřebujete k práci, řešení problémů a udržení produktivity.

Jak zobrazit přípony souborů, zobrazit přípony souborů ve Windows

Jak zobrazit přípony souborů, zobrazit přípony souborů ve Windows

Průzkumník souborů ve Windows nabízí spoustu možností, jak změnit způsob zobrazení souborů. Možná nevíte, že jedna důležitá možnost je ve výchozím nastavení zakázána, přestože je klíčová pro zabezpečení vašeho systému.

Jak stahovat, aktualizovat a řešit problémy s ovladači USB v systému Windows 10

Jak stahovat, aktualizovat a řešit problémy s ovladači USB v systému Windows 10

Zařízení USB se stala nepostradatelnou součástí každodenního života a umožňují nám připojit k našim počítačům širokou škálu nezbytného hardwaru.

4 typy dat ve Windows, jejichž velikost roste: Jak je ovládat?

4 typy dat ve Windows, jejichž velikost roste: Jak je ovládat?

Přestože Inteligentní úložiště systému Windows efektivně maže dočasné soubory, některé typy dat jsou trvalé a nadále se hromadí.

Jak změnit DNS pro rychlejší surfování po webu a zvýšení rychlosti internetu

Jak změnit DNS pro rychlejší surfování po webu a zvýšení rychlosti internetu

Změna DNS ve Windows má mnoho výhod, například: Přístup k některým blokovaným webovým stránkám, zrychlení internetového připojení, zlepšení stability sítě. Níže je uveden návod, jak změnit DNS ve Windows 10, Windows 7 a dalších verzích Windows. V poslední části článku si WebTech360 krátce poví, proč změna DNS pomáhá zrychlit internet.

10 skvělých funkcí Windows, které mnoho lidí nepoužívá

10 skvělých funkcí Windows, které mnoho lidí nepoužívá

Od ukončení zamrzlých aplikací přímo na hlavním panelu až po automatické uzamčení počítače při odchodu – existuje spousta nástrojů, které byste si přáli objevit dříve.

Jak vypnout zabezpečení sdílením hesla ve Windows 11

Jak vypnout zabezpečení sdílením hesla ve Windows 11

Společnost Microsoft povoluje sdílení chráněné heslem. Pokud toto nastavení považujete za zbytečné, můžete sdílení chráněné heslem v systému Windows 11 zakázat.

Jak změnit výchozí jazykové zkratky ve Windows 11

Jak změnit výchozí jazykové zkratky ve Windows 11

Výchozí zkratka pro změnu jazyka je Windows + mezerník, kterou nelze ve výchozím nastavení vypnout, ale můžete ji také změnit podle níže uvedeného článku.

Jak vypnout automatické aktualizace aplikací v obchodě Microsoft Store

Jak vypnout automatické aktualizace aplikací v obchodě Microsoft Store

Obchod odstranil trvalý přepínač a nyní umožňuje pozastavit aktualizace aplikací pouze na 1–5 týdnů. Pokud chcete blokovat vynucené aktualizace aplikací, můžete vyzkoušet některá z níže uvedených nastavení.

Co je to end-to-end šifrování? Jak funguje?

Co je to end-to-end šifrování? Jak funguje?

Vzhledem k této potřebě používají hlavní online služby pro zasílání zpráv techniku ​​zvanou end-to-end šifrování k zabezpečení a ochraně konverzací uživatelů.

Jak nastavit různé tapety na každém monitoru ve Windows 10/11

Jak nastavit různé tapety na každém monitoru ve Windows 10/11

Nastavení více monitorů ve Windows je poměrně jednoduché a trvá jen několik minut. Po nastavení režimu více monitorů (více obrazovek) můžete pro každou obrazovku nastavit samostatnou tapetu. Postup naleznete v níže uvedeném článku od WebTech360.