Automatické spouštění skriptů ve Windows je klíčovou funkcí pro správu a automatizaci úloh. Existuje několik způsobů, jak toho dosáhnout, od jednoduchého přidání do složky "Po spuštění" až po pokročilé plánování pomocí příkazové řádky nebo nástrojů pro správu.
Základní postup použití standardních příjemců je vždy stejný a nachází se v Monitorování a reakce na události se standardními příjemci. Třída ActiveScriptEventConsumer má zvláštní omezení zabezpečení. Tento standardní příjemce musí být nakonfigurován místním členem skupiny Administrators v místním počítači. Skript můžete napsat v libovolném jazyce, ale ujistěte se, že je na počítači nainstalovaný skriptovací modul pro jazyk, který zvolíte. Příjemce skriptu může nastavit pouze správce a skript se spustí v rámci přihlašovacích údajů LocalSystem, což příjemci poskytuje široké možnosti s výjimkou síťového přístupu.
Text skriptu můžete umístit do ScriptText, nebo můžete zadat cestu a název souboru skriptu v ScriptFileName. Příklady v následující části ukazují dva způsoby implementace skriptu řízeného událostmi. První příklad používá skript definovaný v externím souboru a druhý příklad používá skript, který je integrovaný do kódu MOF.
Spuštění programů po startu Windows lze nastavit i přidáním do složky Po spuštění. Naplánování úlohy z příkazové řádky lze pomocí příkazu SCHTASKS nebo AT.
Plánování úloh pomocí příkazové řádky
Příkaz AT plánuje spouštění příkazů a programů v počítači v zadaném čase a datu.
at \\computername time /interactive | /every:date,... /next:date,...
Následující příklady ukazují různé možnosti plánování úloh:
- Automatické spuštění skriptu každý den v 1 hodinu.
- Automatické spuštění skriptu každý den po pěti minutách od 6 do 12 hodin (Win 7).
- The following command schedules the MyApp program to run hourly beginning at five minutes past midnight. Because the /mo parameter is omitted, the command uses the default value for the hourly schedule, which is every (1) hour.
- The following command schedules the MyApp program to run every five hours beginning on the first day of March 2001. It uses the /mo parameter to specify the interval and the /sd parameter to specify the start date.
- until December 31, 2001. (13:00) beginning on December 31, 2001.
- The following command schedules the MyApp program to run on a remote computer every six weeks. The command uses the /mo parameter to specify the interval. It also uses the /s parameter to specify the remote computer and the /ru parameter to schedule the task to run with the permissions of the user’s Administrator account.
- The following command schedules a task to run every other Friday. It uses the /mo parameter to specify the two-week interval and the /d parameter to specify the day of the week.
- The following command schedules the MyApp program to run on the first day of every month.
- The following command schedules the MyApp program to run on the last day of every month.
- The following command schedules the MyApp program to run every three months.
- The following command schedules the MyApp program to run on the second Sunday of every month.
- The following command schedules the MyApp program to run on May 15 and June 15 at 3:00 PM (15:00). It uses the /d parameter to specify the date and the /m parameter to specify the months.
- The following command schedules the MyApp program to run at midnight on January 1, 2002.
- The following command schedules a batch file to run every time a user (any user) logs on to the remote computer. It uses the /s parameter to specify the remote computer.
- The following command schedules the MyApp program to run whenever the computer is idle.

Automatizace pomocí PowerShellu
PowerShell je mocný nástroj pro automatizaci úloh ve Windows. Umožňuje vytvářet sofistikované skripty, které lze automaticky spouštět.
Standardně v operačních systémech není povoleno spouštět PowerShell skripty, jde o bezpečnostní nastavení zvané Execution Policy. Toto nastavení můžeme v systému změnit pomocí PowerShell příkazu nebo pomocí Group Policy.
Pro automatické spouštění PowerShell skriptů využijeme plánovač úloh z Windows (Task Scheduler). Ve Windows Server 2008 přidáme na záložce Action událost Start a program a jako script dáme powershell, jako argument dáme cestu k vašemu skriptu (např. `c:\Skripty\skript.ps1`). Na záložce Triggers přidáme plánovaný úkol a zadáme požadovanou periodu spouštění. Na záložce General nastavíme, pod jakým účtem skript poběží.

Příklady využití PowerShell skriptů
- Správa Active Directory: Můžeme vytvářet reporty uživatelů, kteří se nepřihlásili po definovanou dobu, seznamy zakázaných či zamčených účtů, nebo informace o nových, smazaných či přejmenovaných počítačových účtech.
- Správa Exchange Serveru: Lze kontrolovat velikost poštovních schránek a upozorňovat na překročení limitů, nebo sledovat velikost veřejných složek.
- Sledování mobilních zařízení: Můžeme získat přehled o mobilních zařízeních synchronizovaných s Exchange ActiveSync.
- Monitorování souborů: Skripty mohou sledovat změny v adresářích, jako je například adresář záloh, a upozornit na soubory s nulovou velikostí.
- Správa DHCP: I když PowerShell nemá přímé cmdlety pro ovládání DHCP serveru, lze využít klasický příkaz `netsh` k získání informací o pronajatých IP adresách.
Při práci s PowerShell skripty je důležité dbát na bezpečnost. Nikdy nezahrnujte citlivé údaje (hesla apod.) přímo do skriptů. Využívejte role autorů a schvalovatelů skriptů pro lepší kontrolu a zabezpečení.
Configuration Manager a spouštění skriptů
Configuration Manager má integrovanou schopnost spouštět skripty PowerShellu. Tato funkce umožňuje spravovat a automatizovat úlohy na klientských zařízeních.
Důležité bezpečnostní aspekty:
- Před spuštěním skriptů ověřte jejich přesnost a původ.
- Vyhněte se skriptování restartování zařízení nebo agenta Configuration Manager.
- Mějte na paměti potenciální rizika spojená s parametry skriptů a používejte ověřování vstupů.
- Oddělujte role tvůrce a schvalovatele skriptu pro zvýšení bezpečnosti.
Skripty musí být před spuštěním schváleny rolí schvalovatele skriptů. V dialogovém okně Schválit nebo zamítnout skript vyberte u skriptu Schválit nebo Zamítnout. Volitelně můžete zadat komentář k vašemu rozhodnutí.
Funkce Run Scripts používá obory zabezpečení k řízení vytváření a spouštění skriptů prostřednictvím přiřazování značek.

Parametry skriptů a jejich využití
Přidání parametrů do skriptu poskytuje větší flexibilitu. Můžete zahrnout až 10 parametrů s různými datovými typy (řetězec, celé číslo) a seznamy přednastavených hodnot.
Každý parametr skriptu má vlastní dialogové okno pro přidání dalších podrobností a ověření. Je důležité si uvědomit, že hodnoty parametrů nemohou obsahovat jednu uvozovku. Při zadávání výchozích hodnot parametrů obsahujících mezeru ve skriptu použijte místo toho dvojité uvozovky.
Pro ověření vstupů parametrů lze využít regulární výrazy (RegEx), které jsou podporovány rozhraním .NET Framework.
Monitorování a správa spouštění skriptů
Po zahájení spuštění skriptu na kolekci zařízení můžete sledovat jeho průběh v reálném čase a později se vrátit ke stavu a výsledkům spuštění. V seznamu Stav skriptu zobrazíte výsledky pro každý skript, který jste spustili na klientských zařízeních.
Výstup návratového skriptu klienta lze formátovat pomocí rutiny `ConvertTo-Json` pro přehlednější zobrazení. Skripty, které vrátí platný text ve formátu JSON nebo je možné výstup převést na JSON, lze prohlížet v nezpracovaném nebo strukturovaném formátu JSON.
Automate PowerShell Scripts with Task Scheduler
Sestavení skriptu již nemusí být složité a hodně vám pomůže Google. Hlavní je rozmyslet, o čem v síti chcete být informováni.
tags: #spusteni #skriptu #automaticky #windows