Automatizace úkonů správy operačních systémů I
Transkript
Automatizace úkonů správy operačních systémů I
AUTOMATIZACE ÚKONŮ SPRÁVY OPERAČNÍCH SYSTÉMŮ I. BC. PETR ŠTĚRBA ORLOVÁ 2013 Název: Automatizace úkonů správy operačních systémů I. Autor: Bc. Petr Štěrba Vydání: 1. Počet stran: 80 Určeno pro projekt: Dílčí kvalifikace – nástroj pro efektivní získání kvalifikace a cesta k rychlé změně kompetencí Číslo projektu: CZ.1.07/3.2.07/03.0122 Vydavatel: Gymnázium a Obchodní akademie, Orlová, p.o. © Bc. Petr Štěrba ©Gymnázium a Obchodní akademie, Orlová, p.o. 3 Obsah Používanésymboly........................................................................................................................4 Úvod......................................................................................................................................................5 1. Úvoddoskriptování..................................................................................................7 1.1Teoretickýúvod....................................................................................................................7 1.2DávkovésouboryCMD,BAT............................................................................................8 1.3Parametryvpříkazech...................................................................................................11 1.4Speciálnípříkazy................................................................................................................13 1.5Podmínkyacykly...............................................................................................................13 1.6Úpravavstupuavýstupu..............................................................................................18 1.7PostupnéspouštěnídávkovýchsouborůCALLversusSTART......................20 1.8Shutdownvdávkovýchsouborech............................................................................21 1.9Použitípříkazůtasklist,taskkillprosprávuprocesů.........................................24 1.10Některédalšíužitečnépříkazyprokomunikacisdiskem...........................26 1.11Používáníproměnnýchvdávkovýchsouborech..............................................28 1.12Úlohykprocvičení..........................................................................................................32 2. ModulWindowsScriptHost...............................................................................34 2.1JavaScriptyajejichtvorba.............................................................................................34 2.2RychlokurzJavascriptu...................................................................................................37 2.3VisualBasicScriptyajejichtvorba.............................................................................42 3. MicrosoftPowerShell............................................................................................46 3.1ZákladnícharakteristikaprostředíPowerShell...................................................46 3.2KonzolaPowerShell..........................................................................................................47 3.3Prácesnápovědou............................................................................................................50 3.4Aliasy.......................................................................................................................................51 3.5OutVariable,OutBuffer....................................................................................................53 3.6Využitírouryproprácisobjekty...............................................................................54 3.7WMI.........................................................................................................................................64 4. AutomatizacesprávyWindowsServer2008................................................67 4.1ZákladnícharakteristikaprostředíPowerShell...................................................67 4.2PrácesobjektyvAD.........................................................................................................72 4.3Administracesystému.....................................................................................................76 3.4Komunikacesregistrem.................................................................................................77 4 Závěr..............................................................................................................................79 Použitáliteratura......................................................................................................................80 Dávkovésoubory Používané symboly Průvodcestudiem–vstupautora,doplněnítextu Informace–cosevkapitoledovíte Klíčováslova Časpotřebnýkestudiukapitoly Důležité–pojmynebopočetnívztahy Příklad–objasněníproblematikynebořešenýpříklad Úkolkzamyšlenínebocvičení Otázkyaúkoly–řešenínajdetevrámciopory Řešeníúkolů–vážousenakonkrétníúkolyaotázky Částprozájemce–rozšířenílátky,pasážejsoudobrovolné Shrnutí–shrnutílátky,shrnutíkapitoly Literatura Korespondenčníúkol 5 6 Dávkovésoubory 7 Úvod Vážení čtenáři, Máte před sebou studijní materiál, který vás má seznámit se základy skriptování v prostředí operačního systému Windows. Měl by vás přesvědčit o tom, že se vyplatí věnovat čas nastudování principů tvorby skriptů v některém z vybraných prostředí a zautomatizovat si činnosti, které se při správě operačního systému často opakují. Seznámíte se také s příklady úpravy registru, s významem nastavení jednotlivých parametrů a jejich vliv na výsledné chování operačního systému. Postupně se vytvořila řada speciálních prostředí, které optimalizují tvorbu skriptů. V tomto studijním materiálu se zaměříme na jednotlivá prostředí a v závěru, až si je vyzkoušíte, můžete je porovnat a vybrat si pro sebe ten, který vám bude nejvíc vyhovovat. Cílem je uvědomit si, že každé prostředí má své výhody i nevýhody. Vyzkoušíte si hotové skripty pro konkrétní zadání a na jejich základě vytvoříte analogické varianty. Konkrétní příklady skriptů zaměříme na úlohy, které patří ke stěžejním činnostem správy operačních systémů. Získáte experimentální zkušenosti, které určitě využijete v pozici Správce operačních systémů. Teoretický materiál bude vložen jako e-learningový kurz do prostředí LMS Moodle, doplněn praktickými úlohami a kontrolními testy. Po průchodu celého kurzu budete mít přehled o základech techniky skriptování v prostředí Windows. Přeji hodně trpělivosti a studijních úspěchů. 8 Dávkové soubory 1.ÚVODDOVYTVÁŘENÍSKRIPTŮ Vtéto kapitole se seznámíte se základy podpory skriptování vprostředí MS Windowsserveramožnostmivyužitívytvořenýchskriptů.Uvedeteapopíšete si dvě základní prostředí, kterými disponuje Windows Server 2008 pro spouštěnískriptů.Vúvoduzaměřítepozornostnaskriptypsanéaspouštěné zpříkazovéřádky–dávkovésoubory–BAT. Klíčová slova Skript, příkazový preprocesor, modul WSH, dávkový příkaz CMD, BAT, dávkový soubor,řádkovýpříkaz,COPY,DIR,IF,FOR,TYPE,MORE,CD,MD,RD,DEL 1.1 Proč vytvářet skripty Skripty umožní zjednodušit a urychlit běžné úkony spojené se správou operačního systému. Mezi nejběžnější patří činnosti spojené s konfigurací počítačů, správou uživatelů, skupin a organizačních jednotek, údržbou disků, adresářů a souborů. Významné je použití přihlašovacích skriptů, které se spouštějí v okamžiku přihlášení uživatele k počítači, umožní mapovat síťové disky, nastavit tiskárnu, aplikace apod. Pomocí skriptů lze automatizovat také sledování procesů a služeb a výkon jednotlivých částí počítače. Můžete automaticky řídit protokoly událostí (logy). Operační systém Windows Server 2008 podporuje dvě prostředí pro spouštění skriptů: Příkazový procesor – v tomto prostředí se interpretují příkazy jazyka dávkových souborů (s příponou .bat nebo .cmd). Přestože dávkové soubory se spojují se staršími OS, stále se používají. Modul WSH (Windows Script Host) - kde se spouští skripty napsané v jazycích VBSript a JScript, které se mohou použít pro správu objektů z adresáře Active Directory (komunikací s rozhraním ADSI) a pro spolupráci s WMI , když potřebujeme přistupovat k systémovým prostředkům. Ke spouštění skriptů obsahuje WSH programy WScript.exe (spustí skript jako proces systému) a CScript.exe (spustí skript jako proces konzoly). Proces vytvoření a spuštění skriptu ve WSH: V poznámkovém bloku napíšeme příkazy skriptu a uložíme jako textový soubor pokus Otevřeme adresář s vloženým skriptem Spustíme WScript pokus.vbs (příp. CScript pokus.vbs ) Dávkovésoubory 9 1.2 Dávkové soubory CMD , BAT Dávkové soubory jsou neformátované textové soubory obsahující příkazy z příkazové řádky s příponou cmd nebo bat. Po spuštění jsou jednotlivé příkazy interpretovány příkazovým procesorem. Předpokládá se znalost základních příkazů příkazové řádky. CD, MD, RD, TYPE, ECHO, COPY, DEL a práce s * konvencí, příkaz NET , TREE Přesto se zaměříme v úvodu na některé vlastnosti a parametry těchto příkazů, které můžeme pak využít v dávkových souborech. Viz následující ukázky souboru pokus.bat Potlačí se výpis příkazů Stejného efektu docílíme jemnou úpravou druhého příkazu. > znamená přesměrování výpisu místo na obrazovku, do souboru vystup1.txt < znamená přesměrování vstupu na soubor vystup1.txt V dávkových souborech jsou: používány: Základní řádkové příkazy (dir, copy, del, cd, md, rd, type apod.) Parametry či proměnné Speciální příkazy 10 Dávkové soubory Podmínky a cykly Příkazy přesměrování Příkazy filtrování Předpokládaná doba prostudování a vyzkoušení 10 hodin Příkaz COPY lze doplnit řadou parametrů (Vyzkoušejte si !!!) COPY [/V] [/N] [/Y | /-Y] [/Z] [/A | /D ] zdroj [/A | /B] [+ zdroj [/A | /B] [+ ...]] [cíl [/A | /B]] zdroj /A /B /D cíl /V /N /Y /-Y /Z Určuje soubor nebo soubory určené ke kopírování. Určuje textový soubor v kódu ASCII Určuje binární soubor Určuje, že cílový soubor bude vytvořen dešifrovaný. Určuje adresář nebo název nového souboru (souborů). Ověří, zda nové soubory byly správně zapsány. Při kopírování souboru s názvem ve formátu jiném než 8.3 použije krátký název souboru, je-li k dispozici. Vypne potvrzování přepsání existujících cílových souborů. Zapne potvrzování přepsání existujících cílových souborů. Kopíruje síťově sdílené soubory v restartovatelném režimu Přepínač /Y můžeme nastavit pomocí systémové proměnné COPYCMD. Toto nastavení lze pak změnit přepínačem /-Y na příkazovém řádku. Výchozí nastavení je dotazování před přepsáním. BACHA!!! Nelze použít v dávkovém skriptu. Chceme-li použít více zdrojů - spojíme je znakem + copy vstup1.txt +vstup2.txt celyvstup.txt (obsah obou vstupů se zkopíruje do souboru celyvstup.txt) - použijeme hvězdičkovou konvenci copy *.txt c:\texty (pokud existuje adresář texty, zkopírují se sem všechny textové soubory s příponou txt, jinak se obsah všech textových souborů nakopíruje do souboru texty) Příkaz START otevře např. nové okno příkazového řádku (Vyzkoušejte si !!!) START dir Spojování příkazů Pomocí symbolů & a | lze spouštět více příkazů postupně v rámci jednoho zadání: prikaz1 & prikaz2 spustí příkaz 1 a poté příkaz2 prikaz1 && prikaz2 spustí příkaz 2, pokud je příkaz1 úspěšně ukončen prikaz1 || prikaz2 spustí příkaz 2, pokud není příkaz1 úspěšně ukončen Úspěšné či neúspěšné ukončení programu je dáno návratovým kódem. Každý program může při ukončení předat operačnímu systému („vrátit“) číslo, tzv. návratový kód. Platí, že hodnota 0 znamená úspěšné ukončení programu, nenulová hodnota chybu. Význam Dávkovésoubory 11 nenulových návratových hodnot není dán a záleží jen na programátorovi, jak hodnoty využije (popis je součástí dokumentace programu) Příkaz NET má mnoho významů Net accounts Net computer výpis nastavení uživatelských účtů slouží pro přidání nebo zušení počítačového účtu (na řadiči domény) Net group lze použít jen na řadiči domény Net localgroup výpis, přidání zrušení lokálních skupin, přisání uživatele do skupiny Net user výpis, přidání zrušení uživatelských účtů Net use slouží k mapování (připojení) síťového disku, sdílené oblasti na disku. Parametr PERSISTENT znamená připojit při příštím přihlášení Příklady Net user vypíše přehled uživatelských účtů Net user Pavel zobrazí informace o uživateli Pavel Net user Pavel heslo nastaví uživateli Pavel nové heslo „heslo“ Net user Pavel * vyzve uživatele Pavel k zadání nového hesla Net user Pavel /add přidá (vytvoří) uživatele Pavel Net user Pavel /del odstraní uživatele Pavel Net localgroup technici zobrazí členy lokální skupiny technici Net localgroup technici /add přidá (vytvoří) lokální skupinu technici Net localgroup technici /del odstraní lokální skupinu technici Net localgroup technici pavel /add přidá uživatele Pavel do lokální skupiny technici (analogicky s /del) Net use q: \\192.168.5.2\zpravy připojení sdílené složky zprávy jako síťového disku q: Net use q: /DELETE odpojení síťového disku q: 12 Dávkové soubory \\192.168.5.2\zpravy Úloha k procvičení: 1. Vytvořte textové soubory Vstup.txt obsahující text „Budeme psat skripty“ (nepoužívejte diakritiku z důvodu rozdílného kódování) a uložte do vytvořeného adresáře Texty . Pomocí příkazu Copy vytvořte kopii souboru Vstup.txt do souboru Vystup.txt Příkazem Type ověřte, že soubor Vystup.txt má shodný obsah se souborem Vstup.txt Vytvořte dávkový soubor Presun.bat, do kterého vložíte oba vyzkoušené příkazy z předchozích bodů a požadované dva kroky spustíte jako jednu dávku. 2. Ověřte si rozdíl mezi příkazy TYPE a MORE Do souboru Win.txt si vložte výpis adresáře C:\Windows dir C:\Windows > Win.txt Obsah souboru Win.txt vypište příkazem Type Win.txt Obsah souboru Win.txt vypište příkazem More < Win.txt 1.3 Parametry v příkazech Použití parametru ve skriptu mi umožní zobecnit vytvářený skript a použít jej pro vybrané údaje. Upravíme dávku pokus.bat (viz str. 8) tak, že místo konkrétních názvů souborů vložím parametry (%číslo - %1, %2), které jsou po spuštění dávky nahrazeny konkrétními soubory, zvolené při jejím spouštění; v našem případě Dávkovésoubory 13 vstup.txt a vystup.txt. Takže skript můžeme používat pro libovolnou dvojici souborů. @echo off type %1 > %2 Volání: pokus vstup.txt vystup.txt Do parametru%1 se vloží vstup.txt Do parametru %2 se vloží vystup.txt Cvičení 1. Sestavte skript, který vytvoří uživatele se zadaným jménem, heslem a skupinou, do níž bude zařazen. @echo off net user %1 %2 /add net localgroup %3 /add net localgroup %3 %2 /add Uložte pod názvem uziv.bat Volání skriptu uziv Pavel student studenti 2. Sestavte skript, který vymaže soubor se zadaným jménem. @echo off del %1 Uložte pod názvem soub.bat Volání skriptu soub vstup.txt 3. Sestavte skript, který vymaže 2 soubory se zadaným jménem. @echo off del %1 del %2 Uložte pod názvem soub2.bat Volání skriptu soub vstup.txt vystup.txt 4. Sestavte skript, který odstrani vybraného uživatele z vybrané skupiny @echo off net localgroup %2 %1 /del Uložte pod názvem uziv_ze skupiny.bat Volání skriptu soub vstup.txt vystup.txt 14 Dávkové soubory 1.4 Speciální příkazy Goto: navesti umožňuje narušit pořadí vykonávaných příkazů Přesměruje příkazový procesor na řádek označený navesti (na řádku nesmí být nic jiného) Soubor pokus .bat @echo off type %1 > %2 @echo on goto:Konec more <%2 :Konec echo Končím Volání: pokus vstup.txt vystup.txt Vynechá výpis souboru vystup,txt (skočí na poslední příkaz s návěštím :Konec) Používá se v souvislosti s podmínkami, kdy chceme usměrnit další výběr příkazů. 1.5 PODMÍNKY A CYKLY If podmínka. příkaz1 . else příkaz2 Vyhodnotí se podmínka, a pokud je splněna, vykoná příkaz1, v opačném případě vykoná příkaz2 a pokračuje na nový řádek Oddělovací znak je tečka. Např. If not exist vystup.txt. (echo „soubor neexistuje“.) else echo „soubor existuje“ if slovo1==slovo2. echo “slova jsou stejná“ Ahoj není totéž jako ahoj if /i slovo1==slovo2. echo “slova jsou stejná“ Ahoj je totéž jako ahoj If errorlevel 1. (echo “chyba“.) else echo “OK“ Parametr porovnání může být nahrazen symboly equ neq rovná se nerovná se lss leq < <= gtr geq > >= Vytvořte dávku podmínka.bat, která vypíše soubor, pokud existuje, jinak oznámí, že soubor neexistuje. Dávkovésoubory 15 Řešení – varianta 1: Mezi návěštím a tečkou musí být mezera @echo off if not exist vystup.txt. (goto :Konec .) else (type vystup.txt & goto :T) :Konec Echo Soubor neexistuje Exit (ukončí se program cmd.exe) :T Echo uspesny tisk Řešení – varianta 2: neukončím příkazový řádek @echo off if not exist vystup.txt. (goto :Konec .) else (type vystup.txt & goto :T) :Konec Echo Soubor neexistuje Goto :K (skok na návěští :K) :T Echo uspesny tisk :K S parametrem (pokud existuje soubor, vypiš ho, jinak napiš „Soubor neexistuje“ @echo off if exist %1. (type %1.) else echo soubor neexistuje Cvičení: 1. Napiš dávkový soubor, který vytvoří daný adresář, pokud neexistuje. Použij vhodně parametr. 2. Napiš dávkový soubor, který vymaže daný adresář, pokud existuje. Použij vhodně parametr. FOR %% in (seznam) do příkaz Opakuje se příkaz pro všechny objekty ze seznamu for %f in (*.bat*.cmd) do type %f vypíše obsah všech dávkových souborů (použití na řádce) for %%f in (*.bat *.cmd) do type %%f vypíše obsah všech dávkových souborů (použití ve skriptu) Pozn. *. bat *. cmd - všechny soubory s příponou bat v aktuálním umístění - všechny soubory s příponou cmd v aktuálním umístění type %f - vypíše soubor, jehož jméno je uloženo v proměnné %f (postupně se do ní vkládají soubory s uvedenými příponami z aktuálního umístění) 16 Dávkové soubory Další příkazy v dávkách Echo vypíše řádek @echo potlačí výpis řádku Rem představuje poznámku (neinterpretuje se) Pause pozastaví interpretaci dávkového souboru a čeká na stisk lib. klávesy Call slouží k volání dávkového souboru z jiného dávkového souboru /? Vypíše nápovědu Parametry v příkazu cyklu for for for for %%S in /D %%S /L %%S /f %%S (sada souborů), např.: for %%S in (*.txt) in (sada adresářů) in (posloupnost hodnot) in (textový soubor) Ilustrující příkazy: 1. Vytvořme dávkový soubor Davka1.bat, který vypíše všechny textové soubory. Řešení: @echo off echo vypis textovych souboru for %%f in (*.txt) do type %%f Dávkovésoubory 17 2. Vytvořme dávkový soubor Davka2.bat, který vytvoří skupinu adresářů Test1 až Test10 Řešení: @echo off for /L %%i in (1,1,10) do md test%%i 3. Vytvořme dávkový soubor Davka3.bat, který vymaže vřechny adresáře začínající písmenem T Řešení: @echo off for /D %%i in (T*) do rd %%i 4. Dávka z úlohy 2 sice splní svůj účel, ale není univerzální. Přepíšeme ji do podoby, aby ji bylo možné spouštět s parametry a ovlivnit tak název a čísla adresářů, např. místo názvu Text chceme dát Auto a rozsah 1 až 10 nahradit rozsahem 10 až 15. Uložíme ji pod názvem adresare.bat. Adresare.bat budeme volat příkazem adresare.bat auto 10 15 Dávka vytvoří postupně adresáře auto10, auto11, auto12 až auto 15. Cyklus for upravíme následovně: for /L %%i in (%2,1,%3) do md %1%%i Naučíte se využívat hodnoty parametrů dávky v kódu. Parametry se označují takto: %1, %2, %3 atd. Existuje i %0, což je vlastní název dávky. Dávku adresare.bat můžeme ošetřit sledováním zadání parametrů (když nezadáme některý, případně všechny parametra, vložíme skok na návěští CHYBA1 ). Uložte ji pod názvem adr_osetreno.bat @echo off if "%1"== "" goto CHYBA1 if "%2"== "" goto CHYBA1 if "%3"== "" goto CHYBA1 for /L %%i in (%2,1,%3) do mkdir %1%%i goto KONEC :CHYBA1 echo Spoustejte: %0 adresar cislo cislo :KONEC 18 Dávkové soubory 5. Vytvořte dávku Davka4.bat, která spočítá soubory daného typu v adresáři Řešení: @echo off echo Vypis poctu souboru echo =================== if "%1"=="" goto CHYBA :ZACATEK if "%1"=="" goto KONEC set pocet=0 for %%B in (%1) do set /a pocet=%pocet+1 echo Pocet souboru %1 je %pocet% shift Zabezpečí pohyb v parametru seznam goto ZACATEK :CHYBA echo Spousteni: %0 specifikace souboru, např %0 *.exe *.bat :KONEC 6. Vytvořte dávku Davka5.bat, která využije v cyklu přepínač /f , který umožní zpracování údajů ze zadaného textového souboru za přepínačem /f může být uvedeno následující: eol=x – za konec řádku je považován i znak x (cokoliv za x bude ignorováno, např. i celý řádek) skip=n – vynechá prvních n řádků souboru delims=x – za x může být dosazen oddělovač sloupců, například delims=; tokens=a,b,c – čísla sloupců, které mají být zpracovány Vzorový zápis for cyklu s přepínačem f for /f “eol=# delims=; tokens=1,3” %%A in (soubor.txt) do příkaz konec řádku je # – cokoliv za tímto znakem je ignorováno oddělovačem je středník (;) zpracovány budou sloupce 1 a 3 obsah prvního sloupce se uloží do proměnné %%A, obsah třetího sloupce do proměnné %%B, atd. podle abecedy (podle počtu zpracovávaných sloupců) Dávkovésoubory 19 soubor.txt dávkový soubor cyklus-soubor.bat ukázka volání vytvořené dávky cyklus-soubor.bat 1.6 Úpravy vstupu a výstupu a) Přesměrování vstupu (<) a výstupu (>) Type < soubor1.txt vypíše obsah souboru Soubor1.txt (zdrojový soubor) Type soubor1.txt > soubor2.txt vypíše obsah souboru Soubor1.txt do souboru2.txt (v podstatě kopie) Type soubor1.txt >> soubor2.txt přidá obsah souboru Soubor1.txt k souboru2.txt For %f in (*.txt) do type >>petr.txt zkopíruje obsah všech textových souborů v aktuálním umístění do jednoho souboru petr.txt 20 Dávkové soubory b) Filtrování a třídění v dávkových souborech more find sort Vypisuje informace po stránkách Vyhledává v textu zadaný řetězec Řadí soubory podle abecedy Vypíše řádek ze souboru vstup.txt, kde se nachází zadaný řetězec výpis bez |Sort Dávkovésoubory Výpis se |sort 21 Setříděno podle 1. Sloupce výpisu Setříděný výpis souboru vstup.txt 1.7 Postupné spouštění skupiny dávkových souborů - Call versus Start Vytvoříme soubor Spust.bat a spustíme call davka1.bat call davka2.bat call davka3.bat Případně přidáme cestu k souboru Analogicky lze postupovat tak, že soubor Spust.bat bude vypadat takto Efekt bude stejný. start /b davka1.bat start /b davka2.bat start /b davka3.bat Případně přidáme cestu k souboru A přece jen je tu podstatný rozdíl! Pokud se stane, že některý z dávkových souborů se úspěšně nevykoná a nevyšle hlášku „exit“, pak v případě použití příkazu call by soubor Spust.bat byl ukončen a další dávkové soubory by se už nespouštěly. V případě použití varianty s příkazem start /b se spustí i dávkové soubory za neúspěšným dávkovým souborem, takže dávkový soubor spust.bat se vždy vykoná až do konce. 22 Dávkové soubory 1.8 Příkaz Shutdown v dávkových souborech: Příkaz slouží k vypnutí počítače a může být doplněn řadou parametrů, které ošetří úkony spojené s vypínáním PC. Přehled parametrů získáte použitím příkazu shutdown /? Přehled možných důvodů, které lze zadat pro vypínání nebo restart počítače E U C P očekávaný důvod neočekávaný důvod uživatelem definovaný důvod plánovaný důvod Dávkovésoubory 23 Použití příkazu shutdown v konkrétních situacích (vložením do dávkových souborů si můžete připravit určité varianty dopředu, abyste si nemuseli pamatovat složité kombinace parametrů) Pravidelný restart počítače plánovaný na 23:50, bez upozornění C:\>at 23:50 /every:M,T,W,Th,F shutdown.exe /r /m \\jmeno_pc Restart počítače na síti s vynuceným zastavením aplikací a zprávou pro uživatele s nastavením časového limitu pro ukončení práce uživatelů na 3 minuty (180 sec.) C:\>shutdown.exe /m \\jmeno_pc /r /f /c „Po 3 minutách bude počítač restartován, uložte si, prosím, svou práci. Děkuji Administrátor“ /t: 180 (název počítače lze parametrizovat při vkládání do dávkového souboru) Vypnutí počítače v síti s vynucením zastavení všech běžících procesů C:\>shutdown.exe /m \\jmeno_pc /s /f Zvolit důvod Restart počítače v síti s vynucením zastavení všech běžících procesů C:\>shutdown.exe /m \\jmeno_pc /r /f 24 Dávkové soubory Uvedení místního počítače do klidového režimu a vynutit si zastavení běžících procesů C:\>shutdown.exe /m \\jmeno_pc /h /f Odhlásit uživatele ze zadaného počítače a vynutit si zastavení běžících procesů C:\>shutdown.exe \\jmeno_pc /l /f Použitím příkazu C:\>shutdown /i se zobrazí grafická konzola využitelná pro správu vzdálených počítačů (grafické řešení předchozích situací) Dávkovésoubory 25 1.9 Použití příkazů tasklist, taskkill pro správu procesů Při vytváření dávkových souborů a skriptů pro automatické restartování počítače se může stát, že potřebujeme ukončit proces, který zůstal „viset“. K tomu se hodí příkaz taskkill, který je schopen ukončit vybraný proces. Pro výběr slouží řada parametrů. Filtrování 26 Dávkové soubory Například: taskkill /IM notepad.exe ................ ukončí program zadaný názvem notepad.exe taskkill /IM cmd.exe /T ................ ukončí program a všechny následné procesy taskkill /PID 3672 /PID 2996 /PID 7412 /T ukončí procesy s daným PID (přehled spuštěných procesů včetně PID získáme příkazem tasklist ) taskkill /F /FI “PID ge 1000 “ /FI “Windowtitle ne untitle* “ ............. násilně ukončí procesy s PID >=1000 a okna se záhlavím začínajícím untitle taskkill /F /FI “MEMOSAGE gt 50000“ ............násilně ukončí procesy, které zabírají v paměti víc než 50000kB ukázka výpisu tasklist Dávkovésoubory Příkaz TASKLIST, TASKKILL - příklady řízení procesů Tasklist výpis všech běžících procesů Taskkill násilné zastavení („shození“) vybraného procesu Taskkill / PID 4558 27 „shodí“ proces s PID 4558 Cvičení : Spusťte Calc.exe, vypište si běžicí procesy, zjistěte PID procesu Calc.exe a pomocí Taskkill ho ukončete. Příkazem Tasklist ověřte úspěšnost. 1.10 Některé další užitečné příkazy pro komunikaci s diskem VOL – vypíše název a sériové číslo jednotky SUBST umožní přiřadit písmeno určité oblasti disku Label Subst Q: d:\Dokumenty Subst Q: d:\Dokumenty /D Odstraní přiřazení písmena umožní pojmenovat svazek Fsutil použijeme pro získání informací o disku, pozor je třeba mít oprávnění správce OS fsutil fsinfo statistics C:.|clip Recover Informace vloží do paměti ‐ clipboardu použijeme pro pokus o obnovení poškozených dat. Používá se pro část disku, pro vybraný soubor (pro celý disk použijte chkdsk) RECOVER C:\MujSoubor.docx Diskpart – slouží k rozdělení disku a převede vás do režimu, který ovládáte zadáváním příkazů. Jejich přehled získáte příkazem Help (viz Obr 1). Prostředí uzavřete příkazem Exit, 28 Dávkové soubory Obr.1 Cvičení: Vytvořme dávkový soubor vypisující informace o PC @echo off echo Jmeno pocitace: hostname echo =============== echo Verze operacniho systemu: ver echo =============== echo Nastaveni site: ipconfig /all Dávkovésoubory 29 1.11 Používání proměnných v dávkových souborech Vlastnosti příkazové řádky stejně jako celkové chování celého operačního systému je ovlivňováno nastavením proměnných. Rozlišujeme systémové a lokální proměnné. Systémové proměnné charakterizují chování systému, tedy i příkazového řádku, jako celku; zatímco lokální proměnné se vztahují k chování jednotlivých systémových objektů. Systémové proměnné Mohou je využívat všechny procesy OS Hodnoty jsou nastaveny operačním systémem Změnu hodnot může provádět jen správce systému (s příslušným oprávněním) Lze je použít v přihlašovacích skriptech V registru je najdeme v oddíle HKEY_LOCAL_MACHINE Lokální proměnné Vlastní jen konkrétnímu uživateli Nastaví chování celého systému pro přihlášeného uživatele (v profilu) Nastavení hodnot najdeme v registru, oddíl HKEY_CURRENT_USER Podle priority lze proměnné zařadit do 6 kategorií: 1. Integrované systémové proměnné – nejvyšší priorita 2. Systémové proměnné uložené v registru v oddíle HKEY_LOCAL_MACHINE 3. Místní proměnné z registru v oddíle HKEY_CURRENT_USER 4. Všechny proměnné prostředí a cesty určené obsahem souboru Autoexec.bat 5. Všechny proměnné prostředí a cesty nastavené v přihlašovacím skriptu (pokud existuje) 6. Proměnné z použitého skriptu nebo dávkového souboru V prostředí příkazové řádky dědí jednotlivé objekty hodnoty proměnných z nadřazeného programu. Můžeme tedy změnit jejich hodnotu, aniž by došlo ke změně prostředí nadřazené aplikace. Proměnných existuje velké množství, zaměříme se jen na některé a především na způsob jejich použití v skriptech a programové nastavení jejich hodnoty. 30 Dávkové soubory Vybrané systémové a místní proměnné OS Windows Server: Místní proměnné ¨Proměnná %USERNAME% %USERPROFILE% %ALLUSERSPROFILE% %USERDOMAIN% %CD% %LOGONSERVER% %APPDATA% Obsah jméno přihlášeného uživatele. Cesta k profilu aktuálního uživatele Cesta k profilu všech uživatelů. Název domény, do níž patří aktuální uživatel Aktuální adresář Aktuální doménový řadič Výchozí umístění dat aplikací Systémové proměnné ¨Proměnná %HOMEDRIVE% %HOMEPATH% %PATH% %SYSTEMROOT% %SYSTEMDRIVE% Obsah Vrátí písmeno připojené k domovskému adresáři Cesta k domovskému adresáři uživatele Cesta pro vyhledávání spustitelných souborů Kořenový adresář serverového systému jednotka označující kořenový adresář serverového systému %WINDIR% Umístění systémového adresáře %ERRORLEVEL% Nenulová hodnota, signalizace chyby %COMSPEC% Cesta ke spustitelným souborům %OS% Typ operačního systému %COMPUTERNAME% Jméno počítače Nastavení hodnoty proměnné Set název proměnné = hodnota SET PATH=c:\windows;\system32; PATH% Propojení proměnné path s novým obsahem nový obsah se přidá k původnímu Dávkovésoubory 31 Odkaz na proměnnou v dávkovém souboru %JménoProměnné% název proměnné umístíme mezi symbol procent, tím se vytvoří odkaz na hodnotu proměnné Přehled a nastavení systémových proměnných lze vypsat příkazem SET Ukázka: Použití přepínačů při práci s proměnnou Proměnné často obsahují číslo, s nimiž lze provádět aritmetické operace. Provedení výpočtu zajistíme použitím příkazu set /a 32 Dávkové soubory Syntaxe: set /a “x=a+b” ◦ Do proměnné x se vloží součet a+b (za předpokladu, že někde výše v dávce byly proměnné a, b definovány) Pro výpis proměnné na monitor použijeme: echo %x% Aritmetické operace: +, -, *, / (celočíselné dělení), % (zbytek po dělení) Vstup uživatele v průběhu spuštěné dávky – SET /P Hodnoty proměnných lze zadávat i z klávesnice v průběhu dávky. Příkaz: set /p promenna=vyzva Uživatel bude vyzván k zadání proměnné zobrazením textu vyzva Např.: set /p x=Zadej cislo: Příklad Vyzkoušíme nahradit konkrétní soubory proměnnou (místo parametů) ve výše @echo off set soub1=vstup.txt set soub2=vystup.txt type %soub1% > %soub2% goto :Konec more < %soub2% :Konec echo "Hotovo bez vypisu" Příklad Vytvořme dávkový soubor, který bude počítat a vypisovat průměr daného počtu zadávaných čísel. Výpis bude s přesností na 2 desetinná místa. Řešení: @echo off Set soucet = 0 Set /P počet = „Zadej počet zadávaných hodnot“ For /L %%i in (1,1,počet) do (set/p cislo = „zadej %%i. cislo“ & set/a „soucet = soucet + %cislo%“ ) Set /a „prumer=soucet*100/počet“ Echo Prumer zadanych hodnot je %prumer:~0,-2%,%prumer:~-2%. Dávkovésoubory 33 1.12 Úlohy k procvičení 1. Napište podmínku, která zabezpečí, že pokud při spuštění předchozího příkazu došlo k chybě, vypište: „Chyba č: číslo chyby“. Pokud operace proběhla bez chyb, vypíše se: příkaz proveden“. Použijte v dávce po příkazu a) vypiš soubor zaci.txt z aktuálního umístění b) otevři adresář zaci v aktuálním umístění. 2. Napište skript, který se uživatele zeptá na jméno, příjmení a rok narození a následně tyto údaje pro kontrolu vypíše na obrazovku a) pod sebe b) vedle sebe 3. Napište dávku, která jako vstupní parametry zpracuje: jméno adresáře a počet, kolik má být adresářů. Skript následně vypíše zprávu: „Chcete vytvořit X-krát adresář se jménem jméno“ 4. Napište skript, který se zeptá na jméno souboru. Dávka ověří, zda zadaný soubor existuje. Pokud ne, vytvoří v aktuálním adresáři prázdný soubor se zadaným jménem. 5. Napište skript, který se uživatele zeptá, zda chce počítač restartovat nebo vypnout. Podle jeho rozhodnutí úkon proveďte. 6. Napište dávkový soubor, který vytvoří zadaný počet lokálních uživatelů kurz1, kurz2 atd., všichni budou mít stejné heslo „skoleni“, přiřadíme se do vytvořené lokální skupiny kurzisté. Použijte vstupní parametr počet. 7. Napište dávkový soubor, který vytvoří zadaný počet adresářů v lokálním umístění test1, test2 atd., Pokud některý z nich existoval, bude smazán a nově vytvořen. Použijte vstupní parametr počet. 8. Vytvořte skript pro vytvářená uživatelských účtů jmeno.prijmeni s příslušným heslem. Zdrojové informace najdou v textovém souboru uzivatele.txt se strukturou řádku : jméno, příjmení, e‐mail, heslo. Na závěr skript vypíše text „Bylo vytvořeno …. uživatelů“ a přehled uživatelů vypíše. Pro zájemce 1. 2. Vytvořte dávku, která vymaže obrazovku (cls), vypíše nápis „Dnes je“ echo) a napíše aktuální datum a čas bez možnosti změny (date /t, time /t) Nejprve si vyzkoušejte napsat jednotlivé příkazy bez použití dávky. V poznámkovém bloku vytvořte dávku a uložte dávku pod názvem dnes.bat Vytvořte dávku, která sečte dvě čísla, zadaná uživatelem z klávesnice, výsledek zobrazí takto 34 Dávkové soubory 3. Vytvořte dávku, která vygeneruje náhodné číslo od 0 do 9. Uživatel náhodně jedno číslo hádá a program vypíše, zda uživatel uhádl a vygenerované číslo vypíše. Použijete proměnnou %random% , která obsahuje náhodné číslo z intervalu 0 až 32767 set /a los = %random% – proměnná los bude naplněna náhodně vygenerovaným číslem set /p los=Zadej cislo – proměnná s2 bude naplněna z klávesnice echo %los% – výpis proměnné s2 if %s1% EQU %s2% – jestliže se rovná (čísla) Pokud uživatel uhodne, skript ho pochválí a skončí. Pokud hádání není úspěšné, vypíše se otázka – Chceš pokračovat? A/N a my zvolíme variantu; pokud budeme opakovat, skočíme a další hádání (pc nevybírá nové číslo, uživatel vybere jiné číslo). Ke koncovému výpisu přidáme, na který pokus jsme uhodli, (A můžeme soutěžit.) Shrnutí Pokud jste se dostali k tomuto odstavci, jste už docela zběhlí ve vytváření dávkových skriptů. Ne že by už nebylo co zlepšit. Ale solidní základy byly položeny a určitě se velmi dobře zorientujete i v nějakém dalším skriptovacím jazyce. Takže Vám blahopřeji a můžeme to hned zkusit v následujících kapitolách. Java a VisualBasicScriptyajejichtvorba 35 2.MODULWINDOWSSCRIPTHOST Vtéto kapitole se seznámíte stvorbou Javascriptů a VisualBasic scriptů a se způsobemjejichvolánívprostředímoduluWSH.Uvedemesiidalšímožnosti, kterébystemohlipoužívatkeskriptování,např.CsScriptypokudsevyznáte vjazyceC. Klíčová slova Skript,jazykHTML,párovéanepárovétagy,modulWSH,jazykJavaScript,JavaScript Nyní se seznamte s variantami prostředí, v nichž můžeme vytvářet skripty spouštěné pomocí Windows Script Host 2.1 JavaScripty a jejich tvorba JavaScript je jazyk pro vytváření skriptů, které jsou většinou spojeny s webovou stránkou, a je prostředkem pro tvorbu interaktivních stránek. Vložené skripty dávají funkčnost tlačítkům, textovým polím a dalším prvkům Vytvářet grafické efekty, animace, dynamické nabídky. Skriptovací jazyk, který umožňuje tvůrcům webových stránek vytvořit mnohem interaktivnější stránky. Jsou jím obvykle ovládány různé interaktivní prvky GUI (tlačítka, textová políčka) nebo tvořeny animace a efekty obrázků. V prostředí Windows Server jsou JavaScripty spouštěny pomocí nástroje WSH. Abychom mohli skriptovat, je nutné poznat základní prvky pro tvorbu skriptu, JavaScript běží na straně klienta (tzn. spustí se až po stažení www stránky do prohlížeče), skripty z jiných jazyků běží na straně serveru, spustí ještě před stažením do prohlížeče. Java a VisualBasicScriptyajejichtvorba 36 Jak a kde vytvořím JavaScript? Podobně jako prostředí HTML nepotřebuje ani JavaScript žádný speciální program. Můžete ho napsat v prostředí Poznámkového bloku a doplnit řídícími znaky, aby mohl být interpretován webovým prohlížečem. JEN HO MUSÍTE POVOLIT !!! Jak? v prostředí Mozilla Firefox v prostředí Internet Explorer Možnosti Obsah Nástroje Možnosti Internetu Zabezpečení Vlastní úroveň Skriptování Naučte se základy skriptování v JavaScriptu Vychází z jazyka Java a z filosofie HTML (práce s tagy) Příklad jednoduchého skriptu – jednoduchý výpis textu na stránku Aktivace interpretu JavaScriptu <script language="javascript" type="text/javascript"> <!-document.write('Začínáme skriptovat v JavaScriptu!'); Text v jednoduchých uvozovkách --> </script> Tyto tagy říkají prohlížeči, který nemá povoleny Java‐scipt, aby tuto část přeskočil Umístění v html souboru Mezi tagy <head> </head> ............. hlavička souboru Mezi tagy <body> </body> .............. tělo souboru Java a VisualBasicScriptyajejichtvorba 37 Skript spojený s událostí – spustí se, až nastane tato událost ‐ onClick <h2 onClick ="alert('Vytvořili jste nadpis o velikosti h2!');"> zde klikni!!!</h2> Vložení skriptu odkazem Pokud máte skript, který chcete používat na vězším počtu stránek, napíšete textový soubor, uložíte s příponou js a vkládáte jako odkaz <script language="javascript" style="text/javascript "src="mujskript.js"></script> JavaScript v HTML souboru-v textovém prostředí vytvořím soubor a uložím jako index.html (výpis textu v okně) <html> <head> <title> moje stránky</title> </head> <body> <script language="javascript" type="text/javascript"> reakce <!-prompt('Jak se jmenuješ?',‘zapiš své jméno'); --> </script> </body> </html> Skript.js má strukturu <!-document.write('Začínáme skriptovat v JavaScriptu!'); --> (příkazy mezi <!-- a -->) Java a VisualBasicScriptyajejichtvorba 38 2.2 Rychlokurz JavaScriptu Průchod prostředím rozdělíme do krátkých oddílů. Pokud umíte programovat v jazyce C, bude vám připadat leccos známé. Takže pokud už něco umíte, můžete ten oddíl přeskočit. 1. Práce s textem Běžné vypsání textu document.write('text') <script language="javascript" type="text/javascript"> document.write(‘Učím se psát skripty v JavaScript‘); </script> Pokud je text dlouhý, pro výpis použijeme opakovaně document.write document.write('Dnes přečtu kapitolu 1‘); document.write('a zítra budu pokračovat'); nebo propojím části textu pomocí operátoru + document.write('Dnes přečtu kapitolu 1 + a zítra budu pokračovat'); potřebuji do textu vložit speciální znak (např. uvozovky), vložím \“ (zpětné lomítko před znak) <script language="javascript" type="text/javascript"> document.write("Říkali mu \" Einstein \", protože..."); </script> Říkali mu " Einstein ", protože… Pokud má text má povahu poznámky či komentáře, oddělím ho „//“ nebo u víceřádkového komentáře */ document.write("to je o textech vše") //používejte komentáře document.write("zvládli jste to") /*někdy se komentář ale... na jednu řádku nevejde!*/ Text ve formě hlášky (vyskočí okénko) alert, prompt, confirm Hláška typu Alert ........................ dává informaci pro uživatele (upozornění) <script language="javascript" type="text/javascript"> <!-alert('Soustřeďte se!'); --> </script> Java a VisualBasicScriptyajejichtvorba 39 Prompt ................... žádá informace od uživatele (dotaz) <script language="javascript" type="text/javascript"> <!-- prompt('Jak se jmenuješ?‘‚ 'Zapiš své jméno'); --> </script> Confirm ................. žádá stanovisko od uživatele (souhlas, odmítnutí) <script language="javascript" type="text/javascript"> <!-- confirm (‘Baví tě to ?‘); --> </script> Pozn. Vzhled hlášek v jednotlivých prohlížečích se může lišit 2. Práce s operátory - výrazy Aritmetické + ‐ * / % ++ ‐‐ a+b a‐b a*b a/b a%b ++a ‐‐a +-*/% Součet hodnot Rozdíl hodnot Násobení hodnot Dělení hodnot Zbytek po dělení a = a+1 a = a‐1 Relační – porovnávání – výstupem je logická hodnota == != > < >= <= a==b a!=b a>b a<b a>=b a<=b Hodnoty se rovnají Hodnoty se nerovnají a větší než b a menší než b a větší rovno než b a menší rovno než b Přiřazení – vložení –výstupem hodnoty = += *= /= %= ^= a=b a+=b a*=b a/=b a%=b a^=b do a vložím hodnotu z b a= a+b a = a*b a =a/ b a= a % b a = a ^b prefixový zápis Java a VisualBasicScriptyajejichtvorba 40 Proměnné - deklarace var Spolu s operátory umožňují vytvářet výrazy, Název proměnné (identifikátor): obsahuje znaky, číslice podtržítko musí začínat písmenem neobsahuje mezery a diakritiku Různé formy deklarace proměnné var x ; var x = 1, y = 3; <script language="javascript" type="text/javascript" > <!— var prace = prompt(‘Kde pracujete?‘); */hodnota získaná z hlášky prompt se vloží do proměnné práce*/ document.write(‘Pracuji v ‘ + práce); --> </script> Podmínka ne if, if – else, if –else if Umožní vložení rozhodovacího uzlu, který umožňuje následně postupovat rozdílným způsobem <script language="javacript" a podmínka splněna činnost type="text/javascript"> <!-var zajem = "IT"; podmínka if (zajem == "IT") { document.write("Mám zájem o nové technologie!"); } //--> </script> <script language="javacript" nesplněna Činnost2 splněna podmínka a Činnost1 type="text/javascript"> <!-var mujnapoj= "káva"; if (mujnapoj == "čaj") { document.write("Mám šálek čaje"); } else { document.write("Mám jiný nápoj"); } //--> </script> Java a VisualBasicScriptyajejichtvorba Podm1 Činnost1 Podm2 Činnost2 Podm3 Činnost3 Činnost4 41 <script language="javacript" type="text/javascript"> <!-var mujnapoj = "čaj"; if (mujnapoj == "káva") { document.write("Mám kávu!"); } else if (mujnapoj == "čaj") { document.write("Mám čaj!"); } else if (mujnapoj == "kakao") { document.write("Mám kakao!"); } else { document.write("Mám jiný nápoj!"); } //--> </script> Přepínač switch Používá se v případě většího počtu podmínek nebo v případě, že rozhodování se řídí hodnotou proměnné a ne podmínkou. proměnná proměnná promě Činnost1 proměn Činnost2 proměn Činnost3 <script language="javascript" type="text/javascript"> <!-var mujnapoj = prompt(„Jaký nápoj si dáte?“); switch (mujnapoj) { case "káva": document.write("Dám si kávu!"); break case "čaj": document.write("Dám si čaj!"); break default: document.write("Nemám žízeň!"); } //--> </script> 42 Java a VisualBasicScriptyajejichtvorba Cyklus For For( i = poc; i<=konec; i++){prikazy} Používá se k opakování skupiny příkazů za předpokladu, že dopředu znám počet opakování Příklad: <script language="javascript" type="text/javascript"> <!-var poradi; for (poradi = 1; poradi <= 5; poradi++) { document.write("zadání číslo: " + poradi + "<br>"); } //--> </script> Cyklus While while (podmínka) { příkazy; } Opakuje skupinu příkazů tak dlouho, dokud je podmínka vyhodnocena jako pravdivá <script language="javascript" type="text/javascript"> <!-var poradi = 1; while (poradi <= 5) { document.write("zadání č. " + poradi + "<br>"); poradi++; } //--> </script> Při programování vlastních činností se neobejdete bez použití podprogramů pro definování dílčích činností. Funkce function id_funkce(argumenty) { definice } Ukázka kódu: <script language="javascript" type="text/javascript"> <!-function oznameni() { alert("Vytvořte si účet"); } --> </script> Java a VisualBasicScriptyajejichtvorba 43 Ukázka volání funkce (vazba na tlačítko) <input type="button" onclick="oznameni()" value="Nepřehlédněte" > Ošetření chyb try catch Pokud dojde k chybové události, program se může zhroutit. Jednou z možností je použít strukturu k zachycení chyby <script language="javascript" type="text/javascript"> <!-try { document.write("Dám si " + mujnapoj); } catch(chyba) { document.write("Došlo k potížím! Vyčkejte dalších pokynů.") //--> </script> Prošli jste obecné základní struktury používané při tvorbě JavaScriptů. Než se pustíme do programování systémových úloh, seznamte se s analogickým nástrojem VBScriptem. 2.3 Visual Basic Scripty a jejich tvorba Stejně jako JavaScript, nepotřebuje VBScript žádný speciální program pro tvorbu a díky své jednoduchosti se hodí jako první programovací prostředí pro ty, kteří chtějí s programováním začít. Ukázka skriptu: <html> <head> <title>VbScript</title> Aktivace překladače VScript <script language="VbScript"> <!-sub oznameni() alert("Vybral sis text!") end sub //--> </script> </head> <body bgcolor="#fff066"> Kliknutím na <span onClick="oznamení()"> TENTO </span> text se zobrazí oznámení. </body> </html> VBScript pojmenovaný „oznameni“ Připojení skriptu k události OnClick Java a VisualBasicScriptyajejichtvorba 44 Ze struktury kódu je zřejmá analogie s JavaScriptem. Rozdíly vnímáme v syntaxi jednotlivých příkazů : 1. Základem VBscriptu je procedura (sub …. end sub) <script language="VbScript"> <!‐‐ sub nazev_procedury(vstupní argumenty) tělo procedury = soubor příkazů (včetně cyklů, podmínek a dalších struktur) end sub //‐‐> </script> 2. Poznámky uvozeny apostrofem uvozeny REM 3. Práce s proměnnou deklarace vložení hodnoty (z hodnoty vyplyne typ) 4. Podmínka ‘ poznámka REM poznámka dim název proměnné jmeno=“Sterba“ vek = 33 odhlaseno=true IF podmínka THEN činnost1 ELSE činnost2 EndIf Klíčové slovo THEN je navíc (pro začátečníka je to lepší, protože to lépe odpovídá živému jazyku) Jinak zcela analogicky jako u JavaScriptu 5. Dialogové okno (obdoba hlášky) MsgBox („text“, konstanta pro vzhled) příklady konstant: vbOKonly vbOKCancel vbYESNOCancel jen tlačítko OK 2 tlačítka a Cancel 3 tlačítka Ano, Ne a Cancel Ukázka skriptu spojením dialogu s proměnnou a s podmínkou: Zobrazí obrázek v dialogovém okně Dim odpoved odpoved = MsgBox („Chci konat zkoušku?“, vbYesNo+vbQuestion, „ odpoved“) ‚Je to třeba vědět dopředu If odpoved = vbYes Then MsgBox „Vyplňte na webu přihlášku.“ Else MsgBox „Děkuji za odpověď.“ End If Pro předchozí komunikaci by bylo užitečné získat údaj o osobě - lze tzv. Editační okno pro vstup. Použijeme syntaxi: proměnná = InputBox ("informační text", "text v liště", "Default nastavení") Java a VisualBasicScriptyajejichtvorba 45 doplníme komunikaci o zadání vstupní informace: Odkaz Přihláška <html> <head> <title>VbScript</title> <script language="VbScript"> <!-sub prihlas() Dim zajemce zajemce = InputBox("Napište své jméno a příjmení", "Identifikace", "Uživatel") If zajemce = "" Then 'Zapomněli jste vypsat jméno MsgBox "Jméno nebylo zadáno!", vbCritical else MsgBox "Uchazeč jménem :" + zajemce, vbInformation end if end sub //--> </script> </head> <body bgcolor="#ffffcc"> <div OnClick="prihlas()">Přihláška</div> </body> </html> Vložení odkazu 6. Cykly ve VBScript I I zde najdeme cyklus řízený proměnnou s daným rozsahem FOR proměnná = a TO b a …počáteční hodnota Next proměnná b …koncová hodnota Zvýší hodnotu proměnné o 1 ukázka: sub Evidence() dim x dim Mesic(10) Definice pole o 10 prvcích dim poradiMesice For x=0 To 9 'končíme 9 protože začínáme pořadím 0 poradiMesice = x +1 'Skutečné pořadové číslo měsíce Mesic(x) = InputBox("Zadejte odpracované hodiny " & cislomesice & ". měsíc") next x end sub cyklus řízený podmínkou (neznáme počet opakování ) DO činnost Loop While podmínka Činnost se opakuje tak dlouho, pokud je podmínka vyhodnocena jako pravdivá. LOOP provede návrat interpretu na řádek začínající DO 46 Java a VisualBasicScriptyajejichtvorba Variantou tohoto typu cyklu je DO činnost Loop Until podmínka Činnost se opakuje tak dlouho, pokud je podmínka vyhodnocena jako nepravdivá. LOOP provede návrat interpretu na řádek začínající DO Ukázka : Důsledný PC Žádost o zadání jména vydrží tak dlouho, dokud něco nezadáme dim jmenoZaka Do jmenoZaka =InputBox("Zadejte žáka") Loop Until jmenoZaka <> "" dim jmeno Do jmeno=InputBox("Zadejte své jméno") Loop While jmeno = "" Poslední poznámka – texty se zapisují mezi klasické uvozovky “ “ Doplňte si své znalosti zvukovou ukázkou z webu http://www.youtube.com/watch?v=OVynosGs1es&feature=youtube_gdata ProstředíWindowsPowerShell 47 3. Windows PowerShell V této kapitole se seznámíte s prostředím Windows PowerShell, které Windows je dnes velmi často používaným standardem při programování skriptů v prostředí Microsoft Windows. Vychází z Microsoft Shellu a je doplněn o interaktivní skriptovací jazyk firmy Microsoft. Je součástí Windows od verze 7 i součástí serverových instalací Windows. Dokáže tedy spolupracovat s jádrem OS, spouštět programy na všech platformách, obsažených v .NET Framework . Klíčová slova Cmdlet,.NETFramework,konzola,WMI,prostředíISE,roura,vlákno 3.1 Základní charakteristika prostředí PowerShell Skriptovací jazyk je objektově orientovaný umožňuje vytvářet skripty ve formě cmdletů (čti komandletů), uložených jako soubory s příponou .ps1, které představují instance tříd .Net Framework pro konkrétní operace. Jsou pojmenovány tak, že jméno začíná slovesem Get-ChildItem (obdoba dir) vytvářet i spouštět skripty za běhu systému. Dědí ze základních tříd a v rámci cmdletů se přetěžují (pod stejným názvem se skrývá jiná činnost). Jedná se především o třídy zaměřené na zahajování a ukončování procesů včetně realizace jednotlivých záznamů. pracovat se spustitelnými soubory (s příponami exe, com) přistupovat nejen k souborovým systémům, ale také k položkám registru a k certifikátům prostřednictvím cmdletů plnit roli hosta v různých aplikacích, které je pak možno spravovat z příkazové řádky (SQL Server 2008, IIS 7) využívat interaktivní řádku, která umožňuje přidávat příkazy v rámci profilu uživatele, kam je přidá uživatelský skript při spouštění PowerShellu. Cmdlet se může napsat v jakémkoli programovacím jazyce, který podporuje platformu .NET PowerShell je součástí Windows7 a Windows Server 2008 R2. U Windows Server 2008 se dá doinstalovat jako doplněk přes Server Manager 48 ProstředíWindowsPowerShell Skript je v Powershellu chápán jako textový soubor, který obsahuje programový kód z PowerShellu a při jeho spuštění interpret PowerShell interpretuje postupně vložený kód. Abychom mohli prostředí Powershell účelně používat, je třeba se s ním blíže seznámit. Pracujeme v konzole nebo v grafických nadstavbách (ISE) 3.2 Konzola PowerShell Spustit konzolu PowerShell můžeme přes nabídku Start: (spustím příkazový řádek, napíšu příkaz PowerShell) V tomto prostředí lze používat jednoduché řádkové příkazy pro komunikaci s OS ProstředíWindowsPowerShell 49 BACHA !!! Skripty nelze spouštět přímo jen zapsáním jeho jména Důvodem je zabezpečení systému proti ohrožení počítače skripty stažené z internetu. Proto je defaultně nastaveno, že skripty jsou asociovány s poznámkovým blokem. Spuštění řešíme příkazem ./skript1.ps1 Ale!!!!! Stále je tu problém, i když chyba je jiná. V tomto případě brání spuštění skriptu nastavení bezpečnostní politiky, které kontrolují, jsou-li spouštěné skripty digitálně podepsány. Standardně se nastaví politika Restricted , která dovolí zapsat příkaz přímo v okně PowerShellu, ale při pokusu o spuštění skriptu, zobrazí chybu. Existují čtyři bezpečnostní politiky: Restricted, Unrestricted, RemoteSigned a AllSigned. Pro změnu nastavení bezpečnostní politiky spustíme příkaz Set-ExecutionPolicy s parametrem (některá z uvedených politik). Např. Set‐ExecutionPolicy RemoteSigned Bude zajištěno, že skripty stažené z internetu nebo doručené mailem lze spustit jen v případě, že jsou podepsány důvěryhodným certifikátem. Námi vytvořený skript se už spustí. PowerShell má podporu WMI pro vzdálenou správu 50 ProstředíWindowsPowerShell Prohlédněte si tutoriál http://www.youtube.com/watch?feature=endscreen&v=xC70053m6Lg&NR=1 Seznamte se s jednotlivými částmi PowerShellu, které potřebujeme pro práci v tomto prostředí Konzola – slouží ke spouštění příkazů PowerShellu, tzv. commandletů Příkazová řádka začíná PS Commandlet (příkaz) má jmennou konvenci – sloveso - podstatné jméno – která by měla charakterizovat jeho činnost. Aby se předešlo nejasnostem, byla vytvořena sada povolených sloves, která si můžete vypsat příkazem get -verb a jiná se používat nesmí. Commandlety se volají s využitím parametrů, které jsou vždy odděleny pomlčkou a mohou obsahovat konkrétní hodnotu get-help -full (dostaneme plnou nápovědu pro příkaz get) Příkaz + parametr Pro zjednodušení práce s konzolí slouží klávesa TAB, která umožní doplňovat příkazy např. napíšeme get -h a mačkáním tabulátoru listujeme všemi příkazy, které takto začínají Velkým pomocníkem je použití znaku #(hash), který mi pomůže najít v seznamu text končící zadanými znaky. Např. Pokud chci použít již dříve zadávaný příkaz v konzoli, mohu je vyvolat příkazem get –history a konkrétní příkaz mohu najít zápisem #process a on mi najde get -process Nad konzoli lze nainstalovat grafickou nadstavbu konzole ISE, která jednak zpřehledňuje, jednak urychluje práci se skripty. Mohu si dovnitř natáhnout skupinu hotových skriptů, které se mi objevují v nabídce, a já si z nich mohu vybírat. ProstředíWindowsPowerShell 51 Ukázka prostředí ISE Skript panel Panel příkazů Output panel Souhrn skriptů lze najít v panelu pod heslem Add-One a načíst si je do ISE a využít tak barevné odlišení klíčových slov, komentářů i příkazů např. při tvorbě dokumentace. Nabízené Add-One lze najít na Webu. 3.3 Práce s nápovědou (bez ní jste ztraceni) PoweShell má velmi dobře organizovanou nápovědu, kterou získáme použitím příkazu Gert-Help : Zobrazení tématu Konkrétní příkazy Tematická nápověda (začíná about) Pozn. Speciálně pro zobrazování tematické nápovědy, ale i nápovědy k jednotlivým příkazům lze použít příkaz Help (místo get-help), který mi umožní stránkování výpisu a jeho postupné čtení. 52 ProstředíWindowsPowerShell Struktura nápovědy: Nápověda má několik oddílů: Name – obsahující názvy commandletů Syntax – obsahuje přesnou strukturu zápisu při použití daného příkazu Description – podrobnější popis použití daného příkazu, který uživatele inspiruje Examples – obsahuje příklady konkrétního použití. Pozor v základním výpisu se neobjevuje. Je nutno příkaz doplnit o parametr Example Get-Help –Write-Eventlog –Examples Parameters – obsahuje přehled použitelných parametrů vztahující se k danému příkazu Pro zobrazení plné nápovědy k danému commandletu poskytuje použití parametru FULL Help –Write-Eventlog –Full (použili jsme jen Help pro stránkování) Pokud chcete nejaktuálnější verzi nápovědy, zobrazíte si ji z webu – použitím parametru online 3.4 Aliasy Pro popularizaci prostředí PowerShell a pro snadnější přechod z příkazové řádky vyrobil vývojový tým řadu aliasů, v nichž některé commandlety přizpůsobil klasickým příkazům; například místo Get-ChildItem lze použít klasické Dir. Přehled aliasů lze zobrazit příkazem Get-Alias s různým seskupením parametrů – set parametr k aliasu najdete příslušný commandlet 1. Get –Alias [[-Name]<string[]>] [[-Exclude]<string[]>][[-Scope]<string[]>][<Common Parametr>] 2. Get –Alias [[-Definition]<string[]>] [[-Exclude]<string[]>][[-Scope]<string[]>][<Common Parametr>] ke commandletu najdete příslušné aliasy Nelze dohromady použít parametry Name a –Definition !!!!! ProstředíWindowsPowerShell 53 Ukázka použití výpisu aliasů Začínají na w Nezačínají na c Výpis aliasů pro commandlety začínající slovesem Remove Common parametry – ovlivní průběh procesu při spuštění commandletu, za všechny uveďme Verbose - v průběhu spuštěného procesu vypisuje probíhající akce Debug – při určité akci se objeví potvrzování jednotlivých kroků, zda je chcete či nechcete spustit. ErrorAction – co se má dělat, když narazí na chybu 54 ProstředíWindowsPowerShell Nenašel adresář hlp, vypsal chybové hlášení ++++++++++++++++++++++++++ SilentlyContinue znamená nic nepiš a pokračuj 3.5 OutVariable, Outbuffer – použití parametru ovlivní, co se stane s výstupními parametry po ukončení procesu. Zda se uloží do proměnné, nebo se pošlou určitým způsobem do roury (pokud existuje) Významné jsou parametry Whatif a Confirm zejména při realizaci riskantních procesů, jako je restart serverů apod. Whatif – vypíše všechny nebezpečné procesy a potenciální problém. Confirm – u všech nebezpečných procesů požaduje potvrzení Přehledný výpis skupiny použitelných parametrů pro jednotlivé commandlety formou přehledné tabulky zajistí get-parametr Název parametru v hranatých závorkách, hodnota nikoli Povinné parametry (musí se zadat) – Get-eventlog [-logName] <string> Nepovinné parametry (nemusí se zadat) – Get-alias[ [-Name] <string[]>] Název parametru i hodnota je v hranatých závorkách ProstředíWindowsPowerShell 55 3.6 Roura – nástroj pro práci s objekty Pojem roura ( anglicky pipeline)- pracuje s objekty, slouží ke spojování příkazů za sebe, k vytváření efektivních řádků - Dir|more Příklad (jednoduše) Get-process| Vyber všechny procesy Sort-Object –Property WS –Descending | Setřiď dle časové náročnosti sestupně Select-Object –First 3 -Property Name, WS| Vyber první 3 procesy – název , čas. nároč. ConvertTo-Html | Převeď do formátu HTML Out-File D:\Top3.html Ulož do souboru D:\Top3.html Pozn. Zkoušejte postupně (ať vidíte efekt) Objekty – obsahují vlastnosti (property) a metody (Methods). Jsou spojeny s pojmem třída (class), kterou můžeme charakterizovat jako šablonu pro tvorbu objektu a Objekt nazveme instance třídy. objekt Vlastnosti Název Barva Alkohol Cena Name Status StartMode Started ProstředíWindowsPowerShell 56 objekt Metody (činnosti) Kup() Otevři() Vypij() Vylij() Create() Start() Stop() Pause() Jejich výpis lze v konzoli získat pomocí Get-member. Zjednodušeně u metod vidíte vždy závorky, u vlastností nikoli. Vlastnosti popisují objekt samotný, metody činnosti, které lze s objektem provádět. Cvičení : Ve svém okolí najděte další příklady objektů a popište jeho vlastnosti a navrhněte metody. Všechny služby OS jsou chápány jako objekty a můžeme tedy vypsat podrobně všechny jeho vlastnosti a metody: pomocí Get-member zjistit všechny možnosti práce s touto službou Pokud je uvedena varianta get – lze pouze číst, pokud je tam i set, lze tuto vlastnost i nastavit ProstředíWindowsPowerShell Případně ještě přehledněji pomocí Format-List* Nebo jednoduše pomocí get –service (zobrazí vybrané vlastnosti) Jako objekt je chápán i obyčejný text Stejně tak číslo, soubor apod. (vyzkoušejte si sami) Pokud si chceme nechat vypsat jen některé vlastnosti, použijeme Select-Object <výpis vlastností> , případně s Format-List * 57 58 ProstředíWindowsPowerShell Pokud některý příkaz používáte často, můžete si ho uložit do proměnné ($název proměnné) a pomocí ní jej volat: Použijeme-li proměnou a za ni napíšeme tečku, můžeme tabelátorem vybírat z existujících položek, které chci zobrazit Pokud chceme přistupovat k objektům a metodám ze systémové knihovny, kterou PowerShell neobsahuje, použijeme notaci [název knihovny] :: volání metody Vypíšeme přehled použitelných metod z knihovny MATH Výpočet odmocniny z 16 voláním metody SQRT ProstředíWindowsPowerShell–použitíroury 59 Objekt na vstupu “do roury“ V prostředí HELP v oddíle Parameters najdeme následující řádky Ty říkají, zda proces akceptuje vstup z roury a co může být před rourou, aby proces za rourou dokázal s daným vstupem pracovat . ByValue – znamená, že pracuje s celým objektem ByPropertyName – znamená, že pracuje s danou vlastností objektu Ukázka: chceme zastavit proces Notepad Ukažme si, že na vstupu je celý objekt (vypíšeme část před rourou) Vrací proces ‐ objekt Vypišme stav za rourou Dokáže zastavit proces určený objektem 60 ProstředíWindowsPowerShell–použitíroury V sekci Parameters vidíme, že akceptuje celý objekt V sekci INPUT vidíme, který objekt zpracuje (porovnejte se začátkem) Na základě těchto zjištění si můžeme být jisti průběhem procesu a můžeme jej pustit „naostro“ Z výpisu stavu za rourou vidíme, že stop-process dokáže zastavit proces daný jen některou vlastností (Id nebo Name) Parametr nastavený jako první je defaultní Vsekci Parameters najdeme Id nebo Name a vidíme, že přebírá vlastnost Závěr: Řeknete si, proč tak složitě, ale pokud se chcete dopředu přesvědčit, že vámi nastavený sled procesů proběhne přesně podle vašich představ, je toto bezpečný způsob? ProstředíWindowsPowerShell–použitíroury 61 Filtrování v rouře Při nastavování akcí máme dvě možnosti 1. Nastavit akci, která bude probíhat pro všechny objekty, které projdou rourou Foreach-object 2. Nastavit podmínku, pomocí níž budou vybrány jen některé objekty pro uskutečnění nastavené akce. Where-object Příklad: Mám soubor Servery.txt s názvy serverů (každý řádek je objekt) –vypiš je Symbol $_ znamená, že se akce provede pro každý objekt, který proteče rourou) Nahraď v textu pomlčky za podtržítka (pomocí metody Replace) Nahrazení však nebylo zaznamenáno do souboru => přidáme rouru a použijeme Set-Contens nové informace vložíme do nového souboru Serv_.txt (nemusí existovat). Ověříme výpisem nového souboru. ForEach-Object je možno nahradit % a doplnit podmínkou Z výseku výpisu vidíme, že procesy, jejichž jméno začíná na W jsou vypsány zeleně, ostatní červeně 62 ProstředíWindowsPowerShell–použitíroury V podmínce vidíme operátor like, uveďme přehled dalších možných operátorů -eq rovná se -lt je menší než -gt je větší než -like odpovídá (porovnání textů) About_comparison_Operators – tematická nápověda k operátorům Ukázka filtrování pomocí vlastnosti objektu Where-Object lze nahradit otazníkem ? Formátované výstupy z roury Pro ovlivnění výpisu údajů se používají formátovací commandlety Format-Table Format-List Format-Wide výpis ve formě tabulky (názvy položek tvoří záhlaví tabulky) podrobný výpis – položky pod sebou výpis údajů do několika sloupců vedle sebe ProstředíWindowsPowerShell–použitíroury 63 vylepšené grafické prostředí Úprava získaných dat do určitého formátu Nejčastěji používáme převod do formátů CSV, XML, HTML. Pro tyto účely zde existují 2 varianty: Export (CliXml, Csv) – uloží data do souboru v určitém formátu ConvertTo/From – zkonvertuje data a vypíše je do konzoly 64 ProstředíWindowsPowerShell–použitíroury Další užitečné commandlety: Select-Object Sort-Object Group-Object Mesuare-Object Compare-Object umožní vybrat vlastnosti objektu pro zobrazení umožní setřídit objekty podle vybrané vlastnosti umožní seskupit objekty a použít agregační funkce umožní zpracovat skupinu objektů umožní porovnávat dva stavy ProstředíWindowsPowerShell–použitíroury 65 Do proměnné $pred uložíme stav procesů, poté spustíme 2 programy (calc.exe, notepad.exe a do proměnné $po uložíme aktuální stav procesů Použitím Compare-Object jsme schopni porovnat získané proměnné a vypsat, které procesy byly mezitím spuštěny Porovnávaný stav Změněný stav WMI Je prostředí, v němž jsou uloženy informace o hardware a systémové údaje. PowerShell zjednodušuje přístup do prostředí WMI a získávání údajů z tohoto prostředí. WMI má ustálenou strukturu: Provider – slouží ke komunikaci s WMI; pomocí providera informace ukládáme do WMI, případně získáváme z WMI Namespace – prostředí obsahující třídy (Class) Class – šablona, podle níž se vytváří objekt určitého typu (např. šablona procesů) Instance (obsahuje oddíly Property a Method) – vytvořený objekt podle některé z tříd, tzn. Instance je zástupce třídy. Přístup k WMI WMIC – konzola Wbemtest – grafické prostředí PowerShell CIM Studio VBS (Visual Basic Scripting) Příklad přístupu k WMI z PowerShellu Get‐WMIObject paramater Parametrem může být ‐List ‐__Namespace ‐Class ‐Win32_* ‐Filter ‐Query Výstupem přehled objektů daných parametrem. Pro tvorbu Query (dotazů) slouží jazyk WQL (zjednodušení SQL) 66 ProstředíWindowsPowerShell–použitíroury místo části where lze použít parametr -filter použití jazyka WQL WQL používá pro porovnání matematickéoperátory = <> Like apod. Shrnutí Pokud vás prostředí Windows Power Shellu oslovilo, využijete ho jak při správě stanic, tak i serveru. Rozhodnete se, zda jste příznivcem výhradně konzoly, nebo si občas zjednodušíte přístup k systémovým informacím pomocí WMI. AutomatizacesprávyWindowsServer2008 67 4. Automatizace správy Windows Server 2008 Pokud chceme automatizovat některé často prováděné akce pomocí jednotlivých příkazů, dávkových souborů nebo skriptů; je nutné provádětjevpříkazovéřádce.Vnásledujícímtextunajdeteinspiraci Příkazyvpříkazovémřádkumajíustálenousyntaxi: příkaz[přepínače][parametry] Příkazyobsahujícípřesměrovánívstupuavýstupu: příkaz[přepínače][parametry]<[Souborprovstup]>[Souborprovýstup] 4.1 Řádkové příkazy s oblasti správy uživatelů, sítě, dat 1. Správa uživatelů dsadd user <UserDN> [-samid<SAMName>] -pwd {<Password>|*} Název uživ, účtu Název účtu SAM pro zabezpečení uživ. Účtu Pokud nezadáme, pokusí se ho dsadd nastavit sám Nastavené heslo, Pokud zadáme *, bude uživatel požádán o nastavení hesla Úplný návod získáme zadáním příkazu dsadd user /? Nezapomeňte!!! Je činnost příslušející správci (Příkazový řádek musíte spustit jako správce) 2. Správa sítě Netstat –b aktivní spojení na protokolu TCP AutomatizacesprávyWindowsServer2008 68 Netstat–rvypíšesměrovacítabulku arp‐prácesARPtabulkou(mapováníIPadresnaMACadresy) arp‐a‐vypíšeARPtabulku arp‐s192.168.85.2100‐aa‐00‐62‐c6‐09‐vložízáznam arp‐d192.168.15.22‐smažezáznam ping - otestuje komunikaci se vzdáleným počítačem, měří dobu odezvy ping 192.168.15.10 - vzdálený PC podle IP, skončí po 4 paketech ping -t WINFirma - vzdálený PC podle DNS jména a neskončí po 4 paketech ipconfig – zjištění konfigurace síťových karet ipconfig /all - podrobný výpis konfigurace ipconfg /renew - obnoví IP adresu rozhraní (požadavek na DHCP) ipconfig /registerdns - obnoví pronájem u DHCP a znovu zaregistruje adresu ipconfig /flushdns - vyprázdní DNS cache ipconfig /displaydns - zobrazí DNS cache u DNS nslookup – komunikace s DNS, výpis požadovaných záznamů spuštěním příkazu se dostaneme do prostředí nslookup (vlastní prompt) nslookup www.centrum.cz - vrátí A záznam z primárního DNS pro zadanou ls -d {domena} - výpis všech přístupných záznamů = Zone Transfer doménu tracert - sleduje cestu k cíli (přes jaké uzly/hopy) tracert www.centrum.cz AutomatizacesprávyWindowsServer2008 69 Pathping obdoba tracert (je efektivnější), lze nastavit počet dotazů na 1 hop Netshpříkazprokonfiguracisítě(vlastníprompt) AutomatizacesprávyWindowsServer2008 70 net–skupinapříkazůkolemsítí,účtů,služebasdílenýchsložek netuseAdministratornoveheslo‐změnaheslalokálníhouživatele Administratornanoveheslo netusernovak‐zobrazíinformaceolokálnímúčtu netusernovak/expire:15.9.2013‐lokálnímuúčtunastavídobuplatnosti nethelpuser–zobrazínápovědukpříkazunetuser netusep:\\serv\novak‐vytvořímapovánísíťovécestynadisk net users nový_uživatel heslo /add - vytvoří nového uživatele Kontrolní výpis net use LPT1: \\WinFirma\Tiskarna1 - přesměrování tisku z portu LPT1 na tiskovou frontu Tiskarna1 net startspooler - spuštění služby zařazování tiskových úloh net stopspooler - zastavení služby zařazování tiskových úloh net print\\WinFirma\Tiskarna1 – zobrazí tiskovou frontu Tiskárna1 Výpisy,spojovánípříkazů dirc:\windows>c:\vypis.txt‐výpisadresářeuložídosouboruvypis.txt typesoubor2.txt>>soubor1.txt‐spojísoubor1.txtasoubor2.txt |(svislítko)‐výstupprvníhopříkazupřesměrujejakovstupdruhého dirc:\windows|find"system"‐zvýpisuadresářezobrazípouzeřádky,kde senacházířetězecsystem &(ampersand)‐spustínejprvejedenapakdruhý=>spojídvapříkazy dirc:\&dird: AutomatizacesprávyWindowsServer2008 71 Hromadnévytvořenísložek Option Explicit dim folder 'jméno adresáre Dim fso, f, ts Const ForReading = 1, ForWriting = 2, ForAppending = 8 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 ' system default, unicode, ascii Set fso = CreateObject("Scripting.FileSystemObject") set f = fso.GetFile("slozky.txt") set ts = f.OpenAsTextStream(ForReading, TristateFalse) Do While Not ts.AtEndOfStream On Error Resume Next folder = ts.ReadLine() fso.createfolder(folder) If Err.number <> 0 then wscript.echo "Adresář '"& folder & "' hlásí tuto chybu: Err.Description Err.clear end If On error goto 0 loop wscript.echo "Hotovo :-)" ts.close "& Hromadnévytvářeníúčtů (provytvořeníheselpoužijemegenerátorzinternetu http://www.techzoom.net/tools/password‐generator.en Vygenerovaná hesla vložte do souboru hesla.txt a vytvořte skript pro vytvoření uživatelskýchúčtůsejményuzv1ažuzv10.(vizKapitola1,str.18)–lzepřepsatjen dojinésyntaxe. AutomatizacesprávyWindowsServer2008 72 SpouštěnílokálníchnepodepsanýchPowerShellskriptůnámzabezpečízadání příkazu: Set‐ExecutionPolicy‐ExecutionPolicyRemoteSigned Zjištěnídata 1. Tyden.ps1‐získámpořadítýdnevroce Get–Date–uformat%w 2. Dnes.ps1‐výpis(Včera,dnesazítraformoutabulky) "Date/FormatYYYYMMDDDD‐MM‐YYYYMM/DD/YYYY" "============================================================" "Vcera"+(get‐date(get‐date).AddDays(‐1)‐uformat%Y%m%d)+""+ (get‐date(get‐date).AddDays(‐1)‐uformat%d‐%m‐%Y)+""+(get‐date(get‐ date).AddDays(‐1)‐uformat%m/%d/%Y) "Dnes"+(get‐date‐uformat%Y%m%d)+""+(get‐date(get‐ date)‐uformat%d‐%m‐%Y)+""+(get‐date(get‐date)‐uformat %m/%d/%Y) "Zítra"+(get‐date(get‐date).AddDays(1)‐uformat%Y%m%d)+""+(get‐ date(get‐date).AddDays(1)‐uformat%d‐%m‐%Y)+""+(get‐date(get‐ date).AddDays(1)‐uformat%m/%d/%Y) 4.2 Práce s objekty v AD ZjednodušeníkomunikacesActiveDirectoryumožňujítzv.ADpříkazy.Abychom mělipotřebnéADpříkazykdispozici,jenutnovždyimportovatModulActive Directory!!!!JenutnémíttakénainstaloványslužbyActiveDirectoryDomain ServicesADDSaADLDSTools(přesslužby)naWindowsServer2008R2, 2012. Nutno zavést modul ActiveDirectory př ık ́ azem Import-Moduce Active Directory. PaklzeActiveDirectoryprocházetjakosouborovýmsystémem: PSC:>cdad: PSAD:>dir AutomatizacesprávyWindowsServer2008 73 3. Výpisinformacíoaktuálnídoméně Get‐ADDomain 4. Výpisinformacíoaktuálníchřadičích $radice=Get‐ADDomainController‐Filter* $radice| Format‐TableName,Site,OperationMasterRoles,OperatingSystem‐AutoSize Prácesuživateli 5. Chcemezaložituživatelesdanýmheslemvčetněpoštovníhoúčtu $psw=ConvertTo‐SecureString‐AsPlainText‐Force‐String'heslicko' New‐ADUsernovak‐Name'NovákMartin'‐SamAccountName'novak'‐Path 'ou=Odbyt,dc=firemni,dc=local'‐UserPrincipalName'[email protected]'‐ GivenName'Martin'‐Surname'Novák'‐AcountPassword$psw‐Enabled $true 6. Chcivytvořituživatele,kterýmusípřipříštímpřihlášenízměnitheslo Chci‐linastavitChangePasswordAtLogon,nesmíbýtaktivnípasswordNeverExpires. Get‐ADUser‐Filter*‐SearchBase"OU=Odbyt,DC=firemni,DC=local"|Set‐ ADUser‐PasswordNeverExpires$false Get‐ADUser‐Filter*‐SearchBase"OU=Odbyt,DC=firemni,DC=local"|Set‐ ADUser‐ChangePasswordAtLogon$true 7. Zobrazenívšechvlastnostíuživatele Get‐ADUsernovak‐Properties* 8. Seznamuživatelůapočetšpatnězadanýchhesel Get‐ADUser‐Filter*‐PropertiesbadPwdCount| Format‐TableName,badPwdCount,Enabled 9. Seznamuživatelů,kteřímajínastavenoChangePasswordAtLogon Pokusíme‐li se vypsat přehled uživatelských účtů, které mají nastaven parametr ChangePasswordAtLogon , zjistíme, že tento atribut není k dispozici, takže takové uživatele nemůžeme zobrazit. Pokud zvolíme parametr ChangePasswordAtLogon, nastaví se parametr pwdLastSet na hodnotu 0 a PasswordExpired na true. Tudíž můžemevybratuživatelskéúčtypodleněkteréznich. Get‐ADUser‐Filter{pwdLastSet‐eq0}‐PropertiespwdLastSet| FTName AutomatizacesprávyWindowsServer2008 74 AnalogickypodledruhéhoparametruPasswordExpired Get‐ADUser‐Filter*‐PropertiesPasswordExpired|Sort‐Object PasswordExpired‐Descending| Format‐Tablename,PasswordExpired‐AutoSize 10. Seznamnepřístupnýchuživatelskýchúčtů(2varianty) Get‐ADUser‐Filter{Enabled‐eq$false}| Format‐Tablename Search‐ADAccount‐AccountDisabled‐UsersOnly|Sort‐ObjectName| Format‐TableName,DistinguishedName‐AutoSize 11. Seznamzamčenýchuživatelskýchúčtů Search‐ADAccount‐LockedOut‐UsersOnly|Sort‐ObjectName| Format‐TableName,DistinguishedName‐AutoSize Práceseskupinami 12. Seznamskupin,dokterýchjezařazenuživatel Get‐ADPrincipalGroupMembership‐Identitynovak 13. Zařazeníuživateledoskupiny Add‐ADPrincipalGroupMembership‐Identitynovak‐MemberOf'Název skupiny' 14. Výpisuživatelůvzadanéskupině Get‐ADGroupMember‐Identity'názevskupiny'| Format‐Tablename 15. Výpisneaktivníchuživatelů(nepřihlásilisejiž21dnů) Import‐ModuleActiveDirectory Search‐ADAccount‐AccountInactive‐UsersOnly‐TimeSpan"21"| Sort‐ObjectName| Format‐TableName,LastLogonDate,Enabled,LockedOut‐AutoSize| Out‐File‐FilePathd:\Skripty\neaktivni_users.txt‐Width300| Send‐MailMessage‐[email protected]‐[email protected]‐ Subject"KontrolauživatelůvAD"‐SmtpServermail.firemni.local‐ Attachmentsd:\Skripty\neaktivni_users.txt‐Encoding ([System.Text.Encoding]::Unicode)‐Body"Ahoj,`n`nKontrolauživatelských účtů,kterése21dnínezalogovali.`n`nZdravísprávce" AutomatizacesprávyWindowsServer2008 75 Prácespočítači 16. VýpispočítačůsvybranýmOS(např.Windows7) Get‐ADComputer‐Filter{OperatingSystem‐like"Windows7*"}‐Properties OperatingSystem,CanonicalName,whenCreated| Sort‐ObjectName| Format‐TableName,OperatingSystem,CanonicalName,whenCreated‐ AutoSize 17. Výpispočítačůsnepřístupnýmúčtem Search‐ADAccount‐ComputersOnly‐AccountDisabled|Sort‐ObjectName| Format‐TableName,DistinguishedName,LastLogonDate‐AutoSize 18. Výpispočítačů,kterésepřihlásilypředanýmdatem $datumprihl=New‐ObjectSystem.DateTime(2013,9,15) Get‐ADComputer‐Filter{lastLogon‐le$datumprihl}|Format‐Table Get‐ADComputer‐Filter{lastLogon‐le$datumprihl}‐Properties LastLogonTimeStamp,OperatingSystem| Select‐ObjectName,DistinguishedName,OperatingSystem, LastLogonTimeStamp| Sort‐ObjectName 19. VýpisneaktivníchpočítačůvAD(neaktivoványjiž21dnů) Import‐ModuleActiveDirectory Search‐ADAccount‐AccountInactive‐ComputersOnly‐TimeSpan"21"| Sort‐ObjectName| Format‐TableName,LastLogonDate,Enabled,LockedOut‐AutoSize| Out‐File‐FilePath"d:\Skripty\Neakt_computers.txt"‐Width300 20. Výpisuzamčenýchúčtů Import‐ModuleActiveDirectory Search‐ADAccount‐LockedOut‐UsersOnly| Sort‐ObjectName| Format‐TableName‐AutoSize| Out‐File‐FilePath"d:\Skripty\zamcene_ucty.txt"‐Width300 21. Výpisnovýchpočítačovýchúčtů $yesterday=Get‐Contentd:\skripty\PC.txt Get‐ADComputer‐Filter*|Sort‐ObjectName|Format‐TableName–AutoSize |Out‐File‐FilePathd:\skripty\PC.txt $today=Get‐Contentd:\skripty\PC.txt Compare‐Object$yesterday$today|Format‐Table‐AutoSize| Out‐File‐FilePathd:\skripty\PC‐zmeny.txt 76 AutomatizacesprávyWindowsServer2008 22. Výpiszakázanýchúčtůpočítačůiuživatelů Search‐ADAccount‐AccountDisabled‐UsersOnly|Sort‐ObjectName| Format‐TableName‐AutoSize| Out‐File‐FilePath"d:\Skripty\neakt‐uziv.txt"‐Width300 Search‐ADAccount‐AccountDisabled‐ComputersOnly|Sort‐ObjectName| Format‐TableName‐AutoSize| Out‐File‐FilePath"d:\Skripty\neakt‐comp.txt"‐Width300 23. Kontrolaaktivityserveru kserverunemůžemepřistupovatpřesinternet,aleservermůžeodesílat maily.Nechámesitedypravidelněcohodinuodeslatmailatímzjistíme,žeje aktivní. $mails=Get‐MessageTrackingLog‐EventID"RECEIVE"‐Sender "[email protected]" ‐Recipients"[email protected]" ‐Start(Get‐Date).AddHours(‐1)‐End$time| Format‐TableTimestamp,Sender,MessageSubject‐AutoSize if($mails‐eq$null){Send‐MailMessage‐[email protected]‐To [email protected]‐Subject"Hlasenizeserveru"‐SmtpServer mail.firemni.local‐Encoding([System.Text.Encoding]::Unicode)‐Body "Běhemposledníhodinynebylpřijatkontrolnímail!"} 4.3Administracesystému 24. Kontrolazálohování Do proměnné $soubory uložíme seznam nově vzniklých nebo změněných souborů vadresářiC:\Backup.Otestujeme,zdaseznamneníprázdný,apokudexistujítakové soubory, zjistíme, zda nemají nulovou hodnotu. Pokud by existovaly soubory snulovouhodnotou,tzn.Nastalproblémvprocesuzálohování,pošlemeemail. $zprava="" $soubory=Get‐ChildItemc:\backup|Where‐Object{$_.LastWriteTime‐gt (Get‐Date).AddDays(‐1)‐and!$_.PSIsContainer} if(($soubory|Measure‐Object).Count‐eq0){ $zprava="Zaposlednídennevzniklžádnýsoubor." }else{ $soubory|ForEach‐Object{if($_.Length‐eq0){$zprava+="Soubor"+ $_.name+"mánulovouvelikost."}} } if($zprava‐ne""){Send‐MailMessage‐[email protected]‐To [email protected]‐Subject"Problémzálohování"‐SmtpServer mail.firemni.local‐Encoding([System.Text.Encoding]::Unicode)‐Body $zprava} AutomatizacesprávyWindowsServer2008 77 25. VytvořenípřehleduzapůjčenýchIPadreszDHCP VprostředíPowerShellneexistujícmdletyproovládáníDHCPserveru.Můžemevšak využítzpříkaznetshapoužítjehovýsledkykvytvořeníreportu.Takžesivypíšeme seznam aktivních oborů DHCP a znich vybereme prvních 15 znaků (= síťová IP adresa)auložímedoproměnné.Pakprokaždýtaktozískanýoborvypíšemeseznam pronajatýchadres(lease).Výsledekuložímedosouboru. Můžemedáleporovnávatstavzpředchozíhodnesaktuálnímazískattakzměny vpřidělováníadres. $pujceno_vcera=Get‐Contentd:\skripty\dhcp_IP.txt $obory=netshdhcpserver\\pdcshowscope|Where‐Object{ $_.Contains("Active")}|ForEach‐Object{$_.Substring(0,15)} $pujceno=$obory|ForEach‐Object{netshdhcpserver\\pdcscope $_.Trim()showclients1}|Where‐Object{$_.Contains("‐D‐")‐or $_.Contains("‐U‐")‐or$_.Contains("‐R‐")} $pujceno|Out‐File‐FilePathd:\skripty\dhcp_IP.txt Compare‐Object$pujceno_vcera$pujceno| Format‐Table‐AutoSize|Out‐File‐FilePathd:\dhcp‐zmeny.txt 4.4Komunikacesregistrem 1. UloženídatzregistrudosouboruVerzeSoft.reg a)pomocíCMD b)pomocíVBScript ČtenízregistruWindowsvprostředíVBScript constHKEY_LOCAL_MACHINE=&BCD000000 strComputer="." SetStdOut=WScript.StdOut SetoReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_ strComputer&"\root\default:StdRegProv") 78 AutomatizacesprávyWindowsServer2008 strKeyPath="SOFTWARE\Microsoft\Windows\CurrentVersion" strValueName="VerzeSoft.reg" oReg.GetStringValueKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue StdOut.WriteLinestrValue 2. UkončitvšechnyNotepad.exe a) Ukončenívšechprocesůnotepad.exepomocíVBScriptu strComputer="mujPC" svcName="notepad.exe" SetobjWMIService=GetObject("winmgmts:"_ &"{impersonationLevel=impersonate}!\\"&strComputer&"\root\cimv2") SetcolProcessList=objWMIService.ExecQuery_ ("Select*fromWin32_ProcessWhereName=svcName") ForEachobjProcessincolProcessList objProcess.Terminate() Next b) Ukončenívšechprocesůnotepad.exepomocíPowerShellScriptu $Computer="mujPC" $Name="notepad.exe" $ProcessList=Get‐WmiObjectWin32_Process–computername$computer| where{$_.name–like$name} ForEachProcessincolProcessList{$process.terminate()} c) Ukončenívšechprocesůnotepad.exepomocípříkazovéřádkyPowerShellu PSC:\>Get‐WmiObjectWin32_Process–comp“mujPC”?{$_.name–like „notepad.exe“}|%{$_.terminate()} Shrnutí Pro inspiraci jste si vyzkoušeli řešení některých situací, do nichž byste se jako správce operačních systémů mohli dostat. Určitě jsme nevyčerpali všechny možnosti,alesnadjstesinašlizpůsob,jakpřistoupitpřímokpsanískriptunebokde hledatpomoc. Závěr 79 ZÁVĚR Vážení čtenáři, pokud jste vydrželi a zvládli jste tento materiál „prolouskat“ až k tomuto místu, blahopřeji Vám k trpělivosti a přičinlivosti. Určitě jste si všimli, že probíraná problematika ve všech třech kapitolách je velmi podobná; jen je zpracovávána v jiné „jazykové mutaci“, z hlediska různých skriptovacích prostředků. Každý z nich je specifický, ale základní algoritmické struktury jsou v podstatě téměř stejné. Liší se svými možnostmi a rozsahem použití. Největší pozornost byla věnována dávkovým souborům, u kterých byl předpoklad, že jste se s nimi již setkali, a navíc jsou relativně nejjednodušší, krátké a přehledné. Nová problematika týkající se správy byla prezentována nejdříve na nich. S dalším prostředím javascriptů a visualbasic scriptů jste se seznámili především formou syntaktických zápisů jednotlivých příkazů a algoritmických struktur, bližší pozornost jsme pak věnovali PowerShellu, jeho filosofii a používaným pojmům. V závěru jste procházeli kapitolou obsahující příklady skriptů z oblasti správy operačního systémů. Pokud se budete touto problematikou profesionálně zabývat, můžete použít některé ze vzorových skriptů nebo si je přizpůsobíte aktuálním požadavkům. Určitě si budete tvořit také vlastní skripty, případně vyhledávat na internetu či v další literatuře nové inspirace. Přeji Vám v dalším studiu hodně vytrvalosti 80 Použitáliteratura POUŽITÁ LITERATURA 1. 2. 3. 4. FLANAGAN, David. JavaScript. Kompletní průvodce. 1. vyd. Praha: Computer Press, 1998, 710 s. ISBN 80‐722‐6093‐6. AITKEN, Peter G. Windows script host 2.0: dávkové soubory pro Windows. 1. vyd. Grada, 2001, 324 s. Moderní programování. ISBN 80‐247‐0134‐0 WILSON, Ed. Microsoft Windows Powershell step by step: dávkové soubory pro Windows. 1. vyd. Redmond, WA: Microsoft Press, 2007, 324 s. Moderní programování. ISBN 978‐ 073‐5623‐958. WALKENBACH, John. Excel 2010 power programming with VBA. Wiley, 2010, xxiv, 1051 s.
Podobné dokumenty
instalace operačního systému a jeho konfigurace i
fiktivních firem, které byste mohli řešit v pozici Správce operačních
systémů.
Teoretický materiál bude vložen jako e‐learningový kurz do prostředí
LMS Moodle, doplněn praktickými ú...
Rukovet ke GIS GRASS - Les-ejk
Ukazuje se, že pro vytisknutí histogramu existuje celá řada funkcí. Každá funkce má
v závorce napsáno, v jakém balíku se vyskytuje. Použijeme základní funkci ’hist’ z balíku
’graphics’, která vytis...
Bakalářská práce - Unicorn College
1. ÚVOD ............................................................................................................................. - 10 2. Inventarizace ............................................