Přivítání a základní informace



Set-Welcome!
Vítejte v bezplatných lekcích pro PowerShell. Ať už jste studenti z kurzu, nebo nadšení zájemci o PowerShell, naleznete zde kvantum informací o PowerShellu a témat, kterých se dotýká. Jste-li zaregistrováni vzdělávací institucí v kurzu, bude vás na konci každé hlavní lekce čekat jeden shrnující online test a jeden pracovní list.

O projektu:
Autorem celého projektu je bývalý student VOŠ a SPŠ Jičín, který s ním na SOČ získal 4. místo v kategorii Tvorba učebních pomůcek a jednalo se o nejlepší IT výukový projekt. Od roku 2018 se tedy projekt vyvíjí a vy se můžete v budoucnu těšit na další obsah.

Co vás kurz naučí?
Postupným učením budete chronologicky postupovat učivem. Přehledně nejprve zvládnete obecné situace a naučíte se základy, poté dojde na specifické problémy a vy budete těžit z pevných stavebních kamenů.

Naučíte se PowerShell jako takový, ale i správu PC sítě a obecnosti programování. Kurz vás také navíc lépe naučí zvládat problémy, číst s porozuměním a argumentovat si své řešení. Navíc také automaticky získáváte možnost udělení certifikátu! Ten vám vytaví vzdělávací instituce v případě, že jste získali alespoň 90% bodů z online testů a pracovních listů.

Co budete potřebovat?
K rozšiřování znalostí budete až na výjimky potřebovat zařízení, na kterém si budete prohlížet stránky webu, budete na něm moct pracovat v PowerShellu a zobrazovat si výukové prezentace. Ty jsou ve verzi PPTX, ale také i v PDF. Materiály si také můžete vytisknout.

Web je responzivní, a tak můžete lekcemi procházet i na mobilu. Jednoduše si tak ráno v autobuse doženete to, co jste se nestihli naučit doma. V prezentacích se také nachází QR kód, který vás po nasnímání přenese na web, kde si své informace z prezentace rozšíříte.

Jak budu postupovat?
Postup skrze lekce je založený na přiměřenosti informací a mohou nastat 2 scénáře jak budete postupovat. Záleží to na tom, zda jste v kurzu. Pro to, aby jste se do kurzu dostali, potřebujete vzdělávací instituci, která vám to umožní. Seznam institucí naleznete ZDE.

  • Jste členy kurzu – Po registraci vás lektor seznámí s celým projektem. Realizace kurzu je poté na instituci, ale v základu by se mělo postupovat tak, že chodíte na hodiny, zde se dozvídáte informace a osvojujete si praktické schopnosti. Procházíte si také sekci Lekce a Úlohy a na konci si vyplníte pracovní list a online test. Následně získáte bodové ohodnocení, a tak postupujete dále.

  • Nejste členy kurzu - V tomto případě máte přístup ke všem prezentacím a k sekci Lekce a Úlohy. Samostudiem se tak učíte novým věcem. Můžete čerpat z velkého kvanta aktuálních informací.


A to vše zadarmo!


Responsive image

PowerShell



Základní informace:
PowerShell, jak již název napovídá, je velice užitečný a mocný nástroj. Rozebereme-li dále název, zjistíme, že se jedná o shell, neboli konzoli. K tomu má také PowerShell své vlastní prostředí s příkazy a editor na tvorbu skriptů. Dále v lekcích si jednotlivé části popíšeme detailněji.

Dříve byl PowerShell známý pod pojmem projekt Monad. Slouží především správcům sítí a to při automatizaci rutinních úkonů, nastavování a získávání informací o operačním systému.

Výstupem PowerShellu není jako u CMD a BASH text, ale jde o objekt. Proto můžeme v prostředí PowerShell pracovat objektově. To vede k lepšímu zřetězení a celkové úspoře času a efektivitě.

Proč ho mám používat?
PowerShell používají profesionální správci počítačových sítí, ale také i mírně pokročilí uživatelé PC. Díky němu si ušetříme spoustu času při nastavování a získávání informací o operačním systému. Můžeme automatizovat běžné rutinní úkony. Dostaneme se také k možnostem správy, ke kterým bychom jinak v současných operačních systémech neměli šanci.

Pokud např. budeme chtít přidat 250 uživatelů, zabere nám to dost času. Pokud použijeme skript, potrvá to jen chvilku. Samozřejmě budeme muset nějaký čas použít k vytvoření skriptu. Taková tvorba vyžaduje také jisté znalosti, aby nedošlo k nechtěnému výmazu 250 existujících uživatelů.

Díky PowerShellu si také můžete osvojit základy programování. Ty pak můžete využít i v jiných programovacích jazycích. V dalších lekcích se postupně seznámíme s jednotlivými termíny z oblasti programování a ukážeme si praktické využití.

PowerShell je zdarma dostupný ze stránek GitHubu. Pro přesnost se jedná o Open-source a je vyvíjen PowerShell týmem společnosti Microsoft. Pokud jako operační systém používáme alespoň Windows 7, nemusíme tento mocný nástroj stahovat, jelikož je již předinstalovaný.






Vývoj PowerShellu



Historie:
První verze PowerShellu -> PowerShell 1.0 byl vydán v roce 2006 a vývojáři ho začali vyvíjet na platformě .NET Framework. Tato verze byla určena pro OS Windows XP SP2, Windows Server 2003 SP1 a Windows Vista a jednalo se o volitelný doplněk. V této době se hojně využívalo CMD, neboli příkazový řádek také od společnosti Microsoft, který zůstal z dob MS-DOS jako paralelní možnost ovládání PC pomocí příkazů napsaných v CMD.

Verze 2.0 byla již implementována, a to do OS Windows 7 a Windows Server 2008 R2. Tato verze přinesla včetně nových cmdletů, mezi které patří například i PowerShell Remoting i PowerShell ISE - nástroj pro vývoj PowerShell skriptů. PowerShell si získal větší přízeň u správců systémů. Poskytnul jim totiž nové a pohodlnější možnosti.

S další verzí OS od společnosti Microsoft - Windows 8 a Windows Server 2012 vyšla i nová verze PowerShellu v roce 2012 -> PowerShell 3.0. PowerShell se stal součástí Windows Managment Frameworku, kde se také nachází nástroj pro vzdálenou správu - WinRM. Mezi novinky této verze patří také automatické přidání nových modulů a možnost vytvořit naplánované úlohy (joby). Zdokonalila se integrovaná nápověda v PowerShellu.
Další verze 4.0 byla integrována ve Windows 8.1 a Windows Server 2012 R2. Byla přidána možnost práce s Desired State Configuration. V této době se již začíná PowerShell používat spíše než CMD. Mezi důvody patří také absence objektů v CMD.

PowerShell verze 5.0 přichází s Windows 10, kde je také implementovaný a Microsoft jej upřednostňuje před CMD. Je možné ho jako kompletní balíček Windows Managment Framework 5.0 doinstalovat i do starších verzí Windows - Linux stále nebyl podporován. Tato verze přináší podporu pro vlastní tvorbu tříd, zlepšení ladění kódu a zlepšení instalace modulů pomocí online galerií. S příchodem Anniversary Update v roce 2016 přichází také PowerShell 5.1, verze která přidává možnost správy časové zóny a správu lokálních uživatelů. Současně přichází i verze 6.0, která je založena na .NET Core. Verze Core nepodporuje všechny cmdlety, ale je multiplatformní. Přibyla také podpora SSH.

Současnost:
Reakcí na vývojový framework .NET Core 3.0 bude aktuálně připravovaný PowerShell 7, který je ve verzi preview. Můžeme se těšit na vylepšení výkonu, ale také na spoustu nových API a uživatlé Windows se dočkají API včetně WPF a WinForms. Tým chce také představit způsob, jak snadno nakonfigurovat prostředí PowerShell pomocí politiky tak, aby záznamy z lokálního stroje počítač automaticky odesílal do vzdáleného cíle bez ohledu na OS.




Správa počítačové sítě



Proč vznikla?
Už od vzniku počítače ve 30. letech 20. století, je potřeba aby se o počítač někdo staral a udržoval jej. Takové činnosti říkáme, že počítač někdo spravuje. S postupem doby se počítače rozšířily a začala vznikat pracoviště, kde je i více počítačů, nebo serverů, což je centrální počítač, který poskytuje služby ostatní počítačům. K tomu se také přidá kancelářská technika (tiskárny, VoIP…). Na počítačích běží operační systémy a software. Vše je také propojeno v počítačové síti, aby jednotlivá zařízení mohla komunikovat mezi sebou, nebo i se zbytkem světa.

S kvantem vybavení přichází také možnosti chyb a závad a proto se celá počítačová síť musí udržovat. Jednotlivé nedostatky a chyby se eliminují, připravuje se budoucí rozšíření sítě, monitoruje se stav sítě, probíhá údržba zařízení…

Kdo se o síť stará?
Celou tuto správu sítě řídí a zařizuje IT pracovník na pozici Správce sítě, nebo také Administrátor. Tento člověk dohlíží nad celým intervalem zařízení v síti. Ve větších firmách může být i IT tým, který by ale správně měl mít vedoucího Administrátora. Správce by měl být aktivně vzděláván a měl by být odborníkem ve své profesi. Závisí na něm totiž celkový bezproblémový chod ve firemní síti.

Jste-li v kurzu naučíte se také správně zvládat problematické situace díky pracovním listům.

PowerShell:
Existuje mnoho nástrojů určených ke správě počítačů. Díky PowerShellu mají síťoví správci nové a efektivní možnosti správy počítačů a serverů v síti. Multiplatormnost PowerShellu Core zajistí možnost jeho používání i na vybraných Linux OS a macOS. Bude popsáno v dalších lekcích.






Operační systém



K efektivnímu používání počítače používáme operační systém. Jde o základní programové vybavení počítače. Je to program, který pracuje jako prostředník mezi uživatelem a hardwarem. Při spuštění zařízení je OS zaveden do paměti a zde zůstává v činnosti až do vypnutí zařízení.

Skládá se z jádra (kernellu) a systémových nástrojů. Celkový úkol jádra a nástrojů je tedy zajištění možnosti ovládat zařízení, vytvoření API (aplikačního rozhraní) a těm přidělovat systémové prostředky mezi které se řadí: procesor, operační paměť, paměť a přístup k souborům, využití grafického prostoru v paměti…

Dělení:
OS dělíme podle typu zařízení. Mezi nejvíce užívané patří serverové, desktopové a mobilní. V této lekci si uvedeme pouze aktuální a přední desktopové a serverové OS.

  • Windows 10, Windows Server 2019:
    Klasický OS pro servery a klientské počítače patří Windows. Vyvíjí ho společnost Microsoft a ta se rozhodla jej zpoplatnit. Microsoft také pracuje i na jiných svých produktech a mezi ně patří i PowerShell.

  • Linux Ubuntu, Red Hat Enterprise Linux:
    Typickým příkladem OS otevřené softwarové platformy je Ubuntu. Za instalaci ani aktualizace Ubuntu platit nemusíte. Red Hat Enterprise je již zpoplatněný unixový systém a na jeho vývoji pracuje společnost Red Hat.

  • macOS Mojave:
    Jedná se o produkt firmy Apple, která se chlubí vysokým zabezpečením a kvalitním zpracováním OS.




...

Tvorba kódu



Programování:
Obecně mluvíme o vývoji kódu. Takový kód může obsahovat řádky, znaky, tagy a příkazy a posloupnosti těchto příkazů. To zálež na tom, v jakém jazyce je kód napsán. Celý kód je poté použit k tomu, aby nám ulehčil práci. Ke kódu přibydou další soubory (fotky, dokumenty, videa…) a vznikne tak kompletní program.

Můžeme také tvořit skript, pak říkáme že skriptujeme. Při takové činnosti tvoříme program, který je navržený spíše k automatizaci úloh a výhodou skriptu je, že se nemusí kompilovat, ale pouze interpretovat. To znamená, že se kód nepřeloží do podoby pro PC jako celek (jako to je u programu), ale kód se postupně prochází. Skript je sice poté náročnější na operační paměť, ale není závislý na platformě.

Vývojář:
Osoba, která se věnuje tvorbě kódu říkáme vývojář, někdy programátor. Takový člověk potřebuje mít dobré matematické základy, schopnost abstraktního myšlení a přehled v aktuální vývoji jazyků určených pro vývoj kódu.




Rozdělení programovacích jazyků



Programátor vymyslí algoritmus, který zapíše pomocí příkazů v nějakém programovacím jazyce a vytvoří tak zdrojový kód, který se interpretuje, nebo kompiluje do strojového kódu. Algoritmus je přesně a jednoznačně popsaný postup řešení, určený z kroků (příkazů). Pro jednoduché představení rozdílů mezi kódy, si můžeme uvést, že zdrojový kód je určen spíše pro programátora a cílí na jednoduchost při psaní. Strojový kód je určen pro PC a je reprezentován jako konvence příkazů pro procesor.

Programovací jazyky si můžeme rozdělit podle míry abstrakce na nižší a vyšší a podle způsobu překládání a spouštění.




Míra abstrakce



Vyšší programovací jazyky se přibližují myšlení člověka. Příkazy jsou více intuitivní a programátor může využívat již předem definované funkce. Patří sem například PowerShell, C#, Java, C++, PHP, Perl, Python…

Pokud se chceme naopak přiblížit logice fungování počítače použijeme nižší programovací jazyk. Sem můžeme zařadit například Assembler, Wiring a C. Způsob zápisu a logiky se více blíží strojovému kódu a vývoj v tomto typu jazyka je časově náročnější, nicméně někdy se jedná o jedinou cestu k řešení problematiky.




Způsob překládání a spouštění



Překládané programovací jazyky zajistí možnost rychlého běhu programu. Je ovšem potřeba při vývoji určit, pro jakou platformu program vyvíjíme. Kód se totiž kompletně přeloží (zkompiluje) a my jej pouze spustíme. Řadíme sem C++, Pascal, GO, Cobra…

Interpretované programovací jazyky kód procházejí a ihned provádí příkazy obsažené v něm. Díky tomu není závislý na platformě, na které běží. Patří sem PowerShell (platí jistá omezení – dále v lekcích se k této problematice vrátíme), Ruby, PHP, JavaScript…

Existují také takzvané Hybridní programovací jazyky. Ty využívají jak kompilátor (překladač), tak i interpret. Sem bychom mohli zařadit C#, Javu, Python…




Vysvětlení některých termínů



Třída:
Předpis pro vytváření objektů, má instance (objekty), má svoje vlastnosti, zobecněný datový typ, definuje schopnosti a vlastnosti svých instancí -> i třída může být objekt.

Metoda:
Část programu která se spustí v reakci na obdržení zprávy, může a nemusí vracet hodnotu.

Funkce:
Posloupnost instrukcí, zajišťuje určitou činnost a vrací určitou hodnotu.

Multiplatormnost:
toto slovo označuje použitelnost na více než jedné platformě. Například multiplatformní program se dá používat v Linuxu a Windows.

Objekt:
Instance třídy, vše, co můžeme označit podstatným jménem, má své vlastnosti, děje, události, stav, abstraktní vlastnosti.

Objektově orintované programování (OOP):
Síť objektů, které mezi sebou komunikují (zasílají si zprávy).

Parametr:
Upřesňují zadání, například jak se uživatel, kterého se chystáme vytvořit, bude jmenovat.




Vývojové frameworky



Framework nám ulehčuje práci v tom, že nemusíme řešit typické problémy určité oblasti programování. Vývoj je poté snazší a rychlejší. Jako ukázku si můžeme uvést to, jak se vytvoří nový uživatel v PowerShellu. Zadáme příkaz a ten nám provede vytvoření. My pouze řešíme to, jak se uživatel bude jmenovat (popřípadě heslo…), ale už neřešíme, jak je uživatel uložený, jakým způsobem jsou tato data zapsána a reprezentována, kterých tříd je využíváno a podobně.

PowerShell byl nejprve vystavěn na frameworku .NET Framework, ale postupně se přechází na framework .NET Core. Konkrétně .NET Core 3.0. V následujících lekcích si popíšeme rozdílnost těchto platforem.




.NET Framework a PowerShell



Už od počátku byl PowerShell vyvíjený na platformě .NET Framework. Všechny vydané moduly jsou podporovány pro tuto verzi a její kódování je ASCII. Může běžet na operačních systémech Windows. Současná verze je 5.2 a další vývoj je omezený pouze na chybové záplaty. PowerShell tým se rozhodl, že ho nahradí PowerShellem, který je založený na platformě .NET Core.

Softwarová platforma .NET Framework slouží k vývoji desktopových, mobilních a webových aplikací. Obsahuje knihovny a funkce, kterých může PowerShell založený na této platformě využívat.

Kód napsaný v .NET Framework se pošle do kompilátoru a jeho výsledkem je jednoduchý a nízkoúrovňový kód, který není závislý na platformě a dá se spustit tam, kde je prostředí .NET Framework. K takto zkompilovanému kódu se připojí datové soubory aplikace a vznikne soubor Assembly s příponou .exe nebo .dll. Do strojového kódu se přeloží pouze to, co je nezbytné pro běh aplikace, která se následně spustí.

Součástí .NET Frameworku je také Just-in-time překladač, který při zavolání metody přeloží tuto metodu a výsledek si uloží pro případná další volání. Tak se překládá jen to, co aplikace skutečně využívá a co potřebuje.




.NET Core a PowerShell



Aktuální verze PowerShell Core je 6.2 (pracuje se už na 7.0) a využívá softwarovou platformu .NET Core, díky čemuž je také i multiplatformní. Zatím není implementovaný v žádném OS, ale dá se zdarma stáhnout ze stránky na GitHub, protože se jedná o open-source.

Jde o verzi PowerShellu, která se dá spustit jak na operačních systémech Windows, tak i na vybraných verzích Linuxu, MacOS či na ARM zařízení. Z tohoto důvodu se musela provést úprava jazyka a oproti verzi .NET Framework rozlišuje velká a malá písmena (Key-sensitive) a změna v kódování na UTF-8. Dále například přidává možnost vzdálené komunikace, která je založená na protokolu SSH. Většina modulů se dá doinstalovat díky Compatibility Pack for .NET Core. Tato možnost doinstalování platí pouze pro platformu Windows.

PowerShell Core je jediná verze, která bude dále funkčně vyvíjena a v budoucnu by měla nahradit současný PowerShell .NET Frameworku. Stejně jako u .NET Framework se jeda o softwarovou platformu sloužící pro vývoj aplikací. Open-source platforma Core je vyvíjená firmou Microsoft, která ji umístila na GitHub . Podporuje architektury x64, x86 a ARM a je multiplatformní, můžeme tedy .NET Core nainstalovat na podporovaná zařízení s operačními systémy Windows, Linux a MacOS. Kompatibilitu s .NET Framework, Xamarin, Mono a UWP zajišťuje knihovna .NET Standard, do které také .NET Core spadá. To znamená, že .NET Core může přistupovat k prvkům knihovny .NET Standard a softwarových platforem spadajících pod tuto knihovnu.

Typy nasazení .NET Core:
  • Samostatné nasazení
  • Závislý spustitelný soubor
  • Závislé nasazení
Nasazení .NET Core:
Prvním je samostatné nasazení, které obsahuje nasazení aplikace a prostředí .NET Core. Nasazení používá pouze svoji verzi prostředí .NET Core, a proto nezáleží na tom, zda se prostředí nachází v zařízení, kde aplikaci spustíme. Důležité při vývoji aplikace je určení, pro jaký OS je vyvíjená.

Dalším typem je závislý spustitelný soubor. Tento soubor osahuje nasazení aplikace, ale od samostatného nasazení se liší tím, že neobsahuje svoji verzi .NET Core. Proto se do souboru zapisují vazby na .NET Core v cílovém operačním systému. Stejně jako v předchozím případě musíme zvolit, pro jaký OS se aplikace vyvíjí.

Třetím a posledním typem je nasazení, které je kompletně závislé. Obsahuje pouze kód aplikace bez nasazení, to se vytvoří při spuštění. Aplikace používá verzi .NET Core v OS, ve kterém je spuštěná. Není nutné definovat, pro jaký operační systém aplikaci vyvíjíme.




Příkaz



Jak již jsme se dozvěděli, příkaz je základem kódu. Máme-li se zamyslet nad tím, co je to příkaz v informatice, ukážeme si nejprve příkaz v reálném životě. Maminka řekne synovi ať vynese koš s odpadky. Použije k tomu příkaz: "Davide, dojdi s košem." Díky komunikaci ví David, že je na něj mluveno. David také zjišťuje, že má vykonat nějakou činnost. Dozvídá se, že činnost souvisí s košem. Znázorněno na obrázku č. 1.

Podobně funguje i příkaz v informatice, konkrétně v jazyce PowerShell. Nejčastěji se setkáme s oslovení konzole, ale to nepíšeme. U objektů je to jinak (vysvětleno v dalších lekcí). Do konzole tedy píšeme příkazy a ty provádějí interakci. Můžeme tak například získat informace o aktuálním čase (příkaz v jazyze PowerShell - Get-Date). Znázorněno na obrázku č. 2.




Cmdlet



V PowerShellu se příkazy nazývají cmdlety (vyslovujeme komándlety). Umožňují nám práci v prostředí PowerShell. Pokud si budeme chtít nechat vypsat existující cmdlety můžeme napsat cmdlet Get-Command.

Každý cmdlet má syntaxi Verb-Noun (Sloveso-Podstatné jméno). Cmdlet má Noun (podstatné jméno) v jednotném čísle, a to i v případě, že cmdlet vrací více než jeden objekt (vrátí pole). Např. existuje cmdlet Get-LocalUser, který nám vypíše všechny uživatele, ale cmdlet Get-LocalUsers neexistuje. U většiny cmdletů je snadné určit co bude výsledkem jejich použití. Pokud je verb (sloveso) Set, PowerShell něco nastaví. New vytvoří nový objekt, Remove jej odstraní a Get jej získá pro další práci.

Některé cmdlety jsou požitelné pouze pro Windows. Pokud porovnáme výpis cmdletů ve Windows a např. v Ubuntu, dojdeme zjistíme, že některé chybí. Není to tím, že by tým vývojářů tyto cmdlety zapomněl. Příčin může být více a dále v Lekcích se dozvíte, jaké mohou být důvody.

Seznam užitečných cmdletů:
                            Get-Command #Výpíše příkazy / cmdlety
                            Get-Help #Nápověda
                            Clear-Host #Vyčistí okno konzole - vymaže výpisy a zadené cmdlety
                            Get-Date #Vypíše nám datum a čas
                            Stop-Computer #Vypne počítač
                            Restart-Computer #Restartuje počítač
                            Get-Location #Vypíše aktuální pracovní adresář
                            Get-ChildItem #Vypíše obsah adresáře
                            Get-Service #Vypíše služby a jejich status
                            Get-Process #Výpis procesů
                        



Parametry



Upřesňují zadání cmdletu. Můžeme si tak přizpůsobit výstup (činnosti). Píšeme je za cmdlet a název parametru začíná symbolem pomlčky -. V dalších lekcích je ukázána a pospána práce s parametry tak, abychom se ji postupně naučili ovládat.

V realitě bychom mohli použít opět přirovnání k řeči. Chceme, aby David vynesl pouze obsah koše na papír. Maminka proto musí upřesnit své zadání, a proto řekne: „Davide, odnes koš s papírem.“ David ví, že je mluveno na něj, dále pak že má provést určitou činnost (vynést koš). Maminka také uvedla, že koš, o který se jedná, je na papír. Nedojde pak k nepříjemnosti, že David sice koš vynese, ale bude to koš na plasty.

Pomocí nápovědy zjistíme, jaké parametry s jakýmy jmény může daný cmdlet mít.

Seznam užitečných cmdletů s použitým parametrem:
Další si ukážeme v průběhu Lekcí.
                            Get-Help Get-Process #Napoví nám, jaké paramtery můžeme použít pro cmdlet Get-Process
                            Get-Help Get-Process -Full #Napoví nám více podrobně a rozepsaně, jaké paramtery můžeme použít pro cmdlet Get-Process

                            Get-Command -Type cmdlet #Vypíše pouze cmdlety
                            Get-Command -Type alias #Vypíše pouze aliasy (vysvětleno dále)

                        





© 2019 Copyright: powershell.www3.cz