Creare ed eseguire script di PowerShell dalla console di Configuration Manager
Si applica a: Configuration Manager (Current Branch)
Configuration Manager ha la possibilità integrata di eseguire script di PowerShell. PowerShell offre il vantaggio di creare script sofisticati e automatizzati che vengono compresi e condivisi con una community più ampia. Gli script semplificano la creazione di strumenti personalizzati per amministrare il software e consentono di eseguire rapidamente attività banali, consentendo di eseguire processi di grandi dimensioni in modo più semplice e coerente.
Nota
Nella versione 2006 e versioni precedenti Configuration Manager non abilita questa funzionalità facoltativa per impostazione predefinita. È necessario abilitare questa funzionalità prima di usarla. Per altre informazioni, vedere Abilitare le funzionalità facoltative dagli aggiornamenti.
Con questa integrazione in Configuration Manager, è possibile usare la funzionalità Esegui script per eseguire le operazioni seguenti:
- Creare e modificare script da usare con Configuration Manager.
- Gestire l'utilizzo degli script tramite ruoli e ambiti di sicurezza.
- Supporto delle cartelle per gli script.
- Eseguire script in raccolte o singoli PC Windows gestiti in locale.
- Pianificare il runtime degli script in formato UTC nelle raccolte o nei singoli PC Windows gestiti locali.
- Ottenere risultati rapidi dello script aggregato dai dispositivi client.
- Monitorare l'esecuzione dello script e visualizzare i risultati dei report dall'output dello script.
Avviso
- Data la potenza degli script, ti ricordiamo di essere intenzionale e attento al loro utilizzo. Abbiamo integrato misure di sicurezza aggiuntive per aiutarti; ruoli e ambiti separati. Assicurarsi di convalidare l'accuratezza degli script prima di eseguirli e verificare che provenissero da un'origine attendibile, per impedire l'esecuzione imprevista di script. Prestare attenzione ai caratteri estesi o ad altri offuscamenti ed essere informati sulla protezione degli script. Informazioni sulla sicurezza degli script PowerShell
- Alcuni software antimalware possono attivare inavvertitamente eventi per le funzionalità Run Scripts o CMPivot di Configuration Manager. È consigliabile escludere %windir%\CCM\ScriptStore in modo che il software antimalware consenta l'esecuzione di tali funzionalità senza interferenze.
Prerequisiti
- Per eseguire script PowerShell, nel client deve essere in esecuzione PowerShell versione 3.0 o successiva. Tuttavia, se uno script eseguito contiene funzionalità di una versione successiva di PowerShell, il client in cui si esegue lo script deve eseguire tale versione di PowerShell.
- Per eseguire script, i client di Configuration Manager devono eseguire il client dalla versione 1706 o successiva.
- Per usare gli script, l'utente deve essere membro del ruolo di sicurezza appropriato di Configuration Manager.
- Per importare e creare script, l'account deve disporre delle autorizzazioni di creazione per gli script SMS.
- Per approvare o negare gli script, l'account deve disporre delle autorizzazioni di approvazione per gli script SMS.
- Per eseguire script: l'account deve disporre delle autorizzazioni Esegui script per le raccolte.
Per altre informazioni sui ruoli di sicurezza di Configuration Manager:
Ambiti di sicurezza per l'esecuzione di script
Ruoli di sicurezza per gli script
di esecuzione Nozioni fondamentali sull'amministrazione basata su ruoli.
Limitazioni
Gli script di esecuzione attualmente supportano:
- Linguaggi di scripting: PowerShell
- Tipi di parametro: integer, stringa ed elenco.
Avviso
Tenere presente che quando si usano i parametri, apre una superficie di attacco per potenziali rischi di attacco di powershell injection. Esistono diversi modi per attenuare e risolvere il problema, ad esempio l'uso di espressioni regolari per convalidare l'input dei parametri o l'uso di parametri predefiniti. È consigliabile non includere segreti negli script di PowerShell (nessuna password e così via). Altre informazioni sulla sicurezza degli script di PowerShell
Eseguire autori di script e responsabili approvazione
Esegui script usa il concetto di autori di script e responsabili approvazione script come ruoli separati per l'implementazione e l'esecuzione di uno script. La separazione dei ruoli autore e responsabile approvazione consente un importante controllo del processo per lo strumento potente che esegue script. Esiste un ruolo aggiuntivo di script runner che consente l'esecuzione di script, ma non la creazione o l'approvazione degli script. Vedere Creare ruoli di sicurezza per gli script.
Controllo dei ruoli degli script
Per impostazione predefinita, gli utenti non possono approvare uno script creato. Poiché gli script sono potenti, versatili e potenzialmente distribuiti in molti dispositivi, è possibile separare i ruoli tra la persona che crea lo script e la persona che approva lo script. Questi ruoli offrono un livello di sicurezza aggiuntivo rispetto all'esecuzione di uno script senza supervisione. È possibile disattivare l'approvazione secondaria per semplificare i test.
Approvare o negare uno script
Gli script devono essere approvati dal ruolo responsabile approvazione script prima di poter essere eseguiti. Per approvare uno script:
- Nella console di Configuration Manager fare clic su Raccolta software.
- Nell'area di lavoro Raccolta software fare clic su Script.
- Nell'elenco Script scegliere lo script da approvare o negare e quindi, nel gruppo Script della scheda Home, fare clic su Approva/Nega.
- Nella finestra di dialogo Approva o nega script selezionare Approva o Nega per lo script. Facoltativamente, immettere un commento sulla decisione. Se si nega uno script, non può essere eseguito nei dispositivi client.
- Completare la procedura guidata. Nell'elenco Script viene visualizzata la modifica della colonna Stato approvazione a seconda dell'azione eseguita.
Consentire agli utenti di approvare i propri script
Questa approvazione viene usata principalmente per la fase di test dello sviluppo di script.
- Nella console di Configuration Manager fare clic su Amministrazione.
- Nell'area di lavoro Amministrazione espandere Configurazione sito e quindi fare clic su Siti.
- Nell'elenco dei siti scegliere il sito e quindi, nel gruppo Siti della scheda Home, fare clic su Impostazioni gerarchia.
- Nella scheda Generale della finestra di dialogo Proprietà impostazioni gerarchia deselezionare la casella di controllo Script authors require additional script approver (Script authors require additional script approver).
Importante
Come procedura consigliata, non è consigliabile consentire a un autore di script di approvare i propri script. Deve essere consentito solo in un'impostazione lab. Considerare attentamente il potenziale impatto della modifica di questa impostazione in un ambiente di produzione.
Ambiti di sicurezza
Esegui script usa gli ambiti di sicurezza, una funzionalità esistente di Configuration Manager, per controllare la creazione e l'esecuzione degli script tramite l'assegnazione di tag che rappresentano i gruppi di utenti. Per altre informazioni sull'uso degli ambiti di sicurezza, vedere Configurare l'amministrazione basata su ruoli per Configuration Manager.
Creare ruoli di sicurezza per gli script
I tre ruoli di sicurezza usati per l'esecuzione di script non vengono creati per impostazione predefinita in Configuration Manager. Per creare gli strumenti di esecuzione di script, gli autori di script e i ruoli responsabili approvazione script, seguire la procedura descritta.
- Nella console di Configuration Manager passare aRuoli disicurezza di sicurezza> di amministrazione>
- Fare clic con il pulsante destro del mouse su un ruolo e scegliere Copia. Al ruolo copiato sono già state assegnate le autorizzazioni. Assicurarsi di accettare solo le autorizzazioni desiderate.
- Assegnare al ruolo personalizzato un nome e una descrizione.
- Assegnare al ruolo di sicurezza le autorizzazioni descritte di seguito.
Autorizzazioni del ruolo di sicurezza
Nome ruolo: Script Runner
- Descrizione: queste autorizzazioni consentono a questo ruolo di eseguire solo script creati e approvati in precedenza da altri ruoli.
- Autorizzazioni: Assicurarsi che quanto segue sia impostato su Sì.
Categoria | Autorizzazione | Stato |
---|---|---|
Raccolta | Esegui script | Sì |
Sito | Lettura | Sì |
Script SMS | Lettura | Sì |
Nome ruolo: Autori di script
- Descrizione: queste autorizzazioni consentono a questo ruolo di creare script, ma non possono approvarli o eseguirli.
- Autorizzazioni: assicurarsi che siano impostate le autorizzazioni seguenti.
Categoria | Autorizzazione | Stato |
---|---|---|
Raccolta | Esegui script | No |
Sito | Lettura | Sì |
Script SMS | Creare | Sì |
Script SMS | Lettura | Sì |
Script SMS | Elimina | Sì |
Script SMS | Modifica | Sì |
Nome ruolo: Responsabili approvazione script
- Descrizione: queste autorizzazioni consentono a questo ruolo di approvare gli script, ma non possono crearli o eseguirli.
- Autorizzazioni: Assicurarsi che siano impostate le autorizzazioni seguenti.
Categoria | Autorizzazione | Stato |
---|---|---|
Raccolta | Esegui script | No |
Sito | Lettura | Sì |
Script SMS | Lettura | Sì |
Script SMS | Approva | Sì |
Script SMS | Modifica | Sì |
Esempio di autorizzazioni degli script SMS per il ruolo degli autori di script
Supporto delle cartelle per gli script
A partire dalla versione 2403, è possibile organizzare gli script usando le cartelle. Questa modifica consente una migliore categorizzazione e gestione degli script.
Aprire la console di Configuration Manager e passare all'area di lavoro Raccolta software. Nella barra multifunzione o nel menu di scelta rapida, in Script selezionare le opzioni seguenti:
- Crea cartella
- Elimina cartella
- Rinomina cartella
- Sposta cartelle
- Impostare gli ambiti di sicurezza
Creare uno script
- Nella console di Configuration Manager fare clic su Raccolta software.
- Nell'area di lavoro Raccolta software fare clic su Script.
- Nel gruppo Crea della scheda Home fare clic su Crea script.
- Nella pagina Script della Creazione guidata script configurare le impostazioni seguenti:
- Nome script : immettere un nome per lo script. Anche se è possibile creare più script con lo stesso nome, l'uso di nomi duplicati rende più difficile trovare lo script necessario nella console di Configuration Manager.
- Linguaggio di script : attualmente sono supportati solo gli script di PowerShell.
- Importazione : importare uno script di PowerShell nella console. Lo script viene visualizzato nel campo Script .
- Cancella : rimuove lo script corrente dal campo Script.
- Script : visualizza lo script attualmente importato. È possibile modificare lo script in questo campo in base alle esigenze.
- Completare la procedura guidata. Il nuovo script viene visualizzato nell'elenco Script con stato In attesa di approvazione. Prima di poter eseguire questo script nei dispositivi client, è necessario approvarlo.
Importante
Evitare di creare script per un riavvio del dispositivo o un riavvio dell'agente di Configuration Manager quando si usa la funzionalità Esegui script. In questo modo potrebbe verificarsi uno stato di riavvio continuo. Se necessario, sono stati apportati miglioramenti alla funzionalità di notifica client che consentono il riavvio dei dispositivi. La colonna di riavvio in sospeso consente di identificare i dispositivi che richiedono un riavvio.
Parametri dello script
L'aggiunta di parametri a uno script offre una maggiore flessibilità per il lavoro. È possibile includere fino a 10 parametri. Di seguito viene delineata la funzionalità corrente della funzionalità Esegui script con i parametri di script per ; Tipi di dati String e Integer . Sono disponibili anche elenchi di valori predefiniti. Se lo script ha tipi di dati non supportati, viene visualizzato un avviso.
Nella finestra di dialogo Crea script fare clic su Parametri script in Script.
Ognuno dei parametri dello script ha una finestra di dialogo specifica per aggiungere ulteriori dettagli e convalida. Se è presente un parametro predefinito nello script, verrà enumerato nell'interfaccia utente del parametro ed è possibile impostarlo. Configuration Manager non sovrascriverà il valore predefinito perché non modificherà mai direttamente lo script. È possibile considerare questo come "valori suggeriti prepopolato" nell'interfaccia utente, ma Configuration Manager non fornisce l'accesso ai valori "predefiniti" in fase di esecuzione. Questa operazione può essere eseguita modificando lo script in modo da avere le impostazioni predefinite corrette.
Importante
I valori dei parametri non possono contenere una singola virgolette.
Esiste un problema noto per cui i valori dei parametri che includono o sono racchiusi tra virgolette singole non vengono passati correttamente allo script. Quando si specificano valori di parametro predefiniti contenenti uno spazio all'interno di uno script, usare invece virgolette doppie. Quando si specificano valori di parametro predefiniti durante la creazione o l'esecuzione di uno script, non è necessario racchiudere il valore predefinito tra virgolette doppie o singole, indipendentemente dal fatto che il valore contenga o meno uno spazio.
Convalida dei parametri
Ogni parametro nello script include una finestra di dialogo Proprietà parametro script che consente di aggiungere la convalida per tale parametro. Dopo aver aggiunto la convalida, è necessario ottenere errori se si immette un valore per un parametro che non soddisfa la convalida.
Esempio: FirstName
In questo esempio è possibile impostare le proprietà del parametro stringa FirstName.
La sezione di convalida della finestra di dialogo Proprietà parametro script contiene i campi seguenti per l'uso:
- Lunghezza minima : numero minimo di caratteri del campo FirstName .
- Lunghezza massima: numero massimo di caratteri del campo FirstName
- RegEx , abbreviazione di Espressione regolare. Per altre informazioni sull'uso dell'espressione regolare, vedere la sezione successiva Uso della convalida delle espressioni regolari.
- Errore personalizzato : utile per aggiungere un messaggio di errore personalizzato che sostituisce tutti i messaggi di errore di convalida del sistema.
Uso della convalida delle espressioni regolari
Un'espressione regolare è una forma compatta di programmazione per il controllo di una stringa di caratteri rispetto a una convalida codificata. Ad esempio, è possibile verificare l'assenza di un carattere alfabetico maiuscolo nel campo FirstName inserendo [^A-Z]
nel campo RegEx .
L'elaborazione di espressioni regolari per questa finestra di dialogo è supportata da .NET Framework. Per indicazioni sull'uso di espressioni regolari, vedere Espressioni regolari .NET e Linguaggio di espressione regolare.
Esempi di script
Di seguito sono riportati alcuni esempi che illustrano gli script che è possibile usare con questa funzionalità.
Creare una nuova cartella e un nuovo file
Questo script crea una nuova cartella e un file all'interno della cartella, in base all'input di denominazione.
Param(
[Parameter(Mandatory=$True)]
[string]$FolderName,
[Parameter(Mandatory=$True)]
[string]$FileName
)
New-Item $FolderName -type directory
New-Item $FileName -type file
Ottenere la versione del sistema operativo
Questo script usa WMI per eseguire query sul computer per la versione del sistema operativo.
Write-Output (Get-WmiObject -Class Win32_operatingSystem).Caption
Modificare o copiare script di PowerShell
È possibile modificare o copiare uno script di PowerShell esistente usato con la funzionalità Esegui script . Invece di ricreare uno script che è necessario modificare, è ora possibile modificarlo direttamente. Entrambe le azioni usano la stessa esperienza della procedura guidata di quando si crea un nuovo script. Quando si modifica o si copia uno script, Configuration Manager non mantiene lo stato di approvazione.
Consiglio
Non modificare uno script in esecuzione nei client. Non terminano l'esecuzione dello script originale e potrebbero non essere ottenuti i risultati previsti da questi client.
Modificare uno script
- Passare al nodo Script nell'area di lavoro Raccolta software .
- Selezionare lo script da modificare, quindi fare clic su Modifica sulla barra multifunzione.
- Modificare o reimportare lo script nella pagina Dettagli script .
- Fare clic su Avanti per visualizzare il riepilogo e quindi chiudi al termine della modifica.
Copiare uno script
- Passare al nodo Script nell'area di lavoro Raccolta software .
- Selezionare lo script da copiare, quindi fare clic su Copia sulla barra multifunzione.
- Rinominare lo script nel campo Nome script e apportare eventuali modifiche aggiuntive necessarie.
- Fare clic su Avanti per visualizzare il riepilogo e quindi chiudi al termine della modifica.
Eseguire uno script
Dopo l'approvazione di uno script, può essere eseguito su un singolo dispositivo o su una raccolta. Una volta avviata l'esecuzione dello script, viene avviata rapidamente tramite un sistema ad alta priorità che scade in un'ora. I risultati dello script vengono quindi restituiti usando un sistema di messaggi di stato.
Per selezionare una raccolta di destinazioni per lo script:
- Nella console di Configuration Manager fare clic su Asset e conformità.
- Nell'area di lavoro Asset e conformità fare clic su Raccolte dispositivi.
- Nell'elenco Raccolte dispositivi fare clic sulla raccolta di dispositivi in cui si vuole eseguire lo script.
- Selezionare una raccolta a scelta, fare clic su Esegui script.
- Nella pagina Script della procedura guidata Esegui script scegliere uno script dall'elenco. Vengono visualizzati solo gli script approvati.
- Fare clic su Avanti e quindi completare la procedura guidata.
Importante
Se uno script non viene eseguito, ad esempio perché un dispositivo di destinazione è disattivato durante il periodo di un'ora, è necessario eseguirlo di nuovo.
Pianificare il runtime degli script
A partire da Configuration Manager Current Branch versione 2309, è ora possibile pianificare il runtime degli script in formato UTC.
Pianificare l'esecuzione di script in una raccolta:
Nella console di Configuration Manager fare clic su Asset e conformità.
Nell'area di lavoro Asset e conformità fare clic su Raccolte dispositivi.
Nell'elenco Raccolte dispositivi fare clic sulla raccolta di dispositivi in cui si vuole pianificare lo script.
Selezionare una raccolta a scelta, fare clic su Esegui script.
Nella pagina Pianificazione pianificare lo script da eseguire nella casella di controllo e specificare l'ora di pianificazione in formato UTC.
Verificare i dettagli visualizzati nella pagina di riepilogo.
Fare clic su Avanti e quindi completare la procedura guidata.
Nota
Ogni 5 minuti verrà eseguito un massimo di venticinque script pianificati.
Esecuzione del computer di destinazione
Lo script viene eseguito come account di sistema o computer nei client di destinazione. Questo account ha accesso alla rete limitato. È necessario effettuare il provisioning di tutti gli accessi a sistemi e percorsi remoti da parte dello script.
Monitoraggio degli script
Dopo aver avviato l'esecuzione di uno script in una raccolta di dispositivi, usare la procedura seguente per monitorare l'operazione. È possibile monitorare uno script in tempo reale durante l'esecuzione e successivamente tornare allo stato e ai risultati per una determinata esecuzione dello script di esecuzione. I dati sullo stato dello script vengono puliti come parte dell'attività di manutenzione delete aged Client Operations o dell'eliminazione dello script.
Nella console di Configuration Manager fare clic su Monitoraggio.
Nell'area di lavoro Monitoraggio fare clic su Stato script.
Nell'elenco Stato script visualizzare i risultati per ogni script eseguito nei dispositivi client. Un codice di uscita dello script pari a 0 indica in genere che lo script è stato eseguito correttamente.
Pianificare il monitoraggio degli script in una raccolta
Nella console di Configuration Manager fare clic su Monitoraggio.
Nell'area di lavoro Monitoraggio fare clic sul nodo Script pianificati.
Verrà visualizzata una nuova riga nell'elenco degli script pianificati.
Verificare che nell'elenco degli script pianificati sia stata visualizzata una nuova riga. La colonna di stato deve avere il valore Pianificato. La colonna ClientOperationId deve essere vuota. Verificare che le altre colonne, ad esempio Nome script, Ora pianificazione e così via, abbiano valori appropriati.
Dopo l'ora di pianificazione, aggiornare il nodo Script pianificati . La colonna di stato deve avere il valore Operazione client avviata correttamente. La colonna ClientOperationId deve avere un valore intero.
Nell'area di lavoro Monitoraggio fare clic sul nodo Stato script. Verificare che la nuova riga sia stata visualizzata nell'elenco e che ClientOperationId sia uguale a ClientOperationId dal nodo Script pianificati .
Fare clic su Visualizza stato e verificare che venga visualizzato l'output dello script.
Output dello script
L'output dello script restituito del client usando la formattazione JSON tramite pipe dei risultati dello script al cmdlet ConvertTo-Json . Il formato JSON restituisce in modo coerente l'output dello script leggibile. Per gli script che non restituiscono oggetti come output, il cmdlet ConvertTo-Json converte l'output in una stringa semplice restituita dal client invece di JSON.
Gli script che ottengono un risultato sconosciuto o in cui il client era offline non verranno visualizzati nei grafici o nel set di dati.
Evitare di restituire un output di script di grandi dimensioni perché è troncato a 4 KB.
Convertire un oggetto enumerazione in un valore stringa negli script in modo che vengano visualizzati correttamente nella formattazione JSON.
È possibile visualizzare l'output dettagliato dello script in formato JSON non elaborato o strutturato. Questa formattazione semplifica la lettura e l'analisi dell'output. Se lo script restituisce testo in formato JSON valido o l'output può essere convertito in JSON usando il cmdlet di PowerShell ConvertTo-Json , visualizzare l'output dettagliato come output JSON o output non elaborato. In caso contrario, l'unica opzione è Output script.
Esempio: l'output dello script è convertibile in JSON valido
Comando: $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 16299 551
Esempio: l'output dello script non è JSON valido
Comando: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption
Microsoft Windows 10 Enterprise
File di registro
Nel client, per impostazione predefinita, in C:\Windows\CCM\logs:
- Scripts.log
- CcmMessaging.log
In Mp, per impostazione predefinita, in C:\SMS_CCM\Logs:
- MP_RelayMsgMgr.log
Nel server del sito, per impostazione predefinita, in C:\Programmi\Configuration Manager\Logs:
- SMS_Message_Processing_Engine.log
Automatizzare con Windows PowerShell
È possibile usare i cmdlet di PowerShell seguenti per automatizzare alcune di queste attività:
- Approve-CMScript
- Deny-CMScript
- Get-CMScript
- Invoke-CMScript
- New-CMScript
- Remove-CMScript
- Set-CMScript