PowerShell-scripts maken en uitvoeren vanaf de configuration manager-console

Van toepassing op: Configuration Manager (current branch)

Configuration Manager heeft een geïntegreerde mogelijkheid om PowerShell-scripts uit te voeren. PowerShell heeft het voordeel van het maken van geavanceerde, geautomatiseerde scripts die worden begrepen en gedeeld met een grotere community. De scripts vereenvoudigen het maken van aangepaste hulpprogramma's om software te beheren en u kunt alledaagse taken snel uitvoeren, zodat u gemakkelijker en consistenter grote taken kunt uitvoeren.

Notitie

In versie 2006 en eerder is deze optionele functie standaard niet ingeschakeld in Configuration Manager. U moet deze functie inschakelen voordat u deze gebruikt. Zie Optionele functies van updates inschakelen voor meer informatie.

Met deze integratie in Configuration Manager kunt u de functionaliteit Scripts uitvoeren gebruiken om de volgende dingen te doen:

  • Scripts maken en bewerken voor gebruik met Configuration Manager.
  • Beheer het gebruik van scripts via rollen en beveiligingsbereiken.
  • Scripts uitvoeren op verzamelingen of afzonderlijke on-premises beheerde Windows pc's.
  • Krijg snel samengevoegde scriptresultaten van clientapparaten.
  • Controleer de uitvoering van scripts en bekijk de rapportageresultaten van scriptuitvoer.

Waarschuwing

  • Gezien de kracht van scripts herinneren we u eraan dat u bewust en voorzichtig moet zijn met het gebruik ervan. We hebben extra beveiligingen ingebouwd om u te helpen. gescheiden rollen en bereik. Zorg ervoor dat u de nauwkeurigheid van scripts valideert voordat u ze uitvoert en bevestig dat ze afkomstig zijn van een vertrouwde bron, om onbedoelde scriptuitvoering te voorkomen. Let op uitgebreide tekens of andere obfuscation en leer uzelf over het beveiligen van scripts. Meer informatie over beveiliging van PowerShell-scripts
  • Bepaalde anti-malwaresoftware kan onbedoeld gebeurtenissen activeren tegen de functies Configuration Manager Run Scripts of CMPivot. Het wordt aangeraden %windir%\CCM\ScriptStore uit te sluiten, zodat de anti-malwaresoftware deze functies zonder tussenkomst kan uitvoeren.

Vereisten

  • Als u PowerShell-scripts wilt uitvoeren, moet de client PowerShell versie 3.0 of hoger uitvoeren. Als een script dat u uit runt echter functionaliteit bevat uit een latere versie van PowerShell, moet de client waarop u het script runt, die versie van PowerShell uitvoeren.
  • Configuration Manager-clients moeten de client uitvoeren vanaf de release van 1706 of later om scripts uit te voeren.
  • Als u scripts wilt gebruiken, moet u lid zijn van de juiste beveiligingsrol van Configuration Manager.
  • Als u scripts wilt importeren en schrijven- Uw account moet machtigingen voor sms-scripts hebben.
  • Als u scripts wilt goedkeuren of weigeren, moet uw account machtigingen voor sms-scripts hebben.
  • Scripts uitvoeren: uw account moet scriptmachtigingen voor verzamelingen uitvoeren hebben.

Voor meer informatie over beveiligingsrollen van Configuration Manager:
Beveiligingsbereiken voor scripts uitvoeren
Beveiligingsrollen voor scripts uitvoeren
Grondbeginselen van rollengebaseerd beheer.

Beperkingen

Scripts uitvoeren ondersteunt momenteel:

  • Scripttalen: PowerShell
  • Parametertypen: geheel getal, tekenreeks en lijst.

Waarschuwing

Let op: bij het gebruik van parameters wordt een oppervlak geopend voor mogelijk risico op een powershellinjectie. Er zijn verschillende manieren om te beperken en te werken, zoals het gebruik van normale expressies om parameterinvoer te valideren of vooraf gedefinieerde parameters te gebruiken. Veelgebruikte best practice is om geen geheimen op te nemen in uw PowerShell-scripts (geen wachtwoorden, enzovoort). Meer informatie over beveiliging van PowerShell-scripts

Scriptauteurs en -goedkeurders uitvoeren

Scripts uitvoeren gebruikt het concept van scriptauteurs en script-goedkeurders als afzonderlijke rollen voor de implementatie en uitvoering van een script. Als de auteurs- en goedkeurderrollen zijn gescheiden, kan een belangrijke procescontrole worden uitgevoerd voor het krachtige hulpprogramma dat Scripts uitvoeren is. Er is een extra rol voor scriptlopers waarmee scripts kunnen worden uitgevoerd, maar geen scripts worden gemaakt of goedgekeurd. Zie Beveiligingsrollen voor scripts maken.

Scripts rollenbesturingselement

Gebruikers kunnen een script dat ze hebben gemaakt, standaard niet goedkeuren. Omdat scripts krachtig, veelzijdig en mogelijk op veel apparaten zijn geïmplementeerd, kunt u de rollen scheiden tussen de persoon die het script heeft geschreven en de persoon die het script goedkeurt. Deze rollen bieden extra beveiliging tegen het uitvoeren van een script zonder toezicht. U kunt secundaire goedkeuring uitschakelen voor eenvoudige tests.

Een script goedkeuren of weigeren

Scripts moeten worden goedgekeurd door de rol voor het goedkeuren van scripts, voordat ze kunnen worden uitgevoerd. Een script goedkeuren:

  1. Klik in de console Configuration Manager op Softwarebibliotheek.
  2. Klik in de werkruimte Softwarebibliotheek op Scripts.
  3. Kies in de lijst Script het script dat u wilt goedkeuren of weigeren en klik vervolgens op het tabblad Start in de groep Script op Goedkeuren/weigeren.
  4. Selecteer goedkeuren of weigeren in het dialoogvenster Script goedkeuren of weigeren de optie Goedkeuren of Weigeren voor het script. Voer desgewenst een opmerking over uw beslissing in. Als u een script weigert, kan het niet worden uitgevoerd op clientapparaten.
    Script - Goedkeuring
  5. Voltooi de wizard. In de lijst Script ziet u de kolom Goedkeuringstoestand, afhankelijk van de actie die u hebt ondernomen.

Gebruikers toestaan hun eigen scripts goed te keuren

Deze goedkeuring wordt voornamelijk gebruikt voor de testfase van de scriptontwikkeling.

  1. Klik in de console Configuration Manager op Beheer.
  2. Vouw in de werkruimte Beheer siteconfiguratie uit en klik vervolgens op Sites.
  3. Kies uw site in de lijst met sites en klik vervolgens op het tabblad Start in de groep Sites op Hiërarchie Instellingen.
  4. Op het tabblad Algemeen van het dialoogvenster Hiërarchie Instellingen eigenschappen, het selectievakje Scriptauteurs vereisen extra script goedkeurder uit.

Belangrijk

Als een goede gewoonte moet u niet toestaan dat een scriptauteur zijn eigen scripts goedkeurt. Het mag alleen worden toegestaan in een lab-instelling. Houd zorgvuldig rekening met de mogelijke gevolgen van het wijzigen van deze instelling in een productieomgeving.

Beveiligingsbereiken

Scripts uitvoeren maakt gebruik van beveiligingsbereiken, een bestaande functie van Configuration Manager, om het maken en uitvoeren van scripts te bepalen door tags toe te wijzen die gebruikersgroepen vertegenwoordigen. Zie Op rollen gebaseerd beheer configureren voor Configuration Manager voor meer informatie over het gebruik van beveiligingsbereiken.

Beveiligingsrollen voor scripts maken

De drie beveiligingsrollen die worden gebruikt voor het uitvoeren van scripts, worden niet standaard gemaakt in Configuration Manager. Als u de rollen scriptlopers, scriptauteurs en script-goedkeurders wilt maken, volgt u de beschreven stappen.

  1. Ga in de console Configuration Manager naar Beveiligingsrollen > > voor beheerbeveiliging
  2. Klik met de rechtermuisknop op een rol en klik op Kopiëren. Aan de rol die u kopieert, zijn al machtigingen toegewezen. Zorg ervoor dat u alleen de beste machtigingen gebruikt.
  3. Geef de aangepaste rol een naam en een beschrijving.
  4. Wijs de beveiligingsrol toe aan de machtigingen die hieronder worden beschreven.

Machtigingen voor beveiligingsrol

Rolnaam: ScriptLopers

  • Beschrijving: Met deze machtigingen kan deze rol alleen scripts uitvoeren die eerder door andere rollen zijn gemaakt en goedgekeurd.
  • Machtigingen: Controleer of het volgende is ingesteld op Ja.
Categorie Machtiging Status
Verzameling Script uitvoeren Ja
Site Lezen Ja
Sms-scripts Lezen Ja

Rolnaam: Scriptauteurs

  • Beschrijving: Met deze machtigingen kan deze rol scripts maken, maar ze kunnen ze niet goedkeuren of uitvoeren.
  • Machtigingen: Controleer of de volgende machtigingen zijn ingesteld.
Categorie Machtiging Status
Verzameling Script uitvoeren Nee
Site Lezen Ja
Sms-scripts Maken Ja
Sms-scripts Lezen Ja
Sms-scripts Verwijderen Ja
Sms-scripts Wijzigen Ja

Rolnaam: Script-goedkeurders

  • Beschrijving: met deze machtigingen kan deze rol scripts goedkeuren, maar ze kunnen ze niet maken of uitvoeren.
  • Machtigingen: Controleer of de volgende machtigingen zijn ingesteld.
Categorie Machtiging Status
Verzameling Script uitvoeren Nee
Site Lezen Ja
Sms-scripts Lezen Ja
Sms-scripts Goedkeuren Ja
Sms-scripts Wijzigen Ja

Voorbeeld van machtigingen voor sms-scripts voor de rol scriptauteurs

Voorbeeld van machtigingen voor sms-scripts voor de rol scriptauteurs

Een script maken

  1. Klik in de console Configuration Manager op Softwarebibliotheek.
  2. Klik in de werkruimte Softwarebibliotheek op Scripts.
  3. Klik op het tabblad Start in de groep Maken op Script maken.
  4. Configureer de volgende instellingen op de pagina Script van de wizard Script maken:
    • Scriptnaam: voer een naam in voor het script. Hoewel u meerdere scripts met dezelfde naam kunt maken, kunt u met dubbele namen moeilijker het script vinden dat u nodig hebt in de configuratiebeheerconsole.
    • Scripttaal: momenteel worden alleen PowerShell-scripts ondersteund.
    • Importeren: een PowerShell-script importeren in de console. Het script wordt weergegeven in het veld Script.
    • Verwijderen: hiermee verwijdert u het huidige script uit het veld Script.
    • Script: hiermee wordt het momenteel geïmporteerde script weergegeven. U kunt het script in dit veld zo nodig bewerken.
  5. Voltooi de wizard. Het nieuwe script wordt weergegeven in de lijst Script met de status Wachten op goedkeuring. Voordat u dit script kunt uitvoeren op clientapparaten, moet u dit goedkeuren.

Belangrijk

Vermijd het opnieuw opstarten van een apparaat of een herstart van de configuration manager-agent wanneer u de functie Scripts uitvoeren gebruikt. Als u dit doet, kan dit leiden tot een continue herstarttoestand. Indien nodig zijn er verbeteringen aan de clientmeldingsfunctie waarmee u apparaten opnieuw kunt opstarten. De kolom Opnieuw opstarten in behandeling kan helpen bij het identificeren van apparaten die opnieuw moeten worden gestart.

Scriptparameters

Het toevoegen van parameters aan een script biedt meer flexibiliteit voor uw werk. U kunt maximaal 10 parameters opnemen. In de volgende overzichten wordt de huidige functie Scripts uitvoeren met scriptparameters voor beschreven. Tekenreeks, Integer-gegevenstypen. Lijsten met vooraf ingestelde waarden zijn ook beschikbaar. Als uw script niet-ondersteunde gegevenstypen heeft, krijgt u een waarschuwing.

Klik in het dialoogvenster Script maken op Scriptparameters onder Script.

Elk van de parameters van het script heeft een eigen dialoogvenster voor het toevoegen van verdere details en validatie. Als er een standaardparameter in het script staat, wordt deze weergegeven in de gebruikersinterface van de parameter en kunt u deze instellen. Configuratiebeheer overschrijft de standaardwaarde niet omdat het script nooit rechtstreeks wordt gewijzigd. U kunt dit zien als 'vooraf ingevulde voorgestelde waarden' worden weergegeven in de gebruikersinterface, maar Configuration Manager biedt geen toegang tot 'standaardwaarden' in run-time. Dit kan worden bewerkt door het script te bewerken om de juiste standaardwaarden te hebben.

Belangrijk

Parameterwaarden kunnen geen enkele offerte bevatten.

Er is een bekend probleem waarbij parameterwaarden die enkele aanhalingstekens bevatten of tussen aanhalingstekens staan, niet correct worden doorgegeven aan het script. Wanneer u standaardparameterwaarden opgeeft die een spatie in een script bevatten, gebruikt u in plaats daarvan dubbele aanhalingstekens. Wanneer u standaardparameterwaarden opgeeft tijdens het maken of uitvoeren van een script, is het niet nodig om de standaardwaarde in dubbele of enkelvoudige aanhalingstekens op te geven, ongeacht of de waarde een spatie bevat of niet.

Parametervalidatie

Elke parameter in het script heeft een dialoogvenster Eigenschappen voor scriptparameters om validatie voor die parameter toe te voegen. Na het toevoegen van validatie moet u fouten krijgen als u een waarde ingeeft voor een parameter die niet voldoet aan de validatie.

Voorbeeld: Voornaam

In dit voorbeeld kunt u de eigenschappen van de tekenreeksparameter Voornaam instellen.

Scriptparameters - tekenreeks

De validatiesectie van het dialoogvenster Eigenschappen van scriptparameters bevat de volgende velden voor uw gebruik:

  • Minimale lengte : minimaal aantal tekens van het veld Voornaam.
  • Maximale lengte- maximum aantal tekens van het veld Voornaam
  • RegEx - kort voor Normale expressie. Zie de volgende sectie, Validatie van reguliere expressie gebruiken voor meer informatie over het gebruik van de reguliere expressie.
  • Aangepaste fout: handig voor het toevoegen van uw eigen aangepaste foutbericht dat de systeemvalidatiefoutberichten overtrof.

Validatie van reguliere expressies gebruiken

Een normale expressie is een compacte vorm van programmeren om een tekenreeks te controleren op een gecodeerde validatie. U kunt bijvoorbeeld controleren of er geen hoofdletterteken is in het veld Voornaam door in het [^A-Z] veld RegEx te plaatsen.

De normale expressieverwerking voor dit dialoogvenster wordt ondersteund door de .NET Framework. Zie .NET Regular Expression and Regular Expression Language (Normale expressietaal van NET) voor informatie over het gebruik van normale expressies.

Voorbeelden van scripts

Hier zijn een paar voorbeelden die scripts illustreren die u mogelijk met deze mogelijkheid wilt gebruiken.

Een nieuwe map en een nieuw bestand maken

Met dit script worden een nieuwe map en een bestand in de map gemaakt, gezien de naamgevingsinvoer.

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

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

Versie van besturingssysteem krijgen

In dit script wordt WMI gebruikt om een query uit te voeren op de computer voor de besturingssysteemversie.

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

PowerShell-scripts bewerken of kopiëren

U kunt een bestaand PowerShell-script bewerken of kopiëren dat wordt gebruikt met de functie Scripts uitvoeren. In plaats van een script dat u moet wijzigen opnieuw te maken, bewerkt u het nu rechtstreeks. Beide acties gebruiken dezelfde wizard-ervaring als wanneer u een nieuw script maakt. Wanneer u een script bewerkt of kopieert, blijft configuratiebeheer de goedkeuringstoestand niet aanhouden.

Tip

Bewerk geen script dat actief wordt uitgevoerd op clients. Ze zijn niet klaar met het uitvoeren van het oorspronkelijke script en mogelijk krijgt u niet de beoogde resultaten van deze clients.

Een script bewerken

  1. Ga naar het knooppunt Scripts onder de werkruimte Softwarebibliotheek.
  2. Selecteer het script dat u wilt bewerken en klik vervolgens op Bewerken op het lint.
  3. Wijzig of wijzig het script opnieuw op de pagina Scriptdetails.
  4. Klik op Volgende om het overzicht weer te geven en vervolgens op Sluiten wanneer u klaar bent met bewerken.

Een script kopiëren

  1. Ga naar het knooppunt Scripts onder de werkruimte Softwarebibliotheek.
  2. Selecteer het script dat u wilt kopiëren en klik vervolgens op Kopiëren op het lint.
  3. Wijzig de naam van het script in het veld Scriptnaam en maak eventuele extra bewerkingen die u nodig hebt.
  4. Klik op Volgende om het overzicht weer te geven en vervolgens op Sluiten wanneer u klaar bent met bewerken.

Een script uitvoeren

Nadat een script is goedgekeurd, kan het worden uitgevoerd op één apparaat of een verzameling. Zodra de uitvoering van het script is gestart, wordt het snel gestart via een systeem met hoge prioriteit dat in één uur wordt uitverded. De resultaten van het script worden vervolgens geretourneerd met behulp van een statusberichtsysteem.

Een verzameling doelen voor uw script selecteren:

  1. Klik in de console Configuration Manager op Activa en naleving.
  2. Klik in de werkruimte Activa en naleving op Apparaatverzamelingen.
  3. Klik in de lijst Apparaatverzamelingen op de verzameling apparaten waarop u het script wilt uitvoeren.
  4. Selecteer een verzameling naar keuze en klik op Script uitvoeren.
  5. Kies op de pagina Script van de wizard Script uitvoeren een script in de lijst. Alleen goedgekeurde scripts worden weergegeven.
  6. Klik op Volgende en voltooi de wizard.

Belangrijk

Als een script niet wordt uitgevoerd, bijvoorbeeld omdat een doelapparaat is uitgeschakeld tijdens de periode van één uur, moet u het opnieuw uitvoeren.

Doelmachineuitvoering

Het script wordt uitgevoerd als het systeem- of computeraccount op de doelclient(s). Dit account heeft beperkte netwerktoegang. Alle toegang tot externe systemen en locaties door het script moet dienovereenkomstig worden ingericht.

Scriptcontrole

Nadat u het uitvoeren van een script op een verzameling apparaten hebt gestart, gebruikt u de volgende procedure om de bewerking te controleren. U kunt een script in realtime controleren terwijl het wordt uitgevoerd en later terugkeren naar de status en resultaten voor een bepaalde uitvoering van script uitvoeren. Scriptstatusgegevens worden opgeruimd als onderdeel van de onderhoudstaak Oude clientbewerkingen verwijderen of verwijderen van het script.

Scriptmonitor - Status script uitvoeren

  1. Klik in de console Configuration Manager op Controleren.

  2. Klik in de werkruimte Controle op Scriptstatus.

  3. In de lijst Scriptstatus bekijkt u de resultaten voor elk script dat u op clientapparaten hebt gebruikt. Een scriptuitgangscode van 0 geeft in het algemeen aan dat het script is uitgevoerd.

    Scriptmonitor - Afgekapt script

Scriptuitvoer

De uitvoer van het retourscript van de client met JSON-opmaak door de resultaten van het script in te voeren op de cmdlet ConvertTo-Json. De JSON-indeling retourneert consistent leesbare scriptuitvoer. Voor scripts die objecten niet als uitvoer retourneren, converteert ConvertTo-Json cmdlet de uitvoer naar een eenvoudige tekenreeks die de client retourneert in plaats van JSON.

  • Scripts die een onbekend resultaat krijgen of waar de client offline was, worden niet in de grafieken of gegevensset gebruikt.

  • Vermijd het retourneren van grote scriptuitvoer omdat deze is afgekapt tot 4 KB.

  • Converteert eenumobject naar een tekenreekswaarde in scripts, zodat deze correct worden weergegeven in JSON-opmaak.

    Eenumobject converteren naar een steekwaarde

U kunt gedetailleerde scriptuitvoer weergeven in een onbewerkte of gestructureerde JSON-indeling. Met deze opmaak kunt u de uitvoer gemakkelijker lezen en analyseren. Als het script geldige JSON-opgemaakte tekst retourneert of als de uitvoer kan worden geconverteerd naar JSON met de cmdlet ConvertTo-Json PowerShell, bekijkt u de gedetailleerde uitvoer als JSON-uitvoer of Onbewerkte uitvoer. Anders is scriptuitvoer de enige optie.

Voorbeeld: Scriptuitvoer is converteerbaar naar geldig JSON

Opdracht: $PSVersionTable.PSVersion

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

Voorbeeld: Scriptuitvoer is ongeldig JSON

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

Microsoft Windows 10 Enterprise

Logboekbestanden

  • Op de client, standaard in C:\Windows\CCM\logs:

    • Scripts.log
    • CcmMessaging.log
  • Op het MP, standaard in C:\SMS_CCM\Logs:

    • MP_RelayMsgMgr.log
  • Op de siteserver, standaard in C:\Program Files\Configuration Manager\Logs:

    • SMS_Message_Processing_Engine.log

Automatiseren met Windows PowerShell

U kunt de volgende PowerShell-cmdlets gebruiken om een aantal van deze taken te automatiseren:

Zie ook