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,[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|
[email protected]@firemni.cz‐
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)[email protected]
[email protected]"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"")[email protected]
[email protected]"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. 
Download

Automatizace úkonů správy operačních systémů I