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

Platí pro: Configuration Manager (Current Branch)

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

Poznámka

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

S touto integrací v Configuration Manager můžete pomocí funkce Spustit skripty provádět následující věci:

  • Vytvářejte a upravujte skripty pro použití s Configuration Manager.
  • Správa využití skriptů prostřednictvím rolí a oborů zabezpečení
  • Spouštějte skripty na kolekcích nebo jednotlivých místně spravovaných počítačích s Windows.
  • Naplánujte modul runtime skriptů ve standardu UTC na kolekcích nebo jednotlivých místně spravovaných počítačích s Windows.
  • Získejte rychlé výsledky agregovaných skriptů z klientských zařízení.
  • Monitorujte spouštění skriptů a zobrazte výsledky generování sestav z výstupu skriptu.

Upozornění

  • Vzhledem k výkonu skriptů vám připomínáme, abyste byli úmyslní a opatrní při jejich používání. 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 přesnost a ověřte, že pocházejí z důvěryhodného zdroje, abyste zabránili neúmyslnému spuštění skriptů. Mějte na paměti rozšířené znaky nebo jiné obfuskace a poučte se o zabezpečení skriptů. Další informace o zabezpečení skriptů PowerShellu
  • Určitý antimalwarový software může neúmyslně aktivovat události proti Configuration Manager spustit skripty nebo funkce CMPivot. Doporučuje se vyloučit %windir%\CCM\ScriptStore, aby antimalwarový software umožnil spuštění těchto funkcí bez rušení.

Požadavky

  • Pokud chcete spouštět skripty PowerShellu, musí klient používat PowerShell verze 3.0 nebo novější. Pokud ale skript, který spustíte, obsahuje funkce z novější verze PowerShellu, musí klient, na kterém skript spustíte, používat tuto verzi PowerShellu.
  • Configuration Manager klienti musí používat klienta z verze 1706 nebo novější, aby mohli spouštět skripty.
  • Pokud chcete používat skripty, musíte být členem příslušné role zabezpečení Configuration Manager.
  • Pokud chcete importovat a vytvářet skripty – Váš účet musí mít oprávnění k vytvářenískriptů SMS.
  • Pokud chcete schvalovat nebo odepřít skripty – Váš účet musí mít oprávnění Ke schválenískriptů SMS.
  • Pokud chcete spouštět skripty – Váš účet musí mít oprávnění Spustit skript pro kolekce.

Další informace o Configuration Manager rolích zabezpečení:
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í

Funkce 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írá prostor pro potenciální riziko útoku prostřednictvím injektáže PowerShellu. Existují různé způsoby, jak to zmírnit a obejít, například použití regulárních výrazů k ověření vstupu parametru nebo použití předdefinovaných parametrů. Běžným osvědčeným postupem je nezahrnovat tajné kódy do skriptů PowerShellu (bez hesel atd.). Další informace o zabezpečení skriptů PowerShellu

Spuštění autorů a schvalovatelů skriptů

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

Řízení rolí skriptů

Ve výchozím nastavení nemůžou uživatelé 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 role oddělit mezi osobou, která skript vytváří, a osobou, která skript schvaluje. Tyto role poskytují další úroveň zabezpečení proti spuštění skriptu bez dohledu. Sekundární schvalování 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 Configuration Manager klikněte na Softwarová knihovna.
  2. V pracovním prostoru Softwarová knihovna klikněte na Skripty.
  3. V seznamu Skript zvolte skript, který chcete schválit nebo zamítnout, a potom na kartě Domů ve skupině Skript klikněte na Schválit nebo zamítnout.
  4. 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í. Pokud skript zamítnete, nebude možné ho spustit na klientských zařízeních.
    Skript – schválení
  5. Dokončete průvodce. V seznamu Skript uvidíte, že se sloupec Stav schválení mění v závislosti na akci, kterou jste provedli.

Povolit uživatelům schvalovat vlastní skripty

Toto schválení se primárně používá pro testovací fázi vývoje skriptů.

  1. V konzole Configuration Manager klikněte na Správa.
  2. V pracovním prostoru Správa rozbalte Položku Konfigurace lokality a potom klikněte na položku Lokality.
  3. V seznamu webů zvolte svůj web a potom na kartě Domů ve skupině Weby klikněte na 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 skriptu.

Důležité

Osvědčeným postupem je nepovolit autorovi skriptu schvalovat vlastní skripty. Mělo by to být povolené jenom v nastavení testovacího prostředí. Pečlivě zvažte potenciální dopad změny tohoto nastavení v produkčním prostředí.

Rozsahy zabezpečení

Funkce Run Scripts používá obory zabezpečení, což je stávající funkce Configuration Manager, k řízení vytváření a spouštění skriptů prostřednictvím přiřazování 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.

Vytváření rolí zabezpečení pro skripty

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

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

Oprávnění role zabezpečení

Název role: Skript 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 jsou následující možnosti nastavené na Ano.
Kategorie Oprávnění Stav
Kolekce Spustit skript Ano
Stránky Číst Ano
Skripty SMS Číst Ano

Název role: Autoři skriptů

  • Popis: Tato oprávnění umožňují této roli vytvářet skripty, ale nemůžou 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
Stránky Číst Ano
Skripty SMS Vytvoření Ano
Skripty SMS Číst Ano
Skripty SMS Vymazání Ano
Skripty SMS Upravit Ano

Název role: Schvalovatelé skriptů

  • Popis: Tato oprávnění umožňují této roli schvalovat skripty, ale nemůžou 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
Stránky Číst Ano
Skripty SMS Číst Ano
Skripty SMS Schválit Ano
Skripty SMS Upravit Ano

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

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

Vytvoření skriptu

  1. V konzole Configuration Manager klikněte na Softwarová knihovna.
  2. V pracovním prostoru Softwarová knihovna klikněte na Skripty.
  3. Na kartě Domů ve skupině Vytvořit klikněte na Vytvořit skript.
  4. Na stránce Skript v Průvodci vytvořením skriptu 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žívání duplicitních názvů ztěžuje vyhledání skriptu, který potřebujete, v konzole Configuration Manager.
    • Skriptovací jazyk – V současné době se podporují jenom skripty PowerShellu.
    • Import – Importuje do konzoly skript PowerShellu. Skript se zobrazí v poli Skript .
    • Vymazat – odebere aktuální skript z pole Skript.
    • Script – 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í. Před spuštěním tohoto skriptu na klientských zařízeních ho musíte schválit.

Důležité

Při použití funkce Spustit skripty se vyhněte skriptování restartování zařízení nebo restartování agenta Configuration Manager. To by mohlo vést ke stavu průběžného restartování. V případě potřeby existují 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 zahrnout až 10 parametrů. Následující informace popisují aktuální možnosti funkce Spustit skripty s parametry skriptu pro; Řetězec, celočíselné datové typy. 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, bude v uživatelském rozhraní parametru výčtu 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 jako "předem vyplněné navrhované hodnoty", které jsou k dispozici v uživatelském rozhraní, 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ů nemohou obsahovat jednu uvozovku.

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

Ověření parametrů

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

Příklad: Jméno

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

Parametry skriptu – řetězec

Oddíl ověření v dialogovém okně Vlastnosti parametru skriptu obsahuje následující pole pro vaše použití:

  • 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ího výrazu najdete v další části Použití ověření regulárního výrazu.
  • Vlastní chyba – je užitečná pro přidání vlastní chybové zprávy, která nahrazuje všechny chybové zprávy ověření systému.

Použití ověření regulárního výrazu

Regulární výraz je kompaktní forma programování pro kontrolu řetězce znaků proti zakódovanému ověření. Například umístěním do pole RegEx můžete zkontrolovat, jestli v poli [^A-Z]FirstName chybí znak velké abecedy.

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

Příklady skriptů

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

Vytvoření nové složky a souboru

Tento skript vytvoří v rámci složky novou složku a soubor vzhledem k zadání názvů.

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 používá rozhraní WMI k dotazování počítače na jeho verzi operačního systému.

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

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

Existující skript PowerShellu, který se používá s funkcí Spustit skripty, můžete upravit nebo zkopírovat. Místo opětovného vytvoření skriptu, který potřebujete změnit, teď ho přímo upravte. Obě akce používají stejné prostředí průvodce jako při vytváření nového skriptu. Když upravujete nebo kopírujete skript, Configuration Manager neuchovává stav schválení.

Tip

Neupravujte skript, který je aktivně spuštěný na klientech. Nedokončí spuštění původního skriptu a z těchto klientů možná nedostanete požadované výsledky.

Úprava skriptu

  1. V pracovním prostoru Softwarová knihovna přejděte do uzlu Skripty.
  2. Vyberte skript, který chcete upravit, a pak na pásu karet klikněte na Upravit .
  3. Změňte nebo znovu naimportujte skript na stránce Podrobnosti skriptu .
  4. Kliknutím na Další zobrazíte souhrn a až budete hotovi s úpravami , zobrazíte souhrn a pak zavřete .

Kopírování skriptu

  1. V pracovním prostoru Softwarová knihovna přejděte do uzlu Skripty.
  2. Vyberte skript, který chcete zkopírovat, a pak na pásu karet klikněte na Kopírovat .
  3. Přejmenujte skript v poli Název skriptu a proveďte další potřebné úpravy.
  4. Kliknutím na Další zobrazíte souhrn a až budete hotovi s úpravami , zobrazíte souhrn a pak zavřete .

Spuštění skriptu

Po schválení je možné skript spustit na jednom zařízení nebo v kolekci. Jakmile začnete spouštět skript, spustí se rychle prostřednictvím systému s vysokou prioritou, který vyprší za hodinu. Výsledky skriptu se pak vrátí pomocí systému stavových zpráv.

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

  1. V konzole Configuration Manager klikněte na Prostředky a kompatibilita.
  2. V pracovním prostoru Prostředky a kompatibilita klikněte na Kolekce zařízení.
  3. V seznamu Kolekce zařízení klikněte na kolekci zařízení, na kterých 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 zvolte v seznamu skript. Zobrazí se pouze schválené skripty.
  6. Klikněte na Další a dokončete průvodce.

Důležité

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

Plánování modulu runtime skriptů

Počínaje Configuration Manager aktuální větev verze 2309 teď můžete naplánovat modul runtime skriptů ve standardu UTC.

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

  1. V konzole Configuration Manager klikněte na Prostředky a kompatibilita.

  2. V pracovním prostoru Prostředky a kompatibilita klikněte na Kolekce zařízení.

  3. V seznamu Kolekce zařízení klikněte na kolekci zařízení, na kterých 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í zaškrtněte políčko Naplánovat spuštění skriptu v a zadejte Čas plánu ve standardu UTC.

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

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

    Snímek obrazovky se skriptem – plán

Poznámka

Každých 5 minut se provede maximálně dvacet pět naplánovaných skriptů.

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

Skript se spustí jako systémový účet nebo účet počítače na cílových klientech. Tento účet má omezený síťový přístup. Veškerý přístup ke vzdáleným systémům a umístěním pomocí skriptu musí být odpovídajícím způsobem zřízen.

Monitorování skriptů

Po zahájení spuštění skriptu na kolekci zařízení použijte následující postup ke sledování operace. Při spouštění skriptu můžete monitorovat v reálném čase a později se vrátit ke stavu a výsledkům spuštění daného skriptu. Data o stavu skriptu se vyčistí v rámci úlohy údržby odstranění zastaralých operací klienta nebo odstranění skriptu.

Monitorování skriptů – Stav spuštění skriptu

  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 zobrazíte výsledky pro každý skript, který jste spustili na klientských zařízeních. Ukončovací kód skriptu 0 obecně značí, že se skript úspěšně spustil.

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

Plánování monitorování skriptů v kolekci

  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. Nový řádek se zobrazí v seznamu naplánovaných skriptů.

  4. Ověřte, že se v seznamu naplánovaných skriptů zobrazil nový řádek. Sloupec state (Stav) by měl mít hodnotu Scheduled (Naplánovano). Sloupec ClientOperationId by měl být prázdný. Ověřte, že ostatní sloupce, jako je Název skriptu, Čas plánování atd., mají odpovídající hodnoty.

  5. Po zobrazení Naplánovaný čas aktualizujte uzel Naplánované skripty . Sloupec stav by měl obsahovat hodnotu Operace klienta byla úspěšně zahájena. 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, že se v seznamu zobrazil nový řádek a hodnota ClientOperationId se rovná ClientOperationId z uzlu Naplánované skripty .

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

    Snímek obrazovky se skriptem – plánování monitorování,

Výstup skriptu

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

  • Skripty, které získají neznámý výsledek nebo kde byl klient offline, se v grafech nebo datové sadě nezobrazí.

  • Nevracejte výstup velkých skriptů, protože je zkrácený na 4 kB.

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

    Převod objektu výčtu na hodnotu bodnutí

Podrobný výstup skriptu můžete zobrazit 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 je možné výstup převést na JSON pomocí rutiny PowerShellu ConvertTo-Json , prohlédněte si podrobný výstup buď jako výstup JSON , nebo jako nezpracovaný výstup. V opačném případě je jedinou možností výstup skriptu.

Příklad: Výstup skriptu je převoditelný na platný kód JSON.

Příkaz: $PSVersionTable.PSVersion

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

Příklad: Výstup skriptu není platný ve formátu JSON.

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

Microsoft Windows 10 Enterprise

Soubory protokolů

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

    • Scripts.log
    • CcmMessaging.log
  • Ve výchozím nastavení v sadě management management ve složce C:\SMS_CCM\Logs:

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

    • SMS_Message_Processing_Engine.log

Automatizace pomocí Windows PowerShell

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

Viz také