Skapa och köra PowerShell-skript från Konfigurationshanteraren konsolen
Gäller för: Konfigurationshanteraren (aktuell gren)
Konfigurationshanteraren har en integrerad möjlighet att köra PowerShell-skript. PowerShell har fördelen att skapa avancerade, automatiserade skript som förstås och delas med en större community. Skripten gör det enklare att skapa anpassade verktyg för att administrera programvara och gör att du snabbt kan utföra vanliga uppgifter, så att du kan få stora jobb gjorda enklare och mer konsekvent.
Anteckning
I version 2006 och tidigare Konfigurationshanteraren inte den här valfria funktionen som standard. Du måste aktivera den här funktionen innan du använder den. Mer information finns i avsnittet Enable optional features from updates.
Med den här 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 via roller och säkerhetsomfattningar.
- Kör skript på samlingar eller enskilda lokala hanterade Windows datorer.
- Hämta snabba aggregerade skriptresultat från klientenheter.
- Övervaka skriptkörning och visa rapportresultat från skriptutdata.
Varning
- Med tanke på kraften i skript påminner vi dig om att vara avsiktlig och försiktig med deras användning. Vi har byggt in ytterligare skyddsmekanismer som hjälper dig; åtskilda roller och omfång. Kontrollera att skripten är korrekta innan du kör dem och bekräfta att de kommer från en betrodd källa för att förhindra oavsiktlig skriptkörning. Ha i åtanke utökade tecken eller andra förvirringstecken och lär dig mer om att skydda skript. Läs mer om säkerhet för PowerShell-skript
- Vissa program mot skadlig kod kan oavsiktligt utlösa händelser mot Konfigurationshanteraren kör skript eller CMPivot-funktioner. Vi rekommenderar att du undantar %windir%\CCM\ScriptStore så att program mot skadlig kod tillåter att dessa funktioner körs utan störningar.
Förutsättningar
- Om du vill 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 som du kör skriptet på köra den versionen av PowerShell.
- Konfigurationshanteraren måste köra klienten från version 1706 eller senare för att köra skript.
- Om du vill använda skript måste du vara medlem i lämplig Konfigurationshanteraren säkerhetsroll.
- För att kunna importera och skapa skript – Ditt konto måste ha behörigheten Skapa för SMS-skript.
- För att godkänna eller neka skript – ditt konto måste ha behörigheten Godkänn för SMS-skript.
- Om du vill köra skript – Ditt konto måste ha körskriptbehörighet för samlingar.
Mer information om Konfigurationshanteraren säkerhetsroller: Säkerhetsomfattningar för körningsskript Säkerhetsroller för körningsskript Grunderna i rollbaserad administration.
Begränsningar
Kör skript stöder för närvarande:
- Skriptspråk: PowerShell
- Parametertyper: heltal, sträng och lista.
Varning
Tänk på att när du använder parametrar öppnas ett område på ytan för potentiella angreppsrisker med PowerShell-ktion. Det finns olika sätt att minimera och undvika, till exempel att använda reguljära uttryck för att validera parameterindata eller använda fördefinierade parametrar. Det är vanligt att inte inkludera hemligheter i dina PowerShell-skript (inga lösenord osv.). Läs mer om säkerhet för PowerShell-skript
Köra skriptförfattare och godkännare
I Körningsskript används begreppet skriptförfattare och skript godkännare som separata roller för implementering och körning av ett skript. Om rollerna författare och godkännare är åtskilda kan en viktig processkontroll för det kraftfulla verktyget köra skript är. Det finns ytterligare en skriptkörningsroll som tillåter körning av skript, men som inte skapar eller godkänner skript. Se Skapa säkerhetsroller för skript.
Kontroll av skriptroller
Som standard kan användarna inte godkänna ett skript som de har skapat. Eftersom skript är kraftfulla, mångsidiga och potentiellt distribuerade till många enheter kan du separera rollerna mellan den person som skriver skriptet och den person som godkänner skriptet. De här rollerna ger en extra säkerhetsnivå mot att köra ett skript utan tillsyn. Du kan stänga av sekundärt godkännande för enklare testning.
Godkänna eller neka ett skript
Skript måste godkännas av skriptgodkännarrollen innan de kan köras. Så här godkänner du ett skript:
- I Configuration Manage-konsolen klickar du på Programbibliotek.
- I arbetsytan Programvarubibliotek klickar du på Skript.
- I listan Skript väljer du det skript som du vill godkänna eller neka och klickar sedan på Godkänn/Neka i gruppen Skript på fliken Start.
- 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.

- Slutför guiden. I listan Skript ser du att kolumnen Godkännandetillstånd ändras beroende på vilken åtgärd du vidtog.
Tillåt användare att godkänna sina egna skript
Det här godkännandet används främst för testningsfasen av skriptutveckling.
- Klicka Konfigurationshanteraren Administration i konsolen.
- I arbetsytan Administration expanderar du Platskonfiguration och klickar sedan på Platser.
- Välj din plats i listan över platser och klicka sedan på Hierarki i gruppen Platser på fliken Start Inställningar.
- På fliken Allmänt i dialogrutan Inställningar egenskaper avmarkerar du kryssrutan Skriptförfattare kräver ytterligare godkännare av skript.
Viktigt
Som bästa praxis bör du inte tillåta att en skriptförfattare godkänner sina egna skript. Det bör endast tillåtas i en labbinställning. Överväg noga den potentiella effekten av att ändra den här inställningen i en produktionsmiljö.
Säkerhetsomfattningar
Körningsskript använder säkerhetsomfattningar, en befintlig funktion i Konfigurationshanteraren, för att styra skriptens redigering och körning genom att tilldela 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äkerhetsroller som används för att köra skript skapas inte som standard i Konfigurationshanteraren. Om du vill skapa rollerna skripthanterare, skriptförfattare och skript godkännare följer du de steg som beskrivs.
- I konsolen Konfigurationshanteraren du till Säkerhetsroller > > för administration
- Högerklicka på en roll och klicka på Kopiera. Rollen som du kopierar har redan behörigheter tilldelade. Se till att du bara har de behörigheter som du vill ha.
- Ge den anpassade rollen ett Namn och en Beskrivning.
- Tilldela säkerhetsrollen behörigheterna som beskrivs nedan.
Behörigheter för säkerhetsroll
Rollnamn: Skript runners
- Beskrivning: Dessa behörigheter gör att den här rollen endast kan köra skript som tidigare har 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 | Yes |
| Webbplats | Läs | Yes |
| SMS-skript | Läs | Yes |
Rollnamn: Skriptförfattare
- Beskrivning: Dessa behörigheter gör att den här rollen kan 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 | No |
| Webbplats | Läs | Yes |
| SMS-skript | Skapa | Yes |
| SMS-skript | Läs | Yes |
| SMS-skript | Ta bort | Yes |
| SMS-skript | Ändra | Yes |
Rollnamn: Skript godkännare
- Beskrivning: Dessa behörigheter gör att den här rollen kan godkänna skript, men de kan inte skapa eller köra dem.
- Behörigheter: Kontrollera att följande behörigheter har angetts.
| Kategori | Behörighet | Tillstånd |
|---|---|---|
| Samling | Kör skript | No |
| Webbplats | Läs | Yes |
| SMS-skript | Läs | Yes |
| SMS-skript | Godkänn | Yes |
| SMS-skript | Ändra | Yes |
Exempel på behörigheter för SMS-skript för rollen som skriptförfattare

Skapa ett skript
- I Configuration Manage-konsolen klickar du på Programbibliotek.
- I arbetsytan Programvarubibliotek klickar du på Skript.
- På fliken Start går du till gruppen Skapa och klickar på Skapa skript.
- Konfigurera följande inställningar på sidan Skript i guiden Skapa skript:
- Skriptnamn – Ange ett namn på 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 Konfigurationshanteraren konsolen.
- Skriptspråk – För närvarande stöds endast PowerShell-skript.
- Importera – Importera ett PowerShell-skript till konsolen. Skriptet visas i fältet Skript.
- Rensa – Tar bort det aktuella skriptet från fältet Skript.
- Skript – Visar det skript som har importerats för närvarande. Du kan redigera skriptet i det här fältet efter behov.
- 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 att skripta en omstart av enheten eller starta om Konfigurationshanteraren agenten när du använder funktionen Kör skript. Detta kan leda till ett tillstånd för kontinuerlig omstart. Om det behövs finns det förbättringar av klientmeddelandefunktionen som aktiverar omstart av enheter. Kolumnen för väntande omstart kan hjälpa dig att identifiera enheter som behöver startas om.
Skriptparametrar
Genom att lägga till parametrar i ett skript får du ökad flexibilitet för ditt arbete. Du kan inkludera upp till 10 parametrar. Följande beskriver funktionen Kör skript med skriptparametrar för: Sträng, heltalsdatatyper. Listor med förinställda värden är också tillgängliga. Om skriptet har datatyper som inte stöds får du en varning.
I dialogrutan Skapa skript klickar du på Skriptparametrar under Skript.
Var och en av skriptets parametrar har en egen dialogruta där du kan lägga till ytterligare information och verifiering. 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 det aldrig ändrar skriptet direkt. Du kan tänka på detta som att "förifyllda föreslagna värden" anges i användargränssnittet, men Konfigurationshanteraren ger inte åtkomst till "standardvärden" vid körning. Du kan komma runt detta genom att redigera skriptet så att det har rätt standardvärden.
Viktigt
Parametervärden får inte innehålla ett enkelt citattecken. Det finns ett känt problem där parametervärden som inkluderar eller omges av enkla citattecken inte skickas till skriptet korrekt. När du anger standardparametervärden som innehåller ett blanksteg i ett skript använder du dubbla citattecken i stället. När du anger standardparametervärden när du skapar eller kör ett skript är det inte nödvändigt att omge standardvärdet med dubbla eller enkla citattecken oavsett om värdet innehåller ett blanksteg eller inte.
Parametervalidering
Varje parameter i skriptet har en dialogruta för egenskaper för skriptparameter där du kan lägga till validering för den parametern. När du har lagt till valideringen bör du få fel om du anger ett värde för en parameter som inte uppfyller valideringen.
Exempel: FirstName
I det här exemplet kan du ange egenskaperna för strängparametern FirstName.

Valideringsavsnittet i dialogrutan Egenskaper för skriptparameter innehåller följande fält som du kan använda:
- Minsta längd – minsta antal tecken i fältet FirstName.
- Maximal längd– maximalt antal tecken i fältet FirstName
- RegEx – förkortning för Regular Expression. Mer information om hur du använder reguljära uttryck finns i nästa avsnitt, Använda validering av reguljära uttryck.
- Anpassat fel – användbart för att lägga till egna anpassade felmeddelanden som ersätter eventuella felmeddelanden för systemvalidering.
Använda validering av reguljära uttryck
Ett reguljärt uttryck är en kompakt form av programmering för att kontrollera en sträng med tecken mot en kodad validering. Du kan till exempel söka efter frånvaron av versaler i fältet FirstName genom att [^A-Z] placera i fältet RegEx.
Bearbetningen av reguljära uttryck för den här dialogrutan stöds av .NET Framework. Vägledning om hur du använder reguljära uttryck finns i .NET Regular Expression och Regular Expression Language.
Skriptexempel
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, baserat på dina namngivningsinmatningar.
Param(
[Parameter(Mandatory=$True)]
[string]$FolderName,
[Parameter(Mandatory=$True)]
[string]$FileName
)
New-Item $FolderName -type directory
New-Item $FileName -type file
Hämta os-version
Det här skriptet använder WMI för att fråga datorn efter dess OS-version.
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 redigera det direkt. Båda åtgärderna använder samma guideupplevelse som när du skapar ett nytt skript. När du redigerar eller kopierar ett skript Konfigurationshanteraren inte kvar godkännandetillståndet.
Tips
Redigera inte ett skript som körs aktivt på klienter. De slutför inte körningen av det ursprungliga skriptet och du kanske inte får de avsedda resultaten från dessa klienter.
Redigera ett skript
- Gå till noden Skript under arbetsytan Programvarubibliotek.
- Välj skriptet att redigera och klicka sedan på Redigera i menyfliksområdet.
- Ändra eller importera skriptet på sidan Skriptinformation.
- Klicka på Nästa för att visa sammanfattningen och sedan på Stäng när du är klar med redigeringen.
Kopiera ett skript
- Gå till noden Skript under arbetsytan Programvarubibliotek.
- Välj skriptet som ska kopieras och klicka sedan på Kopiera i menyfliksområdet.
- Byt namn på skriptet i fältet Skriptnamn och gör eventuella ytterligare ändringar som du kan behöva.
- Klicka på Nästa för att visa sammanfattningen och sedan på Stäng när du är klar med redigeringen.
Köra ett skript
När ett skript har godkänts kan det köras mot en enskild enhet eller en samling. När körningen av skriptet påbörjas startas det snabbt via ett system med hög prioritet som tar för lång tid på 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:
- Klicka på Tillgångar och efterlevnad i Configuration Manager-konsolen.
- I arbetsytan Tillgångar och efterlevnad klickar du på Enhetssamlingar.
- I listan Enhetssamlingar klickar du på den samling enheter som du vill köra skriptet på.
- Välj en valfri samling och klicka på Kör skript.
- På sidan Skript i guiden Kör skript väljer du ett skript i listan. Endast godkända skript visas.
- Klicka på Nästa och slutför sedan guiden.
Viktigt
Om ett skript inte körs, till exempel eftersom en målenhet stängs av under en timme, måste du köra den igen.
Måldatorkörning
Skriptet körs som system- eller datorkonto på målklienterna. Det här kontot har begränsad nätverksåtkomst. All åtkomst till fjärrsystem och platser av skriptet måste etableras på motsvarande sätt.
Skriptövervakning
När du har initierat körningen av ett skript på en samling enheter använder du följande procedur för att övervaka åtgärden. Du kan övervaka ett skript i realtid när 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 äldre klientåtgärder eller borttagning av skriptet.

I konsolen Konfigurationshanteraren klickar du på Övervakning.
I arbetsytan Övervakning klickar du på Skriptstatus.
I listan Skriptstatus visar du resultaten för varje skript som du körde på klientenheter. Ett skriptslutkod på 0 anger vanligtvis att skriptet har körts.

Skriptutdata
Klientens returnerade skriptutdata med JSON-formatering genom att skicka skriptets resultat till cmdleten ConvertTo-Json. JSON-formatet returnerar konsekvent läsbara skriptutdata. För skript som inte returnerar objekt som utdata konverterar ConvertTo-Json cmdlet utdata 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 skriptutdata eftersom det trunkeras till 4 kB.
Konvertera ett uppräkningsobjekt till ett strängvärde i skript så att de visas korrekt i JSON-formatering.

Du kan visa detaljerade skriptutdata i rå eller strukturerat JSON-format. Den här formateringen gör det enklare att läsa och analysera utdata. 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 detaljerade utdata som JSON-utdata eller Råutdata. Annars är det enda alternativet Skriptutdata.
Exempel: Skriptutdata omvandlas till giltig JSON
Kommandot: $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 16299 551
Exempel: Skriptutdata är inte giltiga JSON
Kommandot: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption
Microsoft Windows 10 Enterprise
Loggfiler
På klienten, som standard i C:\Windows\CCM\logs:
- Scripts.log
- CcmMessaging.log
På MP, som standard i C:\SMS_CCM\Logs:
- MP_RelayMsgMgr.log
På platsservern, som standard i C:\Program Files\Konfigurationshanteraren\Logs:
- SMS_Message_Processing_Engine.log