Skapa och köra PowerShell-skript från konfigurationshanterarens konsol

Gäller för: Konfigurationshanteraren (current branch)

Konfigurationshanteraren har en integrerad möjlighet att köra PowerShell-skript. PowerShell har fördelen med att skapa avancerade, automatiserade skript som förstås och delas med en större community. Skripten förenklar att skapa anpassade verktyg för att administrera programvara och gör att du snabbt kan utföra uppgifter, så att du kan få stora jobb gjorda enklare och mer konsekvent.

Anteckning

I version 2006 och tidigare har Konfigurationshanteraren inte den här valfria funktionen som standard. Du måste aktivera den här funktionen innan du kan använda den. Mer information finns i avsnittet Enable optional features from updates.

Med den här integreringen i Konfigurationshanteraren kan du använda funktionen Kör skript för att göra följande:

  • Skapa och redigera skript för användning med Konfigurationshanteraren.
  • Hantera skriptanvändning genom roller och säkerhetsomfattningar.
  • Kör skript på samlingar eller enskilda lokala hanterade Windows-datorer.
  • Få snabba aggregerade skriptresultat från klientenheter.
  • Övervaka skriptkörning och visa rapportresultat från skriptutdata.

Varning

  • Vi påminner dig om att vara avsiktlig och försiktig med användningen av skript. Vi har skapat ytterligare säkerhetsåtgärder för att hjälpa dig. avskiljda roller och omfattningar. Se till att validera noggrannheten av skript innan du kör dem och kontrollera att de kommer från en betrodd källa, för att förhindra oavsiktlig körning av skript. Var mindful of extended characters or other obfuscation and educate yourself about securing scripts. Lär dig om säkerhet för PowerShell-skript
  • Vissa program mot skadlig programvara kan oavsiktligt utlösa händelser mot Configuration Manager Run Scripts eller CMPivot-funktioner. Vi rekommenderar att du undantar %windir%\CCM\ScriptStore så att skydd mot skadlig programvara tillåter att dessa funktioner körs utan störningar.

Förutsättningar

  • För att kunna köra PowerShell-skript måste klienten köra PowerShell version 3.0 eller senare. Men om ett skript som du kör innehåller funktioner från en senare version av PowerShell måste klienten där du kör skriptet köra den versionen av PowerShell.
  • Configuration Manager-klienter måste köra klienten från 1706-versionen eller senare för att kunna köra skript.
  • Om du vill använda skript måste du vara medlem i lämplig Konfigurationshanteraren säkerhetsroll.
  • Importera och skapa skript – Ditt konto måste ha behörighet att skapa SMS-skript.
  • För att godkänna eller neka skript – Ditt konto måste ha behörighet att godkänna SMS-skript.
  • Kör skript – ditt konto måste ha kör skriptbehörigheter för samlingar.

Mer information om säkerhetsroller i Konfigurationshanteraren finns här:
Säkerhetsomfattningar för körningsskript
Säkerhetsroller för körningsskript
Grunderna i rollbaserad administration.

Begränsningar

Kör skript har för närvarande stöd för:

  • Skriptspråk: PowerShell
  • Parametertyper: heltal, sträng och lista.

Varning

När du använder parametrar öppnas ett ytområde för potentiell PowerShell-beläggningsattack. Det finns olika sätt att minimera och komma runt, t.ex. använda reguljära uttryck för att verifiera parameterindata eller använda fördefinierade parametrar. Vanligt är att inte inkludera hemligheter i dina PowerShell-skript (inga lösenord osv.). Lär dig om säkerhet för PowerShell-skript

Köra skriptförfattare och godkännare

Kör skript använder konceptet skriptförfattare och skript godkännare som separata roller för implementering och körning av ett skript. Att separera författar- och godkännarrollerna gör att det finns en viktig process för kontroll av det kraftfulla verktyg som Kör skript är. Det finns ytterligare en skriptkörningsroll som tillåter körning av skript, men inte skapande eller godkännande av skript. Se Skapa säkerhetsroller för skript.

Kontroll för skriptroller

Som standard kan användare inte godkänna ett skript som de har skapat. Eftersom skript är kraftfulla, mångsidiga och eventuellt distribuerade till många enheter kan du separera rollerna mellan den person som skapar skriptet och den person som godkänner skriptet. De här rollerna ger en ytterligare säkerhetsnivå mot att köra ett skript utan överblick. Du kan inaktivera sekundärt godkännande så att det blir enklare att testa.

Godkänna eller neka ett skript

Skript måste godkännas av rollen skriptgodkännare innan de kan köras. Så här godkänner du ett skript:

  1. Klicka på Programvarubibliotek i konfigurationshanterarens konsol.
  2. Klicka på Skript på arbetsytan Programvarubibliotek.
  3. I listan Skript väljer du skriptet som du vill godkänna eller neka och klickar sedan på Godkänn/Neka i gruppen Skript på fliken Start.
  4. I dialogrutan Godkänn eller neka skript väljer du Godkänn eller Neka för skriptet. Du kan också ange en kommentar om ditt beslut. Om du nekar ett skript kan det inte köras på klientenheter.
    Skript – godkännande
  5. Slutför guiden. I listan Skript ser du kolumnen Godkännandetillstånd ändras beroende på vilken åtgärd du har vidta.

Tillåt användare att godkänna sina egna skript

Det här godkännandet används främst för testfasen av skriptutveckling.

  1. Klicka på Administration i konfigurationshanterarens konsol.
  2. På arbetsytan Administration expanderar du Webbplatskonfiguration och klickar sedan på Webbplatser.
  3. I listan med webbplatser väljer du din webbplats och klickar sedan på Hierarki i gruppen Webbplatser på Inställningar.
  4. På fliken Allmänt i dialogrutan Hierarki Inställningar Egenskaper avmarkerar du kryssrutan Skriptförfattare kräver ytterligare skript godkännare.

Viktigt

Det är en bra metod att inte tillåta att en skriptförfattare godkänner sina egna skript. Det bör endast tillåtas i labinställningar. Fundera noga över hur en eventuell ändring av inställningen kan påverkas i en produktionsmiljö.

Säkerhetsomfattningar

Kör skript använder säkerhetsomfattningar, en befintlig funktion i Configuration Manager, för att styra skripts redigering och körning genom tilldelning av taggar som representerar användargrupper. Mer information om hur du använder säkerhetsomfattningar finns i Konfigurera rollbaserad administration för Konfigurationshanteraren.

Skapa säkerhetsroller för skript

De tre säkerhetsrollerna som används för att köra skript skapas inte som standard i Konfigurationshanteraren. Följ de instruktioner som beskrivs för att skapa hanterare, skriptförfattare och skript godkännare roller.

  1. I konfigurationshanterarens konsol går du till Roller för > administrationssäkerhetssäkerhet >
  2. Högerklicka på en roll och klicka på Kopiera. Den roll som du kopierar har redan tilldelats behörigheter. Se till att du endast har de behörigheter som du vill använda.
  3. Ge den anpassade rollen ett Namn och en Beskrivning.
  4. Tilldela säkerhetsrollen de behörigheter som anges nedan.

Säkerhetsrollbehörigheter

Rollnamn: Skripts löpningar

  • Beskrivning: De här behörigheterna gör att den här rollen endast kan köra skript som tidigare skapats och godkänts av andra roller.
  • Behörigheter: Kontrollera att följande är inställt på Ja.
Kategori Behörighet Tillstånd
Samling Kör skript Ja
Webbplats Läsa Ja
SMS-skript Läsa Ja

Rollnamn: Skriptförfattare

  • Beskrivning: De här behörigheterna aktiverar den här rollen för att skapa skript, men de kan inte godkänna eller köra dem.
  • Behörigheter: Kontrollera att följande behörigheter har angetts.
Kategori Behörighet Tillstånd
Samling Kör skript Nej
Webbplats Läsa Ja
SMS-skript Create Ja
SMS-skript Läsa Ja
SMS-skript Radera Ja
SMS-skript Ändra Ja

Rollnamn: Skript godkännare

  • Beskrivning: De här behörigheterna aktiverar den här rollen för att godkänna skript, men de kan inte skapa eller köra dem.
  • Behörigheter: Kontrollera att följande behörigheter är inställda.
Kategori Behörighet Tillstånd
Samling Kör skript Nej
Webbplats Läsa Ja
SMS-skript Läsa Ja
SMS-skript Godkänn Ja
SMS-skript Ändra Ja

Exempel på behörigheter för SMS-skript för rollen som skriptförfattare

Exempel på behörigheter för SMS-skript för rollen som skriptförfattare

Skapa ett skript

  1. Klicka på Programvarubibliotek i konfigurationshanterarens konsol.
  2. Klicka på Skript på arbetsytan Programvarubibliotek.
  3. Klicka Skapa skript i gruppen Skapafliken Start.
  4. Konfigurera följande inställningar på sidan Skript i guiden Skapa skript:
    • Skriptnamn – ange ett namn för skriptet. Du kan skapa flera skript med samma namn, men om du använder dubblettnamn blir det svårare för dig att hitta skriptet du behöver i konfigurationshanterarens konsol.
    • Skriptspråk – för närvarande stöds endast PowerShell-skript.
    • Import – Importera ett PowerShell-skript till konsolen. Skriptet visas i fältet Skript.
    • Rensa – tar bort det aktuella skriptet från fältet Script.
    • Skript – Visar det importerade skriptet. Du kan redigera skriptet i det här fältet efter behov.
  5. Slutför guiden. Det nya skriptet visas i listan Skript med statusen Väntar på godkännande. Innan du kan köra det här skriptet på klientenheter måste du godkänna det.

Viktigt

Undvik skript för en omstart av enheten eller en omstart av Konfigurationshanteraren-agenten när du använder funktionen Kör skript. Det kan leda till att datorn startas om kontinuerligt. Om det behövs finns det förbättringar av klientmeddelandefunktionen som gör det möjligt att starta om enheter. Kolumnen för väntande omstart kan hjälpa dig att identifiera enheter som behöver starta om.

Skriptparametrar

Genom att lägga till parametrar i ett skript får du större flexibilitet i arbetet. Du kan ta med upp till 10 parametrar. Nedan beskrivs den aktuella funktionen för Kör skript med skriptparametrar: Sträng- och heltalsdatatyper. Det finns även listor med förinställda värden. Om skriptet innehåller datatyper som inte stöds får du en varning.

I dialogrutan Skapa skript klickar du på Skriptparametrar under Skript.

Var och en av dina skriptparametrar har en egen dialogruta för att lägga till ytterligare information och validering. Om det finns en standardparameter i skriptet räknas den upp i parametergränssnittet och du kan ange den. Konfigurationshanteraren skriver inte över standardvärdet eftersom skriptet aldrig ändras direkt. Du kan tänka på det som att "förifyllda föreslagna värden" finns i användargränssnittet, men Konfigurationshanteraren ger inte åtkomst till "standardvärden" vid körning. Det kan åtgärdas genom att redigera skriptet så att rätt standardinställningar används.

Viktigt

Parametervärden får inte innehålla ett enstaka citattecken.

Det finns ett känt problem där parametervärden som innehåller eller omges av enkla citattecken inte överförs till skriptet på rätt sätt. När du anger standardparametervärden som innehåller ett blanksteg i ett skript ska du istället använda dubbla citattecken. När du anger standardparametervärden när ett skript skapas eller körs behövs inte omgivande standardvärdet med antingen dubbla eller enkla citattecken, oavsett om värdet innehåller ett blanksteg eller inte.

Parameterverifiering

Varje parameter i skriptet har dialogrutan Egenskaper för skriptparameter där du kan lägga till validering för parametern. När du har lagt till verifieringen bör du få felmeddelanden om du anger ett värde för en parameter som inte uppfyller verifieringen.

Exempel: Förnamn

I det här exemplet kan du ange egenskaperna för strängparametern, Förnamn.

Skriptparametrar – sträng

Valideringsavsnittet i dialogrutan Egenskaper för skriptparameter innehåller följande fält för användning:

  • Minsta längd – minsta antal tecken i fältet Förnamn.
  • Maxlängd– maximalt antal tecken i fältet Förnamn
  • RegEx – kort för reguljära uttryck. Mer information om hur du använder det reguljära uttrycket finns i nästa avsnitt, Använda verifiering av reguljära uttryck.
  • Anpassat fel – användbart om du vill lägga till ett eget anpassat felmeddelande som ersätter systemverifieringsfelmeddelanden.

Använda validering av reguljära uttryck

Ett reguljärt uttryck är en kompakt form av programmering som används för att kontrollera en teckensträng mot en kodad verifiering. Du kan till exempel kontrollera att det inte finns något versaler i fältet Förnamn genom att [^A-Z] placera det i fältet RegEx.

Den reguljära uttrycksbearbetningen för den här dialogrutan stöds av .NET Framework. Anvisningar om hur du använder reguljära uttryck finns i Reguljära .NET-uttryck och Reguljära uttryck.

Exempel på skript

Här följer några exempel som illustrerar skript som du kanske vill använda med den här funktionen.

Skapa en ny mapp och fil

Det här skriptet skapar en ny mapp och en fil i mappen, givet dina namngivningsinmatningar.

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

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

Skaffa OS-version

Det här skriptet använder WMI för att fråga datorn efter OS-versionen.

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

Redigera eller kopiera PowerShell-skript

Du kan redigera eller kopiera ett befintligt PowerShell-skript som används med funktionen Kör skript. I stället för att återskapa ett skript som du behöver ändra kan du nu direktredigera det. Båda åtgärderna har samma guideupplevelse som när du skapar ett nytt skript. När du redigerar eller kopierar ett skript bevaras inte godkännandetillståndet i Konfigurationshanteraren.

Tips

Redigera inte ett skript som körs aktivt på klienter. De slutförs inte när du kör det ursprungliga skriptet och du kanske inte får de avsedda resultaten från dessa klienter.

Redigera ett skript

  1. Gå till noden Skript under arbetsytan Programvarubibliotek.
  2. Välj skriptet du vill redigera och klicka sedan på Redigera i menyfliksområdet.
  3. Ändra eller importera skriptet på sidan Skriptinformation på en ny plats.
  4. Klicka Nästa för att visa sammanfattningen och sedan Stäng när du är klar med redigeringen.

Kopiera ett skript

  1. Gå till noden Skript under arbetsytan Programvarubibliotek.
  2. Välj skriptet som ska kopieras och klicka sedan på Kopiera i menyfliksområdet.
  3. Byt namn på skriptet i fältet Skriptnamn och gör eventuella ytterligare redigeringar.
  4. Klicka Nästa för att visa sammanfattningen och sedan Stäng när du är klar med redigeringen.

Kör ett skript

När ett skript har godkänts kan det köras mot en enda enhet eller en samling. När körningen av skriptet börjar startas den snabbt via ett system med hög prioritet som tar slut på grund av en timme. Skriptets resultat returneras sedan med hjälp av ett tillståndsmeddelandesystem.

Så här väljer du en samling mål för skriptet:

  1. Klicka på Tillgångar och efterlevnad i konfigurationshanteraren.
  2. Klicka på Enhetssamlingar på arbetsytan Tillgångar och efterlevnad.
  3. I listan Enhetssamlingar klickar du på den samling enheter där du vill köra skriptet.
  4. Välj en valfri samling och klicka på Kör skript.
  5. På sidan Skript i guiden Kör skript väljer du ett skript i listan. Endast godkända skript visas.
  6. Klicka Nästa och slutför guiden.

Viktigt

Om ett skript inte körs, till exempel på grund av att en målenhet är inaktiverad under en timme, måste du köra den igen.

Körning av måldator

Skriptet körs som system- eller datorkonto på den eller de riktade klienterna. Det här kontot har begränsad nätverksåtkomst. All åtkomst till fjärrsystem och platser enligt skriptet måste tillhandahållas i enlighet med detta.

Skriptövervakning

När du har initierat körningen av ett skript på en samling enheter följer du följande procedur för att övervaka åtgärden. Du kan övervaka ett skript i realtid medan det körs och senare återgå till status och resultat för en viss Körningsskriptkörning. Skriptstatusdata rensas som en del av underhållsaktiviteten Ta bort klientåtgärder för äldre personer eller borttagning av skriptet.

Skriptövervakare – skriptkörningsstatus

  1. Klicka på Övervakning i konfigurationshanterarens konsol.

  2. Klicka på Skriptstatus på arbetsytan Övervakning.

  3. I listan Skriptstatus visar du resultatet för varje skript du körde på klientenheter. Ett skripts utgångskod på 0 anger vanligtvis att skriptet har körts.

    Skriptskärm – trunkerat skript

Skriptresultat

Klientens returnerade skriptresultat med JSON-formatering genom att pipa skriptets resultat till cmdleten ConvertTo-Json. JSON-formatet returnerar konsekvent läsbara skriptresultat. För skript som inte returnerar objekt som utdata konverterar cmdleten ConvertTo-Json resultatet till en enkel sträng som klienten returnerar i stället för JSON.

  • Skript som får ett okänt resultat, eller där klienten var offline, visas inte i diagrammen eller datauppsättningen.

  • Undvik att returnera stora skriptdata eftersom de trunkeras till 4 kB.

  • Konvertera ett uppräkningsobjekt till ett strängvärde i skript så att de visas korrekt i JSON-formatering.

    Konvertera uppräkningsobjekt till enantalsvärde

Du kan visa detaljerade skriptresultat i rådata eller strukturerade JSON-format. Den här formateringen gör resultatet enklare att läsa och analysera. Om skriptet returnerar giltig JSON-formaterad text eller om utdata kan konverteras till JSON med hjälp av ConvertTo-Json PowerShell-cmdleten kan du visa de detaljerade utdata som Antingen JSON-utdata eller Rådata. Annars är skriptutdata det enda alternativet.

Exempel: Skriptresultat omvandlas till giltiga JSON

Kommando: $PSVersionTable.PSVersion

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

Exempel: Skriptresultat är inte giltigt JSON

Kommando: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption

Microsoft Windows 10 Enterprise

Loggfiler

  • På klienten gör du följande i C:\Windows\CCM\logs:

    • Scripts.log
    • CcmMessaging.log
  • På MP:en, som standard i C:\SMS_CCM\Logs:

    • MP_RelayMsgMgr.log
  • På webbplatsservern, som standard i C:\Program\Configuration Manager\Logs:

    • SMS_Message_Processing_Engine.log

Automatisera med Windows PowerShell

Du kan använda följande PowerShell-cmdlets för att automatisera vissa av de här uppgifterna:

Se även