Jak resetovat aplikace v počítačích se systémem Windows
Pokud vaše aplikace Nastavení nebo Microsoft Store nefunguje správně, padá nebo se neotevře, můžete aplikaci resetovat.
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
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.
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ů.
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ů.
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.
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.
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.
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.
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:
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“:
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:
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 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ý:
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
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.
Jakmile vytvoříte soubor PS1, můžete jej použít v PowerShellu spuštěním příkazu ./ScriptName.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.
Čí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ářů.
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.
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.
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
}
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")
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í.
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
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.
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.
Pokud vaše aplikace Nastavení nebo Microsoft Store nefunguje správně, padá nebo se neotevře, můžete aplikaci resetovat.
V níže uvedeném článku vás zveme k naučení několika jednoduchých příkladů příkazu PING ve Windows!
Tato funkce je mimořádně užitečná pro odložení nepotřebných úloh, zajištění síťového připojení před spuštěním úlohy, spouštění úloh v určitém pořadí, plánování aktualizací nebo provádění údržby hardwaru.
Co je VPN, jaké jsou výhody a nevýhody VPN? Pojďme si s WebTech360 probrat definici VPN a jak tento model a systém aplikovat v práci.
Používání funkce inverze Lupy ve Windows 11 může zlepšit čitelnost textu, zejména pro osoby citlivé na světlo.
Existuje mnoho důvodů, proč příkaz Kopírovat a Vložit nefunguje v počítači se systémem Windows, například pokud je počítač napaden virem, schránka nefunguje, a proto nefungují příkazy pro kopírování (Ctrl + C) a vložení (Ctrl + V). Jak tuto chybu opravit, naleznete v článku níže na webu WebTech360.
Pokud se vám aplikace Fotografie ve Windows 10 nelíbí a chcete si fotografie prohlížet pomocí Prohlížeče fotografií Windows ve Windows 10, postupujte podle tohoto návodu, jak si Prohlížeč fotografií Windows přenést do Windows 10 a prohlížet si fotografie rychleji.
Proces klonování zahrnuje přesun dat z jednoho úložného zařízení na druhé (v tomto případě pevný disk) s přesnou kopií zkopírovanou z cílového disku.
Rychlé spuštění systému Windows 11 pomáhá s rychlejším spuštěním počítače, ale může být také důvodem, proč se počítač se systémem Windows úplně nevypne.
Systém Windows 11 má funkci, která přidává tlačítko Ukončit úlohu přímo na hlavní panel, takže k zavření nereagujících aplikací nemusíte přistupovat ke Správci úloh.
Někdy prostě nemůžete najít externí pevný disk, když ho nejvíce potřebujete. Poté, co několikrát ztratili důležité soubory, někteří lidé našli jednoduchý a spolehlivý způsob, jak zálohovat vše, i když pevný disk není k dispozici.
Ctrl + Z je ve Windows velmi běžná klávesová zkratka. Ctrl + Z v podstatě umožňuje vrátit zpět akce ve všech oblastech Windows.
Oddíl pro obnovení je samostatný oddíl na pevném disku nebo SSD vašeho počítače a používá se k obnovení nebo přeinstalaci operačního systému v případě selhání systému.
Spousta nežádoucího softwaru může váš počítač zpomalit a způsobit jeho nepřehlednost. Jeho vyčištění však není vždy snadné. Podívejte se tedy na těchto 10 způsobů, jak čistě odinstalovat aplikace, hromadně odebrat starý software, odinstalovat položky, které nelze odinstalovat, a dokonce i předinstalované programy systému Windows.
Virtuální počítač ve Windows 11 umožní uživatelům spustit jiný operační systém než Windows přímo na vašem počítači.
Systém Windows dnes chrání vaše zabezpečení mnohem lépe než dříve, ale Zabezpečení systému Windows a s ním spojené nástroje stále nejsou dokonalé. Musíte si dávat pozor na hrozby, na které počítačové zabezpečení nemá řešení.
Počítače s Windows se někdy mohou zdát pomalé, ale Správce úloh nic podezřelého nezobrazuje. V této fázi většina lidí kontroluje malware nebo problémy s úložištěm, ale zastaralé ovladače mohou také způsobovat problémy s výkonem.
Vypnutí aplikací, které nepotřebujete, je nejúčinnějším způsobem, jak urychlit spuštění počítače se systémem Windows.
Změna tapety ve Windows 11 je jedním z nejlepších způsobů, jak si přizpůsobit plochu.
V tomto článku vás Quantrimang provede několika způsoby, jak opravit chybu, která způsobuje automatické restartování počítačů se systémem Windows po stisknutí tlačítka vypnutí.
Pokud vaše aplikace Nastavení nebo Microsoft Store nefunguje správně, padá nebo se neotevře, můžete aplikaci resetovat.
V níže uvedeném článku vás zveme k naučení několika jednoduchých příkladů příkazu PING ve Windows!
Tato funkce je mimořádně užitečná pro odložení nepotřebných úloh, zajištění síťového připojení před spuštěním úlohy, spouštění úloh v určitém pořadí, plánování aktualizací nebo provádění údržby hardwaru.
Co je VPN, jaké jsou výhody a nevýhody VPN? Pojďme si s WebTech360 probrat definici VPN a jak tento model a systém aplikovat v práci.
Používání funkce inverze Lupy ve Windows 11 může zlepšit čitelnost textu, zejména pro osoby citlivé na světlo.
Existuje mnoho důvodů, proč příkaz Kopírovat a Vložit nefunguje v počítači se systémem Windows, například pokud je počítač napaden virem, schránka nefunguje, a proto nefungují příkazy pro kopírování (Ctrl + C) a vložení (Ctrl + V). Jak tuto chybu opravit, naleznete v článku níže na webu WebTech360.
Pokud se vám aplikace Fotografie ve Windows 10 nelíbí a chcete si fotografie prohlížet pomocí Prohlížeče fotografií Windows ve Windows 10, postupujte podle tohoto návodu, jak si Prohlížeč fotografií Windows přenést do Windows 10 a prohlížet si fotografie rychleji.
Proces klonování zahrnuje přesun dat z jednoho úložného zařízení na druhé (v tomto případě pevný disk) s přesnou kopií zkopírovanou z cílového disku.
Rychlé spuštění systému Windows 11 pomáhá s rychlejším spuštěním počítače, ale může být také důvodem, proč se počítač se systémem Windows úplně nevypne.
Systém Windows 11 má funkci, která přidává tlačítko Ukončit úlohu přímo na hlavní panel, takže k zavření nereagujících aplikací nemusíte přistupovat ke Správci úloh.