Skapa och köra PowerShell-skript från Configuration Manager-konsolen
Gäller för: Configuration Manager (aktuell gren)
Configuration Manager 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 förenklar skapandet av anpassade verktyg för att administrera programvara och gör att du kan utföra vardagliga uppgifter snabbt, så att du kan utföra stora jobb enklare och mer konsekvent.
Obs!
I version 2006 och tidigare aktiverar Configuration Manager 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 Aktivera valfria funktioner från uppdateringar.
Med den här integreringen i Configuration Manager kan du använda funktionen Kör skript för att göra följande:
- Skapa och redigera skript för användning med Configuration Manager.
- Hantera skriptanvändning via roller och säkerhetsomfattningar.
- Mappstöd för skript.
- Kör skript på samlingar eller enskilda lokala hanterade Windows-datorer.
- Schemalägg skriptens körning i UTC 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
- 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 skydd för att hjälpa dig; segregerade 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. Tänk på utökade tecken eller andra fördunklare och utbilda dig om att skydda skript. Lär dig om säkerhet för PowerShell-skript
- Vissa program mot skadlig kod kan oavsiktligt utlösa händelser mot Configuration Manager-körningsskript eller CMPivot-funktioner. Vi rekommenderar att du exkluderar %windir%\CCM\ScriptStore så att programmet mot skadlig kod tillåter att dessa funktioner körs utan störningar.
Förhandskrav
- 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.
- Om du vill importera och skapa skript – Ditt konto måste ha skapa-behörigheter för SMS-skript.
- Om du vill godkänna eller neka skript måste ditt konto ha behörighet att godkännaSMS-skript.
- Om du vill köra skript – ditt konto måste ha behörighet att köra skript för samlingar.
Mer information om Configuration Manager-säkerhetsroller:
Säkerhetsomfattningar för körningsskript
Säkerhetsroller för körningsskript
Grunderna för 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 en yta för potentiell Risk för PowerShell-inmatningsattacker. Det finns olika sätt att undvika och kringgå, till exempel att använda reguljära uttryck för att validera parameterindata eller använda fördefinierade parametrar. Vanliga bästa praxis är att inte inkludera hemligheter i dina PowerShell-skript (inga lösenord osv.). Läs mer om PowerShell-skriptsäkerhet
Köra skriptförfattare och godkännare
Kör skript använder begreppet skriptförfattare och skriptgodkännare som separata roller för implementering och körning av ett skript. Om rollen författare och godkännare är åtskilda kan en viktig processkontroll utföras för det kraftfulla verktyg som Kör skript är. Det finns ytterligare en roll för skriptlöpare som tillåter körning av skript, men inte skapande eller godkännande av 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 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 tillsyn. Du kan inaktivera sekundärt godkännande för att underlätta testningen.
Godkänna eller neka ett skript
Skript måste godkännas av rollen som skriptgodkännare innan de kan köras. Så här godkänner du ett skript:
- I Configuration Manager-konsolen klickar du på Programvarubibliotek.
- 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 på fliken Start i gruppen Skript.
- I dialogrutan Godkänn eller neka skript väljer du Godkänn eller Neka för skriptet. Alternativt kan du 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 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 testfasen av skriptutveckling.
- I Configuration Manager-konsolen klickar du på Administration.
- I arbetsytan Administration expanderar du Platskonfiguration och klickar sedan på Platser.
- I listan över webbplatser väljer du din webbplats och klickar sedan på Hierarkiinställningar på fliken Start i gruppen Platser.
- På fliken Allmänt i dialogrutan Egenskaper för hierarkiinställningar avmarkerar du kryssrutan Skriptförfattare kräver ytterligare skriptgodkännare.
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 noggrant den potentiella effekten av att ändra den här inställningen i en produktionsmiljö.
Säkerhetsomfattningar
Kör skript använder säkerhetsomfattningar, en befintlig funktion i Configuration Manager, för att styra skriptredigering 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 Configuration Manager.
Skapa säkerhetsroller för skript
De tre säkerhetsroller som används för att köra skript skapas inte som standard i Configuration Manager. Om du vill skapa rollerna skriptlöpare, skriptförfattare och skriptgodkännare följer du de beskrivningar som beskrivs.
- I Configuration Manager-konsolen går du till Säkerhetsrollerföradministrationssäkerhet>>
- Högerklicka på en roll och klicka på Kopiera. Den roll som du kopierar har redan tilldelade behörigheter. Se till att du bara tar de behörigheter som du vill ha.
- Ge den anpassade rollen ett Namn och en Beskrivning.
- Tilldela säkerhetsrollen de behörigheter som beskrivs nedan.
Behörigheter för säkerhetsroll
Rollnamn: Skriptlöpare
- 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 | Ja |
Plats | Läsa | Ja |
SMS-skript | Läsa | Ja |
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 | Nej |
Plats | Läsa | Ja |
SMS-skript | Create | Ja |
SMS-skript | Läsa | Ja |
SMS-skript | Radera | Ja |
SMS-skript | Ändra | Ja |
Rollnamn: Skriptgodkä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 | Nej |
Plats | Läsa | Ja |
SMS-skript | Läsa | Ja |
SMS-skript | Godkänna | Ja |
SMS-skript | Ändra | Ja |
Exempel på SMS-skriptbehörigheter för skriptförfattarrollen
Mappstöd för skript
Från och med version 2403 kan du organisera skript med hjälp av mappar. Den här ändringen ger bättre kategorisering och hantering av skript.
Öppna Configuration Manager-konsolen och gå till arbetsytan Programvarubibliotek. I menyfliksområdet eller högerklickar du på menyn Skript och väljer bland följande alternativ:
- Skapa mapp
- Ta bort mapp
- Byt namn på mapp
- Flytta mappar
- Ange säkerhetsomfattningar
Skapa ett skript
- I Configuration Manager-konsolen klickar du på Programvarubibliotek.
- I arbetsytan Programvarubibliotek klickar du på Skript.
- Klicka på Skapa skript i gruppen Skapa på fliken Start.
- På sidan Skript i guiden Skapa skript konfigurerar du följande inställningar:
- Skriptnamn – Ange ett namn för skriptet. Även om du kan skapa flera skript med samma namn blir det svårare för dig att hitta det skript du behöver i Configuration Manager-konsolen med hjälp av dubblettnamn.
- 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 för tillfället importerade skriptet. 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 en omstart av Configuration Manager-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. Den väntande omstartskolumnen kan hjälpa dig att identifiera enheter som behöver startas om.
Skriptparametrar
Att lägga till parametrar i ett skript ger ö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 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. Configuration Manager skriver inte över standardvärdet eftersom det aldrig ändrar skriptet direkt. Du kan tänka på detta eftersom "förifyllda föreslagna värden" finns i användargränssnittet, men Configuration Manager ger inte åtkomst till "standardvärden" vid körning. Du kan kringgå detta genom att redigera skriptet så att det har rätt standardvärden.
Viktigt
Parametervärden får inte innehålla ett enda citattecken.
Det finns ett känt problem där parametervärden som innehåller 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 vid skapande eller körning av 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.
Parameterverifiering
Varje parameter i skriptet har dialogrutan Egenskaper för skriptparameter där du kan lägga till verifiering för den parametern. När du har lagt till verifiering bör du få fel om du anger ett värde för en parameter som inte uppfyller dess validering.
Exempel: FirstName
I det här exemplet kan du ange egenskaperna för strängparametern FirstName.
Verifieringsavsnittet i dialogrutan Egenskaper för skriptparameter innehåller följande fält för din användning:
- 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 Reguljärt uttryck. Mer information om hur du använder reguljära uttryck finns i nästa avsnitt , Using Regular Expression validation (Använda validering av reguljära uttryck).
- Anpassat fel – användbart för att lägga till ett eget anpassat felmeddelande som ersätter eventuella felmeddelanden för systemverifiering.
Använda validering av reguljära uttryck
Ett reguljärt uttryck är en kompakt form av programmering för att kontrollera en teckensträng mot en kodad validering. Du kan till exempel söka efter avsaknaden av ett alfabetiskt versalt tecken i fältet FirstName genom att placera [^A-Z]
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 Reguljärt .NET-uttryck och Reguljärt uttrycksspråk.
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 med tanke på dina namngivningsindata.
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 om dess operativsystemversion.
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 redigerar du 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 bevarar Inte Configuration Manager godkännandetillståndet.
Tips
Redigera inte ett skript som körs aktivt på klienter. De kommer inte att slutföra 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 det skript som ska redigeras och klicka sedan på Redigera i menyfliksområdet.
- Ändra eller importera om 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 det skript 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ö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 det snabbt via ett system med hög prioritet som överskrider tidsgränsen på en timme. Resultatet av skriptet returneras sedan med hjälp av ett tillståndsmeddelandesystem.
Så här väljer du en samling mål för skriptet:
- I Configuration Manager-konsolen klickar du på Tillgångar och efterlevnad.
- På 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 samling som du väljer 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 på grund av att en målenhet är avstängd under en timmes tidsperiod, måste du köra den igen.
Schemalägga skriptens körning
Från och med Den aktuella grenversionen av Configuration Manager 2309 kan du nu schemalägga skriptens körningstid i UTC.
Schemalägg skriptkörning på en samling:
I Configuration Manager-konsolen klickar du på Tillgångar och efterlevnad.
På arbetsytan Tillgångar och efterlevnad klickar du på Enhetssamlingar.
I listan Enhetssamlingar klickar du på den samling enheter som du vill schemalägga skriptet på.
Välj en samling som du väljer och klicka på Kör skript.
På sidan Schemaläggning schemalägger du skriptet som ska köras i kryssrutan och anger schematid i UTC.
Kontrollera informationen som visas på sammanfattningssidan.
Klicka på Nästa och slutför sedan guiden.
Obs!
Högst tjugofem schemalagda skript kommer att skickas var femte minut.
Körning av måldator
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 via skriptet måste etableras i enlighet med detta.
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 föråldrade klientåtgärder eller borttagning av skriptet.
Klicka på Övervakning i Configuration Manager-konsolen.
I arbetsytan Övervakning klickar du på Skriptstatus.
I listan Skriptstatus visar du resultatet för varje skript som du körde på klientenheter. En slutkod för skriptet 0 anger vanligtvis att skriptet kördes korrekt.
Schemalägg skriptövervakning på en samling
Klicka på Övervakning i Configuration Manager-konsolen.
I arbetsytan Övervakning klickar du på noden Schemalagda skript.
En ny rad visas i listan över schemalagda skript.
Kontrollera att en ny rad har visats i listan över schemalagda skript. Tillståndskolumnen ska ha värdet Schemalagd. Kolumnen ClientOperationId ska vara tom. Kontrollera att de andra kolumnerna, t.ex. skriptnamn, schematid osv. har lämpliga värden.
Efter schematiden uppdaterar du noden Schemalagda skript . Tillståndskolumnen ska ha värdet Lyckades initierad klientåtgärd. Kolumnen ClientOperationId bör ha ett heltalsvärde.
I arbetsytan Övervakning klickar du på noden Skriptstatus. Kontrollera att den nya raden har visats i listan och att ClientOperationId är lika med ClientOperationId från noden Schemalagda skript .
Klicka på Visa status och kontrollera att skriptutdata visas.
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 cmdleten ConvertTo-Json 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 utdata enklare att läsa och analysera. Om skriptet returnerar giltig JSON-formaterad text eller om utdata kan konverteras till JSON med powershell-cmdleten ConvertTo-Json kan du visa detaljerade utdata som antingen JSON-utdata eller Råutdata. Annars är det enda alternativet skriptutdata.
Exempel: Skriptutdata kan konverteras till giltig JSON
Befallning: $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 16299 551
Exempel: Skriptutdata är inte giltiga JSON
Befallning: 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
Som standard på platsservern i C:\Program Files\Configuration Manager\Logs:
- SMS_Message_Processing_Engine.log
Automatisera med Windows PowerShell
Du kan använda följande PowerShell-cmdletar för att automatisera några av dessa uppgifter:
- Godkänn CMScript
- Neka CMScript
- Get-CMScript
- Invoke-CMScript
- New-CMScript
- Remove-CMScript
- Set-CMScript