Vytváření a spouštění skriptů PowerShellu z konzoly nástroje Configuration Manager

Platí pro: Configuration Manager (Current Branch)

Configuration Manager má integrovanou schopnost spouštět skripty PowerShellu. PowerShell má tu výhodu, že vytváří sofistikované automatizované skripty, které jsou srozumitelné a sdílené s širší komunitou. Skripty zjednodušují vytváření vlastních nástrojů pro správu softwaru a umožňují vám rychle provádět všední úkoly, což vám umožní provádět velké úlohy snadněji a konzistentněji.

Poznámka

Ve verzi 2006 a starších Configuration Manager tuto volitelnou funkci ve výchozím nastavení nepovoluje. Tuto funkci musíte před použitím povolit. Další informace najdete v tématu Povolení volitelných funkcí z aktualizací.

Díky této integraci do nástroje Configuration Manager můžete funkci Spustit skripty použít k provedení následujících akcí:

  • Vytvářejte a upravujte skripty pro použití s nástrojem Configuration Manager.
  • Spravujte používání skriptů prostřednictvím rolí a oborů zabezpečení.
  • Podpora složek pro skripty.
  • Spouštějte skripty v kolekcích nebo na jednotlivých místně spravovaných počítačích s Windows.
  • Naplánujte modul runtime skriptů v UTC na kolekcích nebo na jednotlivých místně spravovaných počítačích s Windows.
  • Získejte rychlé agregované výsledky skriptů z klientských zařízení.
  • Monitorujte provádění skriptů a prohlížejte si výsledky vytváření sestav z výstupu skriptu.

Upozornění

  • Vzhledem k síle skriptů vám připomínáme, abyste při jejich používání byli záměrně a opatrní. Zavedli jsme další bezpečnostní opatření, která vám pomohou; oddělené role a obory. Před spuštěním skriptů ověřte jejich přesnost a potvrďte, že pocházejí z důvěryhodného zdroje, abyste zabránili nechtěnému spuštění skriptů. Dávejte pozor na rozšířené znaky nebo jiné nejasnosti a vzdělávejte se, jak skripty zabezpečit. Další informace o zabezpečení skriptů PowerShellu
  • Určitý antimalwarový software může neúmyslně aktivovat události proti spouštěcím skriptům nástroje Configuration Manager nebo funkcím CMPirot. Doporučuje se vyloučit %windir%\CCM\ScriptStore, aby antimalwarový software umožnil spouštění těchto funkcí bez rušení.

Požadavky

  • Pokud chcete spouštět skripty PowerShellu, musí v klientovi běžet PowerShell verze 3.0 nebo novější. Pokud ale skript, který spouštíte, obsahuje funkce z novější verze PowerShellu, musí klient, na kterém skript spouštíte, používat tuto verzi PowerShellu.
  • Aby bylo možné spouštět skripty, musí klienti Configuration Manager používat klienta z verze 1706 nebo novější.
  • Pokud chcete používat skripty, musíte být členem příslušné role zabezpečení nástroje Configuration Manager.
  • Import a vytváření skriptů - Váš účet musí mít oprávnění Vytvořit pro SMS skripty.
  • Schválení nebo zamítnutí skriptů - Váš účet musí mít oprávnění Schválit pro SMS skripty.
  • Spouštění skriptů – váš účet musí mít oprávnění ke spuštění skriptu pro kolekce.

Další informace o rolích zabezpečení nástroje Configuration Manager:
Obory zabezpečení pro spuštěné skripty Role
zabezpečení pro spuštěné skripty
Základy správy na základě rolí.

Omezení

Spustit skripty aktuálně podporuje:

  • Skriptovací jazyky: PowerShell
  • Typy parametrů: celé číslo, řetězec a seznam.

Upozornění

Mějte na paměti, že při použití parametrů se otevře povrchová oblast pro potenciální riziko injektáže PowerShellu. Existují různé způsoby, jak je zmírnit a obejít, například pomocí regulárních výrazů k ověření zadání parametrů nebo pomocí předdefinovaných parametrů. Běžným osvědčeným postupem je nezahrnovat do skriptů PowerShellu tajné kódy (žádná hesla apod.). Další informace o zabezpečení skriptů PowerShellu

Spuštění skriptu Autoři a schvalovatelé

Funkce Spustit skripty používá koncept autorů skriptů a schvalovatelů skriptů jako samostatných rolí pro implementaci a spuštění skriptu. Oddělení rolí autora a schvalovatele umožňuje důležitou kontrolu tohoto výkonného nástroje, kterým je Spustit skripty. Existuje další role spouštěčů skriptů , která umožňuje spouštět skripty, ale ne vytvářet nebo schvalovat skripty. Viz Vytvoření rolí zabezpečení pro skripty.

Skripty, ovládání rolí

Ve výchozím nastavení uživatelé nemůžou schválit skript, který vytvořili. Vzhledem k tomu, že skripty jsou výkonné, univerzální a potenciálně nasazené na mnoha zařízeních, můžete rozdělit role na osobu, která skript vytvořila, a osobu, která skript schválí. Tyto role poskytují další úroveň zabezpečení proti spuštění skriptu bez dohledu. Sekundární schválení můžete vypnout, aby se usnadnilo testování.

Schválení nebo zamítnutí skriptu

Skripty musí být před spuštěním schváleny rolí schvalovatele skriptů . Schválení skriptu:

  1. V konzole nástroje Configuration Manager klikněte na položku Softwarová knihovna.
  2. V pracovním prostoru Softwarová knihovna klikněte na Skripty.
  3. V seznamu Skript vyberte skript, který chcete schválit nebo zamítnout, a pak na kartě Domů klikněte ve skupině Skript na Schválit či zamítnout.
  4. V dialogovém okně Schválit nebo zamítnout skript vyberte pro skript možnost Schválit nebo Odmítnout . Volitelně můžete zadat komentář týkající se vašeho rozhodnutí. Pokud skript odmítnete, nedá se spustit na klientských zařízeních.
    Skript – schválení
  5. Dokončete průvodce. V seznamu skriptů se sloupec Stav schválení mění v závislosti na provedené akci.

Povolení uživatelům schvalovat vlastní skripty

Toto schválení slouží primárně k testovací fázi vývoje skriptu.

  1. V konzole nástroje Configuration Manager klikněte na možnost Správa.
  2. V pracovním prostoru Správa rozbalte položku Konfigurace webu a klikněte na možnost Weby.
  3. V seznamu webů zvolte příslušný web a potom na kartě Domů klikněte ve skupině Weby na položku Nastavení hierarchie.
  4. Na kartě Obecné v dialogovém okně Vlastnosti nastavení hierarchie zrušte zaškrtnutí políčka Autoři skriptů vyžadují dalšího schvalovatele skriptů.

Důležité

Doporučený postup je nepovolovat autorům skriptů, aby schvalovali své vlastní skripty. Měla by být povolena pouze v testovacím prostředí. Pečlivě zvažte potenciální dopad změny tohoto nastavení v produkčním prostředí.

Rozsahy zabezpečení

Spouštět skripty používá obory zabezpečení, stávající funkci nástroje Configuration Manager, k řízení vytváření a spouštění skriptů prostřednictvím přiřazení značek, které představují skupiny uživatelů. Další informace o používání oborů zabezpečení najdete v tématu Konfigurace správy na základě rolí pro Configuration Manager.

Vytvoření rolí zabezpečení pro skripty

Tři role zabezpečení používané pro spouštění skriptů se ve výchozím nastavení v nástroji Configuration Manager nevytvářejí. Pokud chcete vytvořit role spouštěčů skriptů, autorů skriptů a schvalovatelů skriptů, postupujte podle uvedených kroků.

  1. V konzole nástroje Configuration Manager přejděte na Správa>rolí zabezpečení>a zabezpečení
  2. Klikněte pravým tlačítkem na roli a klikněte na Kopírovat. Role, kterou kopírujete, má už přiřazená oprávnění. Ujistěte se, že používáte jenom oprávnění, která chcete.
  3. Zadejte název apopis vlastní role.
  4. Přiřaďte roli zabezpečení níže uvedená oprávnění.

Oprávnění role zabezpečení

Název role: Script Runners

  • Popis: Tato oprávnění umožňují této roli spouštět pouze skripty, které byly dříve vytvořeny a schváleny jinými rolemi.
  • Oprávnění: Ujistěte se, že následující jsou nastavené na Ano.
Kategorie Oprávnění Stav
Kolekce Spustit skript Ano
Lokalita Přečtěte si Ano
SMS skripty Přečtěte si Ano

Název role: Autoři skriptů

  • Popis: Tato oprávnění této roli umožňují vytvářet skripty, ale nemůže je schvalovat ani spouštět.
  • Oprávnění: Ujistěte se, že jsou nastavená následující oprávnění.
Kategorie Oprávnění Stav
Kolekce Spustit skript Ne
Lokalita Přečtěte si Ano
SMS skripty Vytvoření Ano
SMS skripty Přečtěte si Ano
SMS skripty Vymazání Ano
SMS skripty Změnit Ano

Název role: Schvalovatelé skriptů

  • Popis: Tato oprávnění umožňují této roli schvalovat skripty, ale nemůže je vytvářet ani spouštět.
  • Oprávnění: Ujistěte se, že jsou nastavená následující oprávnění.
Kategorie Oprávnění Stav
Kolekce Spustit skript Ne
Lokalita Přečtěte si Ano
SMS skripty Přečtěte si Ano
SMS skripty Schválit Ano
SMS skripty Změnit Ano

Příklad oprávnění skriptů SMS pro roli autorů skriptů

Příklad oprávnění skriptů SMS pro roli autorů skriptů

Podpora složek pro skripty

Od verze 2403 můžete skripty uspořádat pomocí složek. Tato změna umožňuje lepší kategorizaci a správu skriptů.

Otevřete konzolu nástroje Configuration Manager a přejděte do pracovního prostoru Softwarová knihovna. Na pásu karet nebo v nabídce zobrazené po kliknutí pravým tlačítkem myši vyberte ze skriptů z následujících možností:

  • Vytvořit složku
  • Odstranit složku
  • Přejmenovat složku
  • Přesunutí složek
  • Nastavení bezpečnostních oborů

Vytvoření skriptu

  1. V konzole nástroje Configuration Manager klikněte na položku Softwarová knihovna.
  2. V pracovním prostoru Softwarová knihovna klikněte na Skripty.
  3. Na kartě Domů klikněte ve skupině Vytvořitna tlačítko Vytvořit skript.
  4. Na stránce Skript v průvodci Vytvořit skript nakonfigurujte následující nastavení:
    • Název skriptu – zadejte název skriptu. I když můžete vytvořit více skriptů se stejným názvem, použití duplicitních názvů ztěžuje nalezení skriptu, který potřebujete, v konzole nástroje Configuration Manager.
    • Skriptovací jazyk – V současné době se podporují pouze skripty PowerShellu.
    • Import – Naimportujte skript PowerShellu do konzole. Skript se zobrazí v poli Skript .
    • Vymazat – Odebere aktuální skript z pole Skript.
    • Skript – Zobrazí aktuálně importovaný skript. Skript v tomto poli můžete podle potřeby upravit.
  5. Dokončete průvodce. Nový skript se zobrazí v seznamu skriptů se stavem Čeká se na schválení. Abyste tento skript mohli spustit na klientských zařízeních, musíte ho schválit.

Důležité

Při používání funkce Spustit skripty se vyhněte skriptování restartování zařízení nebo restartování agenta nástroje Configuration Manager. Mohlo by to vést k trvalému stavu restartování. V případě potřeby jsou k dispozici vylepšení funkce oznámení klienta, která umožňují restartování zařízení. Sloupec čekající na restartování může pomoct identifikovat zařízení, která potřebují restartování.

Parametry skriptu

Přidání parametrů do skriptu poskytuje větší flexibilitu pro vaši práci. Můžete zadat až 10 parametrů. Následující popis popisuje aktuální možnosti funkce Spustit skripty s parametry skriptu pro: Řetězec, Celé číslo . K dispozici jsou také seznamy přednastavených hodnot. Pokud má váš skript nepodporované datové typy, zobrazí se upozornění.

V dialogovém okně Vytvořit skript klikněte v části Skript na Parametry skriptu.

Každý z parametrů skriptu má vlastní dialogové okno pro přidání dalších podrobností a ověření. Pokud je ve skriptu výchozí parametr, zobrazí se v uživatelském rozhraní parametrů jeho výčet a můžete ho nastavit. Configuration Manager nepřepíše výchozí hodnotu, protože skript nikdy přímo neupraví. Můžete si to představit tak, že v uživatelském rozhraní jsou k dispozici předem vyplněné navrhované hodnoty, ale Configuration Manager neposkytuje přístup k "výchozím" hodnotám za běhu. To se dá obejít úpravou skriptu tak, aby měl správné výchozí hodnoty.

Důležité

Hodnoty parametrů nesmí obsahovat jednu uvozovku.

Existuje známý problém, kdy se hodnoty parametrů, které zahrnují jednoduché uvozovky nebo jsou v nich uzavřené, nepředávají skriptu správně. Při zadávání výchozích hodnot parametrů obsahujících mezeru ve skriptu místo toho použijte dvojité uvozovky. Při zadávání výchozích hodnot parametrů během vytváření nebo provádění skriptu není nutné obklopovat výchozí hodnotu v uvozovkách double nebo single bez ohledu na to, zda hodnota obsahuje mezeru nebo ne.

Ověření parametru

Každý parametr ve skriptu má dialogové okno Vlastnosti parametru skriptu , kde můžete přidat ověření pro tento parametr. Po přidání ověření by se měly zobrazit chyby v případě, že zadáváte hodnotu parametru, který nesplňuje ověření kvality.

Příklad: Jméno

V tomto příkladu můžete nastavit vlastnosti parametru řetězce Jméno.

Parametry skriptu - řetězec

Ověřovací část dialogového okna Vlastnosti parametru skriptu obsahuje následující pole:

  • Minimální délka - minimální počet znaků pole Jméno .
  • Maximální délka – maximální počet znaků pole Jméno
  • RegEx – zkratka pro regulární výraz Další informace o použití regulárních výrazů naleznete v následující části, Použití ověření regulárních výrazů.
  • Vlastní chyba – užitečné pro přidání vlastní chybové zprávy, která nahradí všechny chybové zprávy ověření systému.

Použití ověřování regulárních výrazů

Regulární výraz je kompaktní forma programování pro kontrolu řetězce znaků proti zakódovanému ověření. Můžete například zkontrolovat, jestli v poli Jméno chybí písmenný znak velkého písmene, a to [^A-Z] umístěním do pole RegEx .

Zpracování regulárních výrazů pro toto dialogové okno je podporováno rozhraním .NET Framework. Pokyny k používání regulárních výrazů naleznete v tématu Regulární výraz .NET a Jazyk regulárních výrazů.

Příklady skriptů

Tady je několik příkladů, které ilustrují skripty, které můžete chtít s touto funkcí použít.

Vytvoření nové složky a souboru

Tento skript vytvoří novou složku a soubor ve složce podle vašeho zadání názvu.

Param(
[Parameter(Mandatory=$True)]
[string]$FolderName,
[Parameter(Mandatory=$True)]
[string]$FileName
)

New-Item $FolderName -type directory
New-Item $FileName -type file

Získání verze operačního systému

Tento skript se pomocí rozhraní WMI dotazuje počítače na verzi operačního systému.

Write-Output (Get-WmiObject -Class Win32_operatingSystem).Caption

Úpravy nebo kopírování skriptů PowerShellu

Můžete upravit nebo zkopírovat existující skript PowerShellu používaný s funkcí Spustit skripty . Místo toho, abyste znovu vytvářeli skript, který potřebujete změnit, ho teď přímo upravujte. Při obou akcích se používá stejný průvodce, jako když vytvoříte nový skript. Když skript upravíte nebo zkopírujete, Configuration Manager nezachová stav schválení.

Tip

Neupravujte skript, který je aktivně spuštěn na klientech. Nedokončí původní skript a tito klienti nemusí dosáhnout zamýšlených výsledků.

Úprava skriptu

  1. Přejděte na uzel Skripty v pracovním prostoru Softwarová knihovna .
  2. Vyberte skript, který chcete upravit, a pak klikněte na Upravit na pásu karet.
  3. Změňte nebo znovu importujte skript na stránce Podrobnosti skriptu .
  4. Kliknutím na Další zobrazte souhrn a po dokončení úprav klikněte na Zavřít .

Zkopírování skriptu

  1. Přejděte na uzel Skripty v pracovním prostoru Softwarová knihovna .
  2. Vyberte skript, který chcete zkopírovat, a pak klikněte na Kopírovat na pásu karet.
  3. Přejmenujte skript v poli Název skriptu a proveďte další potřebné úpravy.
  4. Kliknutím na Další zobrazte souhrn a po dokončení úprav klikněte na Zavřít .

Spuštění skriptu

Po schválení může být skript spuštěn na jednom zařízení nebo kolekci. Jakmile skript začne, spustí se rychle prostřednictvím systému s vysokou prioritou, jehož časový limit vyprší za jednu hodinu. Výsledky skriptu jsou pak vráceny pomocí systému stavových zpráv.

Výběr kolekce cílů pro skript:

  1. V konzole nástroje Configuration Manager klikněte na Prostředky a dodržování předpisů.
  2. V pracovním prostoru Prostředky a dodržování předpisů klikněte na Kolekce zařízení.
  3. V seznamu Kolekce zařízení klikněte na kolekci zařízení, na které chcete skript spustit.
  4. Vyberte kolekci podle svého výběru a klikněte na Spustit skript.
  5. Na stránce Skript v Průvodci spuštěním skriptu vyberte skript ze seznamu. Zobrazují se jenom schválené skripty.
  6. Klikněte na tlačítko Další a dokončete průvodce.

Důležité

Pokud se skript nespustí, například proto, že cílové zařízení je během jedné hodiny vypnuté, musíte jej spustit znovu.

Naplánování běhu skriptů

Počínaje verzí 2309 aktuální větve nástroje Configuration Manager teď můžete naplánovat modul runtime skriptů ve formátu UTC.

Naplánování spuštění skriptu pro kolekci:

  1. V konzole nástroje Configuration Manager klikněte na Prostředky a dodržování předpisů.

  2. V pracovním prostoru Prostředky a dodržování předpisů klikněte na Kolekce zařízení.

  3. V seznamu Kolekce zařízení klikněte na kolekci zařízení, na které chcete skript naplánovat.

  4. Vyberte kolekci podle svého výběru a klikněte na Spustit skript.

  5. Na stránce Plánování naplánujte spuštění skriptu na zaškrtávací políčko a zadejte čas plánu v UTC.

  6. Ověřte podrobnosti, které se zobrazují na stránce souhrnu.

  7. Klikněte na tlačítko Další a dokončete průvodce.

    Screenshot of script - schedule.

Poznámka

Každých 5 minut bude zpracováno maximálně dvacet pět naplánovaných scénářů.

Spuštění cílového počítače

Skript se spustí jako systémový účet nebo účet počítače na cílovém klientovi. Tento účet má omezený přístup k síti. Jakýkoli přístup skriptu ke vzdáleným systémům a umístěním musí být odpovídajícím způsobem zřízen.

Monitorování skriptů

Po zahájení spuštění skriptu v kolekci zařízení monitorujte operaci pomocí následujícího postupu. Skript můžete monitorovat v reálném čase při jeho provádění a později se vrátit ke stavu a výsledkům daného spuštění skriptu. Data stavu skriptu se vyčistí v rámci úlohy údržby Odstranění zastaralých operací klienta nebo odstranění skriptu.

Script monitor - Script Run Status

  1. V konzole Configuration Manager klikněte na Monitorování.

  2. V pracovním prostoru Monitorování klikněte na Stav skriptu.

  3. V seznamu Stav skriptu se zobrazí výsledky pro každý skript, který jste spustili na klientských zařízeních. Ukončovací kód skriptu s hodnotou 0 obecně označuje, že skript proběhl úspěšně.

    Monitorování skriptů – zkrácený skript

Naplánování skriptu Monitorování kolekce

  1. V konzole Configuration Manager klikněte na Monitorování.

  2. V pracovním prostoru Monitorování klikněte na uzel Naplánované skripty.

  3. V seznamu naplánovaných skriptů se zobrazí nový řádek.

  4. Ověřte, že se v seznamu naplánovaných skriptů zobrazil nový řádek. Sloupec stav by měl mít hodnotu Scheduled. Sloupec ClientOperationId by měl být prázdný. Ověřte, jestli ostatní sloupce, jako je Název skriptu, Čas plánu atd., mají příslušné hodnoty.

  5. Po naplánování aktualizujte uzel Naplánované skripty . Sloupec stavu by měl mít hodnotu Úspěšně zahájená klientská operace. Sloupec ClientOperationId by měl mít celočíselnou hodnotu.

  6. V pracovním prostoru Monitorování klikněte na uzel Stav skriptu. Ověřte, zda byl v seznamu zobrazen nový řádek a zda se hodnota ClientOperationId rovná hodnotě ClientOperationId z uzlu Naplánované skripty .

  7. Klikněte na Zobrazit stav a ujistěte se, že se zobrazí výstup skriptu.

    Screenshot of script - schedule monitoring,

Výstup skriptu

Výstup návratového skriptu klienta pomocí formátování JSON předáním výsledků skriptu do rutiny ConvertTo-Json . Formát JSON konzistentně vrací čitelný výstup skriptu. U skriptů, které nevracejí objekty jako výstup, rutina ConvertTo-Json převede výstup na jednoduchý řetězec, který vrátí klient místo JSON.

  • Skripty, které získají neznámý výsledek nebo skripty, u kterých byl klient offline, se v grafech ani sadě dat nezobrazí.

  • Vyhněte se vrácení výstupu velkého skriptu, protože je zkrácen na 4 kB.

  • Převeďte objekt výčtu na řetězcovou hodnotu ve skriptech, aby se správně zobrazovaly ve formátování JSON.

    Převod objektu výčtu na hodnotu žihadla

Můžete si prohlédnout podrobný výstup skriptu v nezpracovaném nebo strukturovaném formátu JSON. Toto formátování usnadňuje čtení a analýzu výstupu. Pokud skript vrátí platný text ve formátu JSON nebo výstup lze převést na JSON pomocí rutiny PowerShellu ConvertTo-Json , zobrazte podrobný výstup buď jako výstup JSON , nebo jako nezpracovaný výstup. Jinak je jedinou možností Výstup skriptu.

Příklad: Výstup skriptu je převoditelný na platný JSON

Příkaz: $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  551

Příklad: Výstup skriptu není platný JSON

Příkaz: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption

Microsoft Windows 10 Enterprise

Soubory protokolů

  • Na klientovi ve výchozím nastavení v C:\Windows\CCM\logs:

    • Scripts.log
    • CcmMessaging.log
  • Na MP ve výchozím nastavení v C:\SMS_CCM\Logs:

    • MP_RelayMsgMgr.log
  • Na serveru lokality ve výchozím nastavení v C:\Program Files\Configuration Manager\Logs:

    • SMS_Message_Processing_Engine.log

Automatizace pomocí Windows PowerShell

K automatizaci některých z těchto úkolů můžete použít následující rutiny PowerShellu:

Viz také