PowerShell-scripts maken en uitvoeren vanuit 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 bouwen van aangepaste hulpprogramma's voor het beheren van software en stellen u in staat om alledaagse taken snel uit te voeren, zodat u grote taken gemakkelijker en consistenter kunt uitvoeren.
Opmerking
In versie 2006 en eerder schakelt Configuration Manager deze optionele functie niet standaard in. U moet deze functie inschakelen voordat u deze kunt gebruiken. Zie Optionele functies van updates inschakelen voor meer informatie.
Met deze integratie in Configuration Manager kunt u de functionaliteit Scripts uitvoeren gebruiken om het volgende te doen:
- Scripts maken en bewerken voor gebruik met Configuration Manager.
- Gebruik van scripts beheren via rollen en beveiligingsbereiken.
- Mapondersteuning voor scripts.
- Scripts uitvoeren op verzamelingen of afzonderlijke on-premises beheerde Windows-pc's.
- Plan de runtime van scripts in UTC op verzamelingen of afzonderlijke on-premises beheerde Windows-pc's.
- Haal snelle geaggregeerde scriptresultaten op van clientapparaten.
- Bewaak de uitvoering van scripts en bekijk de rapportageresultaten van scriptuitvoer.
Waarschuwing
- Gezien de kracht van scripts, herinneren we u eraan om opzettelijk en voorzichtig te zijn met het gebruik ervan. We hebben aanvullende waarborgen ingebouwd om u te helpen; gescheiden rollen en bereiken. Zorg ervoor dat u de nauwkeurigheid van scripts valideert voordat u ze uitvoert en controleer of ze afkomstig zijn van een vertrouwde bron, om onbedoelde uitvoering van scripts te voorkomen. Houd rekening met uitgebreide tekens of andere verdoezeling en informeer uzelf over het beveiligen van scripts. Meer informatie over PowerShell-scriptbeveiliging
- Bepaalde antimalwaresoftware kan onbedoeld gebeurtenissen activeren tegen de functies Configuration Manager-uitvoeringsscripts of CMPivot. Het wordt aanbevolen %windir%\CCM\ScriptStore uit te sluiten, zodat deze functies zonder interferentie kunnen worden uitgevoerd met de antimalwaresoftware.
Voorwaarden
- Als u PowerShell-scripts wilt uitvoeren, moet op de client PowerShell versie 3.0 of hoger worden uitgevoerd. Als een script dat u uitvoert echter functionaliteit van een latere versie van PowerShell bevat, moet die versie van PowerShell worden uitgevoerd op de client waarop u het script uitvoert.
- Configuration Manager-clients moeten de client uitvoeren vanaf release 1706 of hoger om scripts uit te voeren.
- Als u scripts wilt gebruiken, moet u lid zijn van de juiste Configuration Manager-beveiligingsrol.
- Als u scripts wilt importeren en schrijven: uw account moet machtigingen voor maken hebben voor SMS-scripts.
- Scripts goedkeuren of weigeren: uw account moet goedkeuringsmachtigingen hebben voor SMS-scripts.
- Als u scripts wilt uitvoeren, moet uw account de machtigingen Script uitvoeren hebben voor verzamelingen.
Voor meer informatie over Configuration Manager-beveiligingsrollen:
Beveiligingsbereiken voor uitvoeringsscripts
Beveiligingsrollen voor scripts uitvoeren
Basisprincipes van op rollen gebaseerd beheer.
Beperkingen
Scripts uitvoeren ondersteunt momenteel:
- Scripttalen: PowerShell
- Parametertypen: geheel getal, tekenreeks en lijst.
Waarschuwing
Houd er rekening mee dat wanneer u parameters gebruikt, er een oppervlak wordt geopend voor mogelijk risico van powerShell-injectieaanvallen. Er zijn verschillende manieren om te beperken en te omzeilen, zoals het gebruik van reguliere expressies om parameterinvoer te valideren of het gebruik van vooraf gedefinieerde parameters. Het is gebruikelijk om geen geheimen op te nemen in uw PowerShell-scripts (geen wachtwoorden, enzovoort). Meer informatie over PowerShell-scriptbeveiliging
Scriptauteurs en fiatteurs uitvoeren
Run Scripts gebruikt het concept van scriptauteurs en goedkeurders als afzonderlijke rollen voor de implementatie en uitvoering van een script. Als u de rollen auteur en fiatteur hebt gescheiden, kunt u een belangrijke procescontrole uitvoeren op het krachtige hulpprogramma dat Scripts uitvoeren is. Er is een extra rol scriptrunners waarmee scripts kunnen worden uitgevoerd, maar niet het maken of goedkeuren van scripts. Zie Beveiligingsrollen voor scripts maken.
Besturingselement voor scriptsrollen
Standaard kunnen gebruikers een script dat ze hebben geschreven 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 gemaakt en de persoon die het script goedkeurt. Deze rollen bieden een extra beveiligingsniveau tegen het uitvoeren van een script zonder toezicht. U kunt secundaire goedkeuring uitschakelen om het testen te vereenvoudigen.
Een script goedkeuren of weigeren
Scripts moeten worden goedgekeurd door de rol script fiatteur voordat ze kunnen worden uitgevoerd. Een script goedkeuren:
- Klik in de Configuration Manager-console op Softwarebibliotheek.
- Klik in de werkruimte Softwarebibliotheek op Scripts.
- 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.
- Selecteer in het dialoogvenster Script goedkeuren of weigeren de optie Goedkeuren of Weigeren voor het script. Voer eventueel een opmerking in over uw beslissing. Als u een script weigert, kan het niet worden uitgevoerd op clientapparaten.
- Voltooi de wizard. In de lijst Script ziet u dat de kolom Goedkeuringsstatus wordt gewijzigd, afhankelijk van de actie die u hebt uitgevoerd.
Gebruikers toestaan hun eigen scripts goed te keuren
Deze goedkeuring wordt voornamelijk gebruikt voor de testfase van het ontwikkelen van scripts.
- Klik in de Configuration Manager-console op Beheer.
- Vouw in de werkruimte Beheerde optie Siteconfiguratie uit en klik vervolgens op Sites.
- Kies uw site in de lijst met sites en klik vervolgens op het tabblad Start in de groep Sites op Hiërarchie-instellingen.
- Schakel op het tabblad Algemeen van het dialoogvenster Eigenschappen van hiërarchie-instellingen het selectievakje Scriptauteurs vereisen extra scriptkeur uit.
Belangrijk
Als best practice mag u niet toestaan dat een auteur van een script zijn eigen scripts goedkeurt. Dit mag alleen worden toegestaan in een testomgeving. Overweeg zorgvuldig de mogelijke gevolgen van het wijzigen van deze instelling in een productieomgeving.
Beveiligingsbereiken
Uitvoeren van scripts maakt gebruik van beveiligingsbereiken, een bestaande functie van Configuration Manager, om het ontwerpen en uitvoeren van scripts te beheren 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. Volg de beschreven stappen om de rollen scriptlopers, scriptauteurs en goedkeurders voor scripts te maken.
- Ga in de Configuration Manager-console naar Beveiligingsrollen voor beheerbeveiliging>>
- 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 gewenste machtigingen hebt.
- Geef de aangepaste rol een Naam en een Beschrijving.
- Wijs de beveiligingsrol toe aan de machtigingen die hieronder worden beschreven.
Machtigingen voor beveiligingsrollen
Rolnaam: Script Runners
- Beschrijving: met deze machtigingen kan deze rol alleen scripts uitvoeren die eerder zijn gemaakt en goedgekeurd door andere rollen.
- Machtigingen: Zorg ervoor dat het volgende is ingesteld op Ja.
Categorie | Machtiging | Status |
---|---|---|
Verzameling | Script uitvoeren | Ja |
Ligging | Lezen | Ja |
SMS-scripts | Lezen | Ja |
Rolnaam: Scriptauteurs
- Beschrijving: met deze machtigingen kan deze rol scripts schrijven, maar ze kunnen ze niet goedkeuren of uitvoeren.
- Machtigingen: zorg ervoor dat de volgende machtigingen zijn ingesteld.
Categorie | Machtiging | Status |
---|---|---|
Verzameling | Script uitvoeren | Neen |
Ligging | Lezen | Ja |
SMS-scripts | Maken | Ja |
SMS-scripts | Lezen | Ja |
SMS-scripts | Verwijderen | Ja |
SMS-scripts | Wijzigen | Ja |
Rolnaam: Goedkeurders voor scripts
- Beschrijving: met deze machtigingen kan deze rol scripts goedkeuren, maar ze kunnen ze niet maken of uitvoeren.
- Machtigingen: Zorg ervoor dat de volgende machtigingen zijn ingesteld.
Categorie | Machtiging | Status |
---|---|---|
Verzameling | Script uitvoeren | Neen |
Ligging | Lezen | Ja |
SMS-scripts | Lezen | Ja |
SMS-scripts | Goedkeuren | Ja |
SMS-scripts | Wijzigen | Ja |
Voorbeeld van sms-scripts-machtigingen voor de rol scriptauteurs
Mapondersteuning voor scripts
Vanaf versie 2403 kunt u scripts organiseren met behulp van mappen. Met deze wijziging kunt u scripts beter categoriseren en beheren.
Open de Configuration Manager-console en ga naar de werkruimte Softwarebibliotheek. Selecteer in het lint of het snelmenu in de scripts een van de volgende opties:
- Map maken
- Map verwijderen
- Mapnaam wijzigen
- Mappen verplaatsen
- Beveiligingsbereiken instellen
Een script maken
- Klik in de Configuration Manager-console op Softwarebibliotheek.
- Klik in de werkruimte Softwarebibliotheek op Scripts.
- Klik op het tabblad Start in de groep Maken op Script maken.
- Configureer op de pagina Script van de wizard Script maken de volgende instellingen:
- Scriptnaam : voer een naam in voor het script. Hoewel u meerdere scripts met dezelfde naam kunt maken, maakt het gebruik van dubbele namen het moeilijker voor u om het script te vinden dat u nodig hebt in de Configuration Manager-console.
- Scripttaal : momenteel worden alleen PowerShell-scripts ondersteund.
- Importeren : importeer een PowerShell-script in de console. Het script wordt weergegeven in het veld Script .
- Wissen : hiermee verwijdert u het huidige script uit het veld Script.
- Script : geeft het momenteel geïmporteerde script weer. U kunt het script in dit veld zo nodig bewerken.
- Voltooi de wizard. Het nieuwe script wordt weergegeven in de lijst Script met de status Wachten op goedkeuring. Voordat u dit script op clientapparaten kunt uitvoeren, moet u het goedkeuren.
Belangrijk
Vermijd het opnieuw opstarten van een apparaat of het opnieuw opstarten van de Configuration Manager-agent wanneer u de functie Scripts uitvoeren gebruikt. Dit kan leiden tot een continue herstartstatus. Indien nodig zijn er verbeteringen in de functie voor clientmeldingen waarmee apparaten opnieuw kunnen worden opgestart. De kolom In behandeling voor opnieuw opstarten kan helpen bij het identificeren van apparaten die opnieuw moeten worden opgestart.
Scriptparameters
Het toevoegen van parameters aan een script biedt meer flexibiliteit voor uw werk. U kunt maximaal 10 parameters opnemen. Hieronder vindt u een overzicht van de huidige mogelijkheid van de functie Scripts uitvoeren met scriptparameters voor; Tekenreeks, gegevenstypen Geheel getal . Lijsten met vooraf ingestelde waarden zijn ook beschikbaar. Als uw script niet-ondersteunde gegevenstypen bevat, krijgt u een waarschuwing.
Klik in het dialoogvenster Script maken op Scriptparameters onder Script.
Elk van de parameters van uw script heeft een eigen dialoogvenster voor het toevoegen van verdere details en validatie. Als het script een standaardparameter bevat, wordt deze geïnventariseerd in de gebruikersinterface van de parameter en kunt u deze instellen. Configuration Manager overschrijft de standaardwaarde niet, omdat het script nooit rechtstreeks wordt gewijzigd. U kunt dit zien als 'vooraf ingevulde voorgestelde waarden' worden opgegeven in de gebruikersinterface, maar Configuration Manager biedt geen toegang tot 'standaard'-waarden tijdens runtime. U kunt dit omzeilen door het script te bewerken om de juiste standaardwaarden te hebben.
Belangrijk
Parameterwaarden mogen niet één aanhalingsteken 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 enkele aanhalingstekens te plaatsen, ongeacht of de waarde een spatie bevat of niet.
Parametervalidatie
Elke parameter in uw script heeft een dialoogvenster Eigenschappen van scriptparameter waarmee u validatie voor die parameter kunt toevoegen. Nadat u de validatie hebt toegevoegd, worden er fouten weergegeven als u een waarde invoert voor een parameter die niet voldoet aan de validatie.
Voorbeeld: Voornaam
In dit voorbeeld kunt u de eigenschappen van de tekenreeksparameter FirstName instellen.
De validatiesectie van het dialoogvenster Eigenschappen van scriptparameter bevat de volgende velden voor uw gebruik:
- Minimale lengte : minimaal aantal tekens van het veld FirstName .
- Maximumlengte: maximum aantal tekens van het veld FirstName
- RegEx - afkorting voor Reguliere 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 eventuele foutberichten voor systeemvalidatie vervangt.
Validatie van reguliere expressie gebruiken
Een reguliere expressie is een compacte vorm van programmeren voor het controleren van een tekenreeks aan de hand van een gecodeerde validatie. U kunt bijvoorbeeld controleren op de afwezigheid van een hoofdletter alfabetisch teken in het veld FirstName door het veld RegEx te plaatsen[^A-Z]
.
De reguliere expressieverwerking voor dit dialoogvenster wordt ondersteund door .NET Framework. Zie .NET Regular Expression en Regular Expression Language voor hulp bij het gebruik van reguliere expressies.
Scriptvoorbeelden
Hier volgen enkele voorbeelden van scripts die u mogelijk met deze mogelijkheid wilt gebruiken.
Een nieuwe map en een nieuw bestand maken
Met dit script maakt u een nieuwe map en een bestand in de map, op basis van uw 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 ophalen
Dit script gebruikt WMI om een query uit te voeren op de computer voor de versie van het besturingssysteem.
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 opnieuw te maken dat u moet wijzigen, kunt u het nu rechtstreeks bewerken. Voor beide acties wordt dezelfde wizardervaring gebruikt als wanneer u een nieuw script maakt. Wanneer u een script bewerkt of kopieert, houdt Configuration Manager de goedkeuringsstatus niet vast.
Tip
Bewerk geen script dat actief wordt uitgevoerd op clients. Het uitvoeren van het oorspronkelijke script wordt niet voltooid en mogelijk krijgt u niet de beoogde resultaten van deze clients.
Een script bewerken
- Ga naar het knooppunt Scripts onder de werkruimte Softwarebibliotheek .
- Selecteer het script dat u wilt bewerken en klik vervolgens op Bewerken op het lint.
- Wijzig of importeer uw script op de pagina Scriptdetails .
- Klik op Volgende om de samenvatting weer te geven en vervolgens op Sluiten wanneer u klaar bent met bewerken.
Een script kopiëren
- Ga naar het knooppunt Scripts onder de werkruimte Softwarebibliotheek .
- Selecteer het script dat u wilt kopiëren en klik vervolgens op Kopiëren op het lint.
- Wijzig de naam van het script in het veld Scriptnaam en breng eventueel aanvullende wijzigingen aan.
- Klik op Volgende om de samenvatting 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 uw script begint, wordt het snel gestart via een systeem met hoge prioriteit dat binnen één uur een time-out heeft. De resultaten van het script worden vervolgens geretourneerd met behulp van een systeem voor statusberichten.
Een verzameling doelen voor uw script selecteren:
- Klik in de Configuration Manager-console op Activa en naleving.
- Klik in de werkruimte Activa en naleving op Apparaatverzamelingen.
- Klik in de lijst Apparaatverzamelingen op de verzameling apparaten waarop u het script wilt uitvoeren.
- Selecteer een verzameling naar keuze en klik op Script uitvoeren.
- Kies op de pagina Script van de wizard Script uitvoeren een script in de lijst. Alleen goedgekeurde scripts worden weergegeven.
- 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.
Runtime van scripts plannen
Vanaf Configuration Manager huidige vertakkingsversie 2309 kunt u nu de runtime van scripts plannen in UTC.
Scriptuitvoering plannen voor een verzameling:
Klik in de Configuration Manager-console op Activa en naleving.
Klik in de werkruimte Activa en naleving op Apparaatverzamelingen.
Klik in de lijst Apparaatverzamelingen op de verzameling apparaten waarop u het script wilt plannen.
Selecteer een verzameling naar keuze en klik op Script uitvoeren.
Op de pagina Planning schakelt u het selectievakje Het script plannen dat moet worden uitgevoerd op in en geeft u de planningstijd in UTC op.
Controleer de details die worden weergegeven op de overzichtspagina.
Klik op Volgende en voltooi de wizard.
Opmerking
Elke 5 minuten worden maximaal vijfentwintig geplande scripts uitgevoerd.
Uitvoering van doelcomputer
Het script wordt uitgevoerd als het systeem - of computeraccount op de doelclient(s). Dit account heeft beperkte netwerktoegang. Toegang tot externe systemen en locaties door het script moet dienovereenkomstig worden ingericht.
Scriptbewaking
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 bewaken terwijl het wordt uitgevoerd, en later terugkeren naar de status en resultaten voor een bepaalde uitvoering van script uitvoeren. Scriptstatusgegevens worden opgeschoond als onderdeel van de onderhoudstaak Verouderde clientbewerkingen verwijderen of het verwijderen van het script.
Klik in de Configuration Manager-console op Bewaking.
Klik in de werkruimte Bewaking op Scriptstatus.
In de lijst Scriptstatus bekijkt u de resultaten voor elk script dat u hebt uitgevoerd op clientapparaten. Een afsluitcode van het script 0 geeft over het algemeen aan dat het script is uitgevoerd.
Scriptbewaking plannen voor een verzameling
Klik in de Configuration Manager-console op Bewaking.
Klik in de werkruimte Bewaking op het knooppunt Geplande scripts.
Er wordt een nieuwe rij weergegeven in de lijst met geplande scripts.
Controleer of er een nieuwe rij is weergegeven in de lijst met geplande scripts. De kolom Status moet de waarde Gepland hebben. De kolom ClientOperationId moet leeg zijn. Controleer of de andere kolommen, zoals Scriptnaam, Planningstijd, enzovoort, de juiste waarden hebben.
Vernieuw na de planningstijd het knooppunt Geplande scripts . De statuskolom moet de waarde Clientbewerking gestart hebben. De kolom ClientOperationId moet een geheel getal hebben.
Klik in de werkruimte Bewaking op Het knooppunt Scriptstatus. Controleer of de nieuwe rij is weergegeven in de lijst en of de ClientOperationId gelijk is aan de ClientOperationId van het knooppunt Geplande scripts .
Klik op Status weergeven en zorg ervoor dat de uitvoer van het script wordt weergegeven.
Scriptuitvoer
Client retourneert scriptuitvoer met behulp van JSON-opmaak door de resultaten van het script door te leiden naar de Cmdlet ConvertTo-Json . De JSON-indeling retourneert consistent leesbare scriptuitvoer. Voor scripts die geen objecten als uitvoer retourneren, converteert de cmdlet ConvertTo-Json de uitvoer naar een eenvoudige tekenreeks die de client retourneert in plaats van JSON.
Scripts die een onbekend resultaat krijgen of waarbij de client offline was, worden niet weergegeven in de grafieken of gegevensset.
Vermijd het retourneren van grote scriptuitvoer omdat deze is afgekapt tot 4 kB.
Converteer een enum-object naar een tekenreekswaarde in scripts, zodat deze correct worden weergegeven in JSON-opmaak.
U kunt gedetailleerde scriptuitvoer weergeven in onbewerkte of gestructureerde JSON-indeling. Deze opmaak maakt de uitvoer gemakkelijker te lezen en te analyseren. Als het script geldige tekst in JSON-indeling retourneert of als de uitvoer kan worden geconverteerd naar JSON met behulp van de PowerShell-cmdlet ConvertTo-Json , bekijkt u de gedetailleerde uitvoer als JSON-uitvoer of Onbewerkte uitvoer. Anders is de enige optie Scriptuitvoer.
Voorbeeld: Scriptuitvoer is converteerbaar naar een geldige JSON
Bevelen: $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 16299 551
Voorbeeld: Scriptuitvoer is geen geldige JSON
Bevelen: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption
Microsoft Windows 10 Enterprise
Logboekbestanden
Standaard op de client in C:\Windows\CCM\logs:
- Scripts.log
- CcmMessaging.log
Standaard in de MP in C:\SMS_CCM\Logs:
- MP_RelayMsgMgr.log
Standaard op de siteserver 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:
- Approve-CMScript
- Deny-CMScript
- Get-CMScript
- Invoke-CMScript
- New-CMScript
- Remove-CMScript
- Set-CMScript