Usare gli script di PowerShell nei dispositivi Windows 10/11 in Intune

Usare l'estensione di gestione Microsoft Intune per caricare gli script di PowerShell in Intune. Eseguire quindi questi script nei dispositivi Windows 10. L'estensione di gestione migliora la gestione dei dispositivi Windows (MDM) e semplifica il passaggio alla gestione moderna.

Importante

Per supportare le funzionalità espanse e le correzioni di bug, usare .NET Framework 4.7.2 o versione successiva con l'estensione di gestione di Intune nei client Windows. Se un client Windows continua a usare una versione precedente di .NET Framework, l'estensione di gestione di Intune continuerà a funzionare. .NET Framework 4.7.2 è disponibile da Windows Update a partire dal 10 luglio 2018, incluso in Win10 1809 (RS5) e versioni successive. Si noti che più versioni di .NET Framework possono coesistere in un dispositivo.

Questa funzionalità si applica a:

  • Windows 10 e versioni successive (esclusi i Windows 10 Home)

Nota

Dopo aver soddisfatto i prerequisiti dell'estensione di gestione di Intune, l'estensione di gestione di Intune viene installata automaticamente quando all'utente o al dispositivo vengono assegnati uno script di PowerShell o un'app Win32, app di Microsoft Store, impostazioni dei criteri di conformità personalizzati o correzioni proattive. Per altre informazioni, vedere Prerequisiti delle estensioni di gestione di Intune.

Gli script di PowerShell, che non sono ufficialmente supportati nei dispositivi WPJ (Workplace Join), possono essere distribuiti nei dispositivi WPJ. In particolare, gli script powershell del contesto del dispositivo funzionano nei dispositivi WPJ, ma gli script di PowerShell del contesto utente vengono ignorati dalla progettazione. Gli script di contesto utente verranno ignorati nei dispositivi WPJ e non verranno segnalati all'interfaccia di amministrazione Microsoft Intune.

Passare alla gestione moderna

L'elaborazione utente sta attraversando una trasformazione digitale. L'IT tradizionale è incentrato su una singola piattaforma di dispositivi, dispositivi di proprietà dell'azienda, utenti che lavorano dall'ufficio e diversi processi IT manuali e reattivi. L'area di lavoro moderna usa molte piattaforme di proprietà dell'utente e dell'azienda. Consente agli utenti di lavorare ovunque e fornisce processi IT automatizzati e proattivi.

I servizi MDM, ad esempio Microsoft Intune, possono gestire i dispositivi mobili e desktop che eseguono Windows 10. Il client di gestione Windows 10 predefinito comunica con Intune per eseguire attività di gestione aziendali. Potrebbero essere necessarie alcune attività, ad esempio la configurazione avanzata dei dispositivi e la risoluzione dei problemi. Per la gestione delle app Win32, è possibile usare la funzionalità di gestione delle app Win32 nei dispositivi Windows 10.

L'estensione di gestione di Intune integra le funzionalità MDM Windows 10 predefinite. È possibile creare script di PowerShell da eseguire nei dispositivi Windows 10. Ad esempio, creare uno script di PowerShell che esegue configurazioni avanzate dei dispositivi. Caricare quindi lo script in Intune, assegnare lo script a un gruppo di Microsoft Entra ed eseguire lo script. È quindi possibile monitorare lo stato di esecuzione dello script dall'inizio alla fine.

Prima di iniziare

  • Quando gli script sono impostati sul contesto utente e l'utente finale dispone dei diritti di amministratore, per impostazione predefinita, lo script di PowerShell viene eseguito con il privilegio di amministratore.

  • Agli utenti finali non è richiesto di accedere al dispositivo per eseguire script di PowerShell.

  • L'agente dell'estensione di gestione di Intune verifica la presenza di nuovi script o modifiche dopo ogni riavvio. Dopo aver assegnato i criteri ai gruppi Microsoft Entra, viene eseguito lo script di PowerShell e vengono segnalati i risultati dell'esecuzione. Una volta eseguito, lo script non viene eseguito di nuovo, a meno che non sia presente una modifica nello script o nei criteri. Se lo script ha esito negativo, l'agente dell'estensione di gestione di Intune ritenta lo script tre volte per le successive tre archiviazioni consecutive dell'agente di estensione di gestione di Intune.

  • Per i dispositivi condivisi, lo script di PowerShell verrà eseguito per ogni nuovo utente che accede.

  • Gli script di PowerShell vengono eseguiti prima dell'esecuzione delle app Win32. In altre parole, gli script di PowerShell vengono eseguiti per primi. Quindi, le app Win32 vengono eseguite.

  • Timeout degli script di PowerShell dopo 30 minuti.

Importante

Le procedure consigliate per il riconoscimento della privacy quando si usano script di PowerShell e script di correzione includono quanto segue:

  • Non includere alcun tipo di informazioni riservate negli script (ad esempio le password)
  • Non includere informazioni personali negli script
  • Non usare script per raccogliere informazioni personali dai dispositivi
  • Seguire sempre le procedure consigliate per la privacy

Per informazioni correlate, vedere Correzioni.

Prerequisiti

L'estensione di gestione di Intune presenta i prerequisiti seguenti. Una volta soddisfatte, l'estensione di gestione di Intune viene installata automaticamente quando all'utente o al dispositivo viene assegnato uno script di PowerShell o un'app Win32.

  • Dispositivi che eseguono Windows 10 versione 1607 o successiva. Se il dispositivo viene registrato usando la registrazione automatica in blocco, i dispositivi devono essere eseguiti Windows 10 versione 1709 o successiva. L'estensione di gestione di Intune non è supportata in Windows 10 in modalità S, perché la modalità S non consente l'esecuzione di app non nello Store.

  • Dispositivi aggiunti a Microsoft Entra ID, tra cui:

  • Microsoft Entra registrati/aggiunti all'area di lavoro (WPJ): dispositivi registrati in Microsoft Entra ID, per altre informazioni, vedere Aggiunta all'area di lavoro come autenticazione a secondo fattore senza problemi. In genere si tratta di dispositivi Bring Your Own Device (BYOD) che hanno aggiunto un account aziendale o dell'istituto di istruzione tramite Impostazioni>Account>accesso aziendale o dell'istituto di istruzione.

  • Dispositivi registrati in Intune, tra cui:

    • Dispositivi registrati in criteri di gruppo. Per indicazioni, vedere Registrare automaticamente un dispositivo Windows 10 usando Criteri di gruppo.

    • Dispositivi registrati manualmente in Intune, ovvero quando:

      • La registrazione automatica in Intune è abilitata in Microsoft Entra ID. Gli utenti accedono ai dispositivi usando un account utente locale e si uniscono manualmente al dispositivo per Microsoft Entra ID. Quindi, accedono al dispositivo usando il proprio account Microsoft Entra.

      OPPURE

      • L'utente accede al dispositivo usando il proprio account Microsoft Entra e quindi si registra in Intune.
    • Dispositivi co-gestiti che usano Configuration Manager e Intune. Quando si installano app Win32, assicurarsi che il carico di lavoro App sia impostato su Intune pilota o Intune. Gli script di PowerShell verranno eseguiti anche se il carico di lavoro App è impostato su Configuration Manager. L'estensione di gestione di Intune verrà distribuita in un dispositivo quando si indirizza uno script di PowerShell al dispositivo. Tenere presente che il dispositivo deve essere un dispositivo Microsoft Entra ID o Microsoft Entra aggiunto ibrido. E deve essere in esecuzione Windows 10 versione 1607 o successiva. Per indicazioni, vedere gli articoli seguenti:

  • Gli script distribuiti ai client che eseguono l'estensione di gestione di Intune non verranno eseguiti se l'orologio di sistema del dispositivo è estremamente obsoleto per mesi o anni. Dopo aver aggiornato l'orologio di sistema, lo script verrà eseguito come previsto.

Nota

Per informazioni sull'uso di macchine virtuali Window 10, vedere Uso di macchine virtuali Windows 10 con Intune.

Creare un criterio script e assegnarlo

  1. Accedere all'interfaccia di amministrazione Microsoft Intune.

  2. Selezionare Dispositivi>Script>Aggiungi>Windows 10 e versioni successive.

    Screenshot che mostra la creazione di un nuovo script per un dispositivo Windows 10.

  3. In Nozioni di base immettere le proprietà seguenti e selezionare Avanti:

    • Nome: immettere un nome per lo script di PowerShell.
    • Descrizione: immettere una descrizione per lo script di PowerShell. Questa impostazione è facoltativa ma consigliata.
  4. In Impostazioni script immettere le proprietà seguenti e selezionare Avanti:

    • Percorso dello script: passare allo script di PowerShell. Lo script deve essere inferiore a 200 KB (ASCII).

    • Eseguire questo script usando le credenziali di accesso: selezionare (impostazione predefinita) per eseguire lo script con le credenziali dell'utente nel dispositivo. Scegliere No per eseguire lo script nel contesto di sistema. Molti amministratori scelgono . Se lo script è necessario per l'esecuzione nel contesto di sistema, scegliere No.

    • Imponi controllo firma script: selezionare (impostazione predefinita) se lo script deve essere firmato da un autore attendibile. Selezionare No se non esiste un requisito per la firma dello script.

    • Eseguire script nell'host PowerShell a 64 bit: selezionare per eseguire lo script in un host PowerShell a 64 bit in un'architettura client a 64 bit. Selezionare No (impostazione predefinita) esegue lo script in un host PowerShell a 32 bit.

      Quando si imposta su o No, usare la tabella seguente per il comportamento dei criteri nuovi ed esistenti:

      Eseguire script nell'host a 64 bit Architettura client Nuovo script Script di criteri esistente
      No 32 bit Host di PowerShell a 32 bit supportato Viene eseguito solo nell'host PowerShell a 32 bit, che funziona su architetture a 32 bit e a 64 bit.
      64 bit Esegue script nell'host PowerShell a 64 bit per architetture a 64 bit. Quando viene eseguito a 32 bit, lo script viene eseguito in un host PowerShell a 32 bit. Esegue lo script nell'host PowerShell a 32 bit. Se questa impostazione passa a 64 bit, lo script viene aperto (non viene eseguito) in un host PowerShell a 64 bit e restituisce i risultati. Quando viene eseguito a 32 bit, lo script viene eseguito in un host PowerShell a 32 bit.
  5. Selezionare Tag ambito. I tag di ambito sono facoltativi. Usare il controllo degli accessi in base al ruolo e i tag di ambito per l'IT distribuito include altre informazioni.

    Per aggiungere un tag di ambito:

    1. Scegliere Seleziona tag> di ambito selezionare un tag di ambito esistente nell'elenco >Seleziona.

    2. Al termine, selezionare Avanti.

  6. Selezionare AssegnazioniSelezionare i >gruppi da includere. Viene visualizzato un elenco esistente di gruppi di Microsoft Entra.

    1. Selezionare uno o più gruppi che includono gli utenti i cui dispositivi ricevono lo script. Scegliere Seleziona. I gruppi scelti vengono visualizzati nell'elenco e riceveranno i criteri.

      Nota

      Gli script di PowerShell in Intune possono essere destinati a Microsoft Entra gruppi di sicurezza dei dispositivi o Microsoft Entra gruppi di sicurezza degli utenti. Tuttavia, quando si prendono di mira i dispositivi aggiunti all'area di lavoro (WPJ), è possibile usare solo Microsoft Entra gruppi di sicurezza dei dispositivi (la destinazione utente verrà ignorata). Per altre informazioni, vedere Supporto dell'app Win32 per dispositivi con aggiunta all'area di lavoro (WPJ).

    2. Selezionare Avanti.

      Assegnare o distribuire script di PowerShell ai gruppi di dispositivi in Microsoft Intune

  7. In Rivedi e aggiungi viene visualizzato un riepilogo delle impostazioni configurate. Selezionare Aggiungi per salvare lo script. Quando si seleziona Aggiungi, i criteri vengono distribuiti ai gruppi scelti.

Errore di esecuzione dello script di esempio

8:00

  • Archivia
  • Eseguire lo script ConfigScript01
  • Lo script non riesce

9:00

  • Archivia
  • Eseguire lo script ConfigScript01
  • Lo script non riesce (numero di tentativi = 1)

10:00

  • Archivia
  • Eseguire lo script ConfigScript01
  • Lo script non riesce (numero di tentativi = 2)

11:00

  • Archivia
  • Eseguire lo script ConfigScript01
  • Lo script non riesce (numero di tentativi = 3)

12:00

  • Archivia
  • Non vengono eseguiti altri tentativi per eseguire lo script ConfigScript01.
  • Se non vengono apportate modifiche aggiuntive allo script, non vengono eseguiti altri tentativi di esecuzione dello script.

Monitorare lo stato di esecuzione

È possibile monitorare lo stato di esecuzione degli script di PowerShell per utenti e dispositivi nel portale.

In Script di PowerShell selezionare lo script da monitorare, scegliere Monitoraggio e quindi scegliere uno dei report seguenti:

  • Stato del dispositivo
  • Stato utente

Log delle estensioni di gestione di Intune

I log dell'agente nel computer client sono in genere in C:\ProgramData\Microsoft\IntuneManagementExtension\Logs. È possibile usare CMTrace.exe per visualizzare questi file di log.

Screenshot o log dell'agente cmtrace di esempio in Microsoft Intune

Eliminare uno script

Negli script di PowerShell fare clic con il pulsante destro del mouse sullo script e scegliere Elimina.

Problemi noti e risoluzioni

Problema: l'estensione di gestione di Intune non viene scaricata

Possibili risoluzioni:

  • Il dispositivo non è aggiunto a Microsoft Entra ID. Assicurarsi che i dispositivi soddisfino i prerequisiti (in questo articolo).
  • Non sono assegnati script di PowerShell o app Win32 ai gruppi a cui appartiene l'utente o il dispositivo.
  • Il dispositivo non può eseguire l'archiviazione con il servizio Intune. Ad esempio, non è disponibile alcun accesso a Internet, nessun accesso a Windows Push Notification Services (WNS) e così via.
  • Il dispositivo è in modalità S. L'estensione di gestione di Intune non è supportata nei dispositivi in esecuzione in modalità S.

Per verificare se il dispositivo è registrato automaticamente, è possibile:

  1. Passare a Impostazioni>Account>Accedere all'azienda o all'istituto di istruzione.
  2. Selezionare le informazioni sull'account > aggiunto.
  3. In Report di diagnostica avanzato selezionare Crea report.
  4. Aprire in MDMDiagReport un Web browser.
  5. Cercare la proprietà MDMDeviceWithAAD . Se la proprietà esiste, il dispositivo viene registrato automaticamente. Se questa proprietà non esiste, il dispositivo non viene registrato automaticamente.

Abilita Windows 10 registrazione automatica include i passaggi per configurare la registrazione automatica in Intune.

Problema: gli script di PowerShell non vengono eseguiti

Possibili risoluzioni:

  • Gli script di PowerShell non vengono eseguiti ad ogni accesso. Vengono eseguiti:

    • Quando lo script viene assegnato a un dispositivo

    • Se si modifica lo script, caricarlo e assegnarlo a un utente o a un dispositivo

      Consiglio

      L'estensione di gestione Microsoft Intune è un servizio eseguito nel dispositivo, proprio come qualsiasi altro servizio elencato nell'app Servizi (services.msc). Dopo il riavvio di un dispositivo, questo servizio può anche essere riavviato e verificare la presenza di eventuali script di PowerShell assegnati con il servizio Intune. Se il servizio estensione di gestione Microsoft Intune è impostato su Manuale, il servizio potrebbe non essere riavviato dopo il riavvio del dispositivo.

  • Assicurarsi che i dispositivi siano aggiunti a Microsoft Entra ID. I dispositivi aggiunti solo all'area di lavoro o all'organizzazione (registrati in Microsoft Entra ID) non riceveranno gli script.

  • Verificare che l'estensione di gestione di Intune sia stata scaricata in %ProgramFiles(x86)%\Microsoft Intune Management Extension.

  • Gli script non vengono eseguiti in Surface Hub o Windows 10 in modalità S.

  • Esaminare i log per eventuali errori. Vedere Log delle estensioni di gestione di Intune (in questo articolo).

  • Per possibili problemi di autorizzazione, assicurarsi che le proprietà dello script di PowerShell siano impostate su Run this script using the logged on credentials. Verificare inoltre che l'utente connesso disponga delle autorizzazioni appropriate per eseguire lo script.

  • Per isolare i problemi di scripting, è possibile:

    • Esaminare la configurazione dell'esecuzione di PowerShell nei dispositivi. Per indicazioni, vedere i criteri di esecuzione di PowerShell .

    • Eseguire uno script di esempio usando l'estensione di gestione di Intune. Ad esempio, creare la C:\Scripts directory e assegnare a tutti il controllo completo. Eseguire lo script seguente:

      write-output "Script worked" | out-file c:\Scripts\output.txt
      

      In caso di esito positivo, è necessario creare output.txt e includere il testo "Script lavorato".

    • Per testare l'esecuzione di script senza Intune, eseguire gli script nell'account di sistema usando lo strumento psexec in locale:

      psexec -i -s

    • Se lo script segnala che ha avuto esito positivo, ma in realtà non è riuscito, è possibile che il servizio antivirus stia sandboxing AgentExecutor. Lo script seguente segnala sempre un errore in Intune. Come test, è possibile usare questo script:

      Write-Error -Message "Forced Fail" -Category OperationStopped
      mkdir "c:\temp" 
      echo "Forced Fail" | out-file c:\temp\Fail.txt
      

      Se lo script segnala un esito positivo, esaminare per AgentExecutor.log confermare l'output dell'errore. Se lo script viene eseguito, la lunghezza deve essere >2.

    • Per acquisire i .error file e .output , il frammento di codice seguente esegue lo script tramite AgentExecutor in PowerShell x86 (C:\Windows\SysWOW64\WindowsPowerShell\v1.0). Mantiene i log per la revisione. Tenere presente che l'estensione di gestione di Intune pulisce i log dopo l'esecuzione dello script:

      $scriptPath = read-host "Enter the path to the script file to execute"
      $logFolder = read-host "Enter the path to a folder to output the logs to"
      $outputPath = $logFolder+"\output.output"
      $errorPath =  $logFolder+"\error.error"
      $timeoutPath =  $logFolder+"\timeout.timeout"
      $timeoutVal = 60000 
      $PSFolder = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0"
      $AgentExec = "C:\Program Files (x86)\Microsoft Intune Management Extension\agentexecutor.exe"
      &$AgentExec -powershell  $scriptPath $outputPath $errorPath $timeoutPath $timeoutVal $PSFolder 0 0
      

Passaggi successivi

Monitorare e risolvere i problemi relativi ai profili.