Creare ed eseguire script di PowerShell dalla console di Configuration Manager

Si applica a: Configuration Manager (Current Branch)

Configuration Manager offre una funzionalità integrata per l'esecuzione di script di PowerShell. PowerShell offre il vantaggio di creare script sofisticati e automatizzati, 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 lavori di grandi dimensioni in modo più semplice e coerente.

Nota

Nella versione 2006 e precedenti, Configuration Manager non abilita questa funzionalità facoltativa per impostazione predefinita. Devi abilitare questa funzionalità prima di usarla. Per altre informazioni, vedere Abilitare le funzionalità facoltative dagli aggiornamenti.

Con questa integrazione in Configuration Manager, puoi 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 su raccolte o singoli PC Windows gestiti in locale.
  • Pianificare il runtime degli script in UTC su raccolte o singoli PC Windows gestiti in locale.
  • Ottenere rapidamente risultati aggregati degli script dai dispositivi client.
  • Monitorare l'esecuzione degli script e visualizzare i risultati dei report dall'output degli script.

Avviso

  • Dato il potere degli script, ti ricordiamo di essere intenzionale e attento nel loro utilizzo. Abbiamo integrato ulteriori misure di sicurezza per assisterti; Ruoli e ambiti segregati. Assicurarsi di convalidare l'accuratezza degli script prima di eseguirli e verificare che provengano da una fonte attendibile, per impedire l'esecuzione involontaria di script. Sii consapevole dei caratteri estesi o di altri offuscamenti e informati su come proteggere gli script. Informazioni sulla sicurezza degli script PowerShell
  • Alcuni software antimalware possono attivare inavvertitamente eventi contro le funzionalità Esegui script 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 gli 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, il tuo account deve disporre delle autorizzazioni di creazione per gli script SMS.
  • Per approvare o rifiutare gli script: l'account deve disporre delle autorizzazioni di approvazione per gli script SMS.
  • Per eseguire gli script: il tuo 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 l'esecuzione di script
Nozioni fondamentali sull'amministrazione basata sui ruoli.

Limitazioni

Esegui script attualmente supporta:

  • Linguaggi di scripting: PowerShell
  • Tipi di parametro: numero intero, stringa ed elenco.

Avviso

Tenere presente che, quando si usano i parametri, si apre una superficie per il potenziale rischio di attacco injection di PowerShell. Esistono vari modi per mitigare e aggirare il problema, ad esempio usando espressioni regolari per convalidare l'input dei parametri o usando parametri predefiniti. La procedura consigliata comune è quella di non includere segreti negli script di PowerShell (nessuna password e così via). Altre informazioni sulla sicurezza degli script di PowerShell

Eseguire autori e approvatori di script

Esegui script usa il concetto di autori di script e approvatori di script come ruoli separati per l'implementazione e l'esecuzione di uno script. La separazione dei ruoli di autore e approvatore consente un importante controllo del processo per il potente strumento Esegui script. Esiste un ruolo aggiuntivo di esecuzione degli script che consente l'esecuzione degli 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 che hanno creato. Poiché gli script sono potenti, versatili e potenzialmente distribuiti in molti dispositivi, puoi separare i ruoli tra la persona che crea lo script e la persona che lo approva. Questi ruoli offrono un ulteriore livello di sicurezza contro l'esecuzione di uno script senza supervisione. È possibile disattivare l'approvazione secondaria, per facilitare il test.

Approvare o rifiutare uno script

Gli script devono essere approvati dal ruolo di responsabile approvazione degli script prima di poter essere eseguiti. Per approvare uno script:

  1. Nella console di Configuration Manager fare clic su Raccolta software.
  2. Nell'area di lavoro Raccolta software fare clic su Script.
  3. Nell'elenco Script scegliere lo script da approvare o rifiutare e quindi fare clic su Approva/Rifiuta nella scheda Home.
  4. Nella finestra di dialogo Approva o rifiuta lo script , selezionare Approva o Rifiuta per lo script. Facoltativamente, immettere un commento sulla decisione. Se si rifiuta uno script, questo non può essere eseguito nei dispositivi client.
    Script - Approvazione
  5. Completare la procedura guidata. Nell'elenco Script , la colonna Stato approvazione cambia 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 dello script.

  1. Nella console di Configuration Manager fare clic su Amministrazione.
  2. Nell'area di lavoro Amministrazione espandere Configurazione sito e quindi fare clic su Siti.
  3. Nell'elenco dei siti scegliere il sito e quindi, nel gruppo Siti della scheda Home, fare clic su Impostazioni gerarchia.
  4. Nella scheda Generale della finestra di dialogo Proprietà impostazioni gerarchia deselezionare la casella di controllo Gli autori di script richiedono un apposito approvatore di script.

Importante

Come procedura consigliata, non dovresti consentire a un autore di script di approvare i propri script. Dovrebbe essere consentito solo in un ambiente di laboratorio. Valutare 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 sui ruoli per Configuration Manager.

Creare ruoli di sicurezza per gli script

I tre ruoli di sicurezza usati per l'esecuzione degli script non vengono creati per impostazione predefinita in Configuration Manager. Per creare i ruoli di script-runner, autore di script e approvatore di script, segui i passaggi descritti.

  1. Nella console di Configuration Manager, vai a Amministrazione>,Ruoli>di sicurezza
  2. Fai clic con il pulsante destro del mouse su un ruolo e fai clic su Copia. Il ruolo copiato dispone di autorizzazioni già assegnate. Assicurarsi di accettare solo le autorizzazioni desiderate.
  3. Assegnare un nome e una descrizione al ruolo personalizzato.
  4. Assegnare al ruolo di sicurezza le autorizzazioni descritte di seguito.

Autorizzazioni del ruolo di sicurezza

Nome ruolo: Script Runners

  • Descrizione: queste autorizzazioni consentono a questo ruolo di eseguire solo script creati e approvati in precedenza da altri ruoli.
  • Autorizzazioni: Assicurati che le seguenti impostazioni siano impostate su .
Categoria Autorizzazione Stato
Raccolta Esegui script
Sito Lettura
Script SMS Lettura

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
Script SMS Creare
Script SMS Lettura
Script SMS Elimina
Script SMS Modifica

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
Script SMS Lettura
Script SMS Approva
Script SMS Modifica

Esempio di autorizzazioni per gli script SMS per il ruolo Autori script

Esempio di autorizzazioni per gli script SMS per il ruolo Autori 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.

Apri la console di Configuration Manager e passa all'area di lavoro Raccolta software. Dalla barra multifunzione o dal menu di scelta rapida, in Script, selezionare una delle seguenti opzioni:

  • Crea cartella
  • Elimina cartella
  • Rinomina cartella
  • Spostare cartelle
  • Impostare gli ambiti di sicurezza

Creare uno script

  1. Nella console di Configuration Manager fare clic su Raccolta software.
  2. Nell'area di lavoro Raccolta software fare clic su Script.
  3. Nel gruppo Crea della scheda Home fare clic su Crea script.
  4. Nella pagina Script della procedura guidata Crea 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 degli script - Attualmente sono supportati solo gli script di PowerShell.
    • Importa : consente di 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. Se necessario, è possibile modificare lo script in questo campo.
  5. Completare la procedura guidata. Il nuovo script viene visualizzato nell'elenco degli script con lo stato In attesa di approvazione. Prima di poter eseguire lo script nei dispositivi client, è necessario approvarlo.

Importante

Evita di eseguire lo scripting di un riavvio del dispositivo o di un riavvio dell'agente di Configuration Manager quando usi la funzionalità Esegui script. Questa operazione potrebbe causare uno stato di riavvio continuo. Se necessario, sono disponibili miglioramenti alla funzionalità di notifica client che consentono di riavviare i dispositivi. La colonna Riavvio in sospeso consente di identificare i dispositivi che necessitano di un riavvio.

Parametri di script

L'aggiunta di parametri a uno script offre una maggiore flessibilità per il tuo lavoro. È possibile includere fino a 10 parametri. Di seguito viene illustrata la funzionalità corrente della funzionalità Esegui script con parametri di script per: Tipi di dati String,Integer . Sono disponibili anche elenchi di valori preimpostati. Se lo script contiene tipi di dati non supportati, viene visualizzato un avviso.

Nella finestra di dialogo Crea script , fate clic su Parametri script (Script Parameters ) in Script (Script).

Ogni parametro dello script ha una propria finestra di dialogo per aggiungere ulteriori dettagli e convalidare. Se nello script è presente un parametro predefinito, questo verrà enumerato nell'interfaccia utente del parametro ed è possibile impostarlo. Configuration Manager non sovrascriverà il valore predefinito perché non modificherà mai direttamente lo script. Puoi considerarlo come "valori suggeriti precompilati" forniti nell'interfaccia utente, ma Configuration Manager non fornisce l'accesso ai valori "predefiniti" in fase di esecuzione. Questo problema può essere risolto modificando lo script per avere le impostazioni predefinite corrette.

Importante

I valori dei parametri non possono contenere virgolette singole.

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 le virgolette doppie. Quando si specificano i valori dei parametri 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 ha una finestra di dialogo Proprietà parametro script per aggiungere la convalida per quel parametro. Dopo aver aggiunto la convalida, si dovrebbero visualizzare errori se si immette un valore per un parametro che non soddisfa la convalida.

Esempio: Nome

In questo esempio è possibile impostare le proprietà del parametro stringa Nome.

Parametri script - stringa

La sezione di convalida della finestra di dialogo Proprietà parametro script contiene i seguenti campi da utilizzare:

  • Lunghezza minima : numero minimo di caratteri del campo Nome .
  • Lunghezza massima: numero massimo di caratteri del campo Nome
  • RegEx , abbreviazione di Regular Expression. Per ulteriori informazioni sull'uso delle espressioni regolari, vedere la sezione successiva, Uso della convalida delle espressioni regolari.
  • Errore personalizzato : utile per aggiungere un messaggio di errore personalizzato che sostituisce qualsiasi messaggio 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 [^A-Z]Nome inserendo il campo RegEx.

L'elaborazione delle espressioni regolari per questa finestra di dialogo è supportata da .NET Framework. Per istruzioni sull'utilizzo delle espressioni regolari, vedere Espressioni regolari .NET e linguaggio per le espressioni regolari.

Esempi di script

Di seguito sono disponibili 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 utilizza 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 devi modificare, ora modificalo direttamente. Entrambe le azioni usano la stessa esperienza di procedura guidata di quando si crea un nuovo script. Quando modifichi o copi uno script, Configuration Manager non mantiene lo stato di approvazione.

Consiglio

Non modificare uno script in esecuzione attiva nei client. Non termineranno l'esecuzione dello script originale e potresti non ottenere i risultati desiderati da questi client.

Modificare uno script

  1. Passa al nodo Script nell'area di lavoro Raccolta software .
  2. Selezionare lo script da modificare e quindi fare clic su Modifica nella barra multifunzione.
  3. Modificare o reimportare lo script nella pagina Dettagli script .
  4. Fai clic su Avanti per visualizzare il riepilogo , quindi su Chiudi al termine della modifica.

Copiare uno script

  1. Passa al nodo Script nell'area di lavoro Raccolta software .
  2. Selezionare lo script da copiare, quindi fare clic su Copia sulla barra multifunzione.
  3. Rinominare lo script nel campo Nome script e apportare le eventuali altre modifiche necessarie.
  4. Fai clic su Avanti per visualizzare il riepilogo , quindi su Chiudi al termine della modifica.

Eseguire uno script

Dopo l'approvazione, uno script può essere eseguito su un singolo dispositivo o su una raccolta. Una volta iniziata l'esecuzione, lo script viene avviato rapidamente tramite un sistema ad alta priorità che scade dopo un'ora. I risultati dello script vengono quindi restituiti utilizzando un sistema di messaggi di stato.

Per selezionare una raccolta di target per lo script:

  1. Nella console di Configuration Manager fare clic su Asset e conformità.
  2. Nell'area di lavoro Risorse e conformità fare clic su Raccolte dispositivi.
  3. Nell'elenco Raccolte di dispositivi , fare clic sulla raccolta di dispositivi su cui si desidera eseguire lo script.
  4. Selezionare una raccolta di propria scelta, fare clic su Esegui script.
  5. Nella pagina Script della procedura guidata Esegui script scegliere uno script dall'elenco. Vengono visualizzati solo gli script approvati.
  6. Fare clic su Avanti e quindi completare la procedura guidata.

Importante

Se uno script non viene eseguito, ad esempio perché un dispositivo di destinazione viene spento 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 puoi pianificare il runtime degli script in UTC.

Pianificare l'esecuzione di script in una raccolta:

  1. Nella console di Configuration Manager fare clic su Asset e conformità.

  2. Nell'area di lavoro Risorse e conformità fare clic su Raccolte dispositivi.

  3. Nell'elenco Raccolte di dispositivi , fare clic sulla raccolta di dispositivi su cui si desidera pianificare lo script.

  4. Selezionare una raccolta di propria scelta, fare clic su Esegui script.

  5. Nella pagina Pianificazione selezionare la casella di controllo Pianifica l'esecuzione dello script e specificare l'ora di pianificazione in UTC.

  6. Verificare i dettagli visualizzati nella pagina di riepilogo.

  7. Fare clic su Avanti e quindi completare la procedura guidata.

    Screenshot dello script - pianificazione.

Nota

Verranno elaborati un massimo di venticinque script pianificati ogni 5 minuti.

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 eseguire il provisioning di qualsiasi accesso a sistemi e posizioni 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 di Run Script. I dati sullo stato degli script vengono puliti nell'ambito dell'attività di manutenzione Elimina operazioni client obsolete o dell'eliminazione dello script.

Monitoraggio script - Stato esecuzione script

  1. Nella console di Configuration Manager fare clic su Monitoraggio.

  2. Nell'area di lavoro Monitoraggio fare clic su Stato script.

  3. Nell'elenco Stato script è possibile visualizzare i risultati per ogni script eseguito nei dispositivi client. Un codice di uscita dello script pari a 0 in genere indica che lo script è stato eseguito correttamente.

    Monitoraggio script - Script troncato

Pianificare il monitoraggio degli script su una raccolta

  1. Nella console di Configuration Manager fare clic su Monitoraggio.

  2. Nell'area di lavoro Monitoraggio fare clic sul nodo Script pianificati.

  3. Verrà visualizzata una nuova riga nell'elenco degli script pianificati.

  4. Verificare che sia stata visualizzata una nuova riga nell'elenco degli script pianificati. La colonna dello stato deve avere il valore Scheduled. La colonna ClientOperationId deve essere vuota. Verificare che le altre colonne, come Nome script, Ora pianificazione e così via, abbiano valori appropriati.

  5. Dopo l'ora di pianificazione, aggiornare il nodo Script pianificati . La colonna dello stato deve contenere il valore Operazione client avviata correttamente. La colonna ClientOperationId deve avere un valore intero.

  6. 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 al ClientOperationId del nodo Script pianificati .

  7. Fai clic su Visualizza stato e assicurati che venga visualizzato l'output dello script.

    Screenshot dello script - monitoraggio della pianificazione,

Output script

Output dello script restituito dal client usando la formattazione JSON tramite pipe dei risultati dello script al cmdlet ConvertTo-JSON . Il formato JSON restituisce in modo coerente un 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 al posto 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 output di script di grandi dimensioni perché viene troncato a 4 KB.

  • Convertire un oggetto enumerazione in un valore stringa negli script in modo che siano visualizzati correttamente in formato JSON.

    Convertire l'oggetto enumerazione in un valore sting

Puoi 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 valido in formato JSON o se 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. Altrimenti, 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 è un JSON valido

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

Microsoft Windows 10 Enterprise

File di registro

  • Sul 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:\Program Files\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à:

Vedere anche