Condividi tramite


Perché è necessario usare PowerShell per Microsoft 365

Questo articolo si applica sia a Microsoft 365 Enterprise che a Office 365 Enterprise.

Con l'interfaccia di amministrazione di Microsoft 365, è possibile gestire gli account utente e le licenze di Microsoft 365. È anche possibile gestire i servizi di Microsoft 365, ad esempio Exchange Online, Teams e SharePoint. Se invece si usa PowerShell per gestire questi servizi, è possibile sfruttare l'ambiente della riga di comando e del linguaggio di scripting per velocità, automazione e funzionalità aggiuntive.

Nota

Il modulo Azure Active Directory viene sostituito da Microsoft Graph PowerShell SDK. È possibile usare Microsoft Graph PowerShell SDK per accedere a tutte le API di Microsoft Graph. Per altre informazioni, vedere Inizia a usare Attività iniziali con Microsoft Graph PowerShell SDK. Alcuni comandi di PowerShell per Microsoft 365 in questo articolo sono stati aggiornati per l'uso di Microsoft Graph PowerShell.

Questo articolo illustra come usare PowerShell per gestire Microsoft 365 per:

  • Visualizzare informazioni aggiuntive che non è possibile visualizzare nell'interfaccia di amministrazione di Microsoft 365

  • Configurare le funzionalità e le impostazioni possibili solo con PowerShell

  • Eseguire operazioni bulk

  • Filtrare i dati

  • Stampare o salvare dati

  • Gestire tra i servizi

Tenere presente che PowerShell per Microsoft 365 è un set di moduli per Windows PowerShell, un ambiente da riga di comando per servizi e piattaforme basati su Windows. Questo ambiente crea un linguaggio della shell dei comandi che può essere esteso con moduli aggiuntivi. Offre un modo per eseguire comandi o script semplici o complessi. Ad esempio, dopo aver installato i moduli di PowerShell per Microsoft 365 e aver eseguito la connessione alla sottoscrizione di Microsoft 365, è possibile eseguire il comando seguente per elencare tutte le cassette postali utente per Microsoft Exchange Online:

Get-Mailbox

È anche possibile ottenere l'elenco delle cassette postali usando l'interfaccia di amministrazione di Microsoft 365, ma il conteggio degli elementi in tutti gli elenchi per tutti i siti per tutte le app Web non è facile.

PowerShell per Microsoft 365 è progettato per semplificare la gestione di Microsoft 365, non per sostituire l'interfaccia di amministrazione di Microsoft 365. Gli amministratori devono essere in grado di usare PowerShell per Microsoft 365 perché esistono alcune procedure di configurazione che possono essere eseguite solo tramite i comandi di PowerShell per Microsoft 365. Per questi casi, è necessario sapere come:

  • Installare i moduli di PowerShell per Microsoft 365 (eseguiti una sola volta per ogni computer amministratore).

  • Connettersi all'abbonamento a Microsoft 365 (una volta per ogni sessione di PowerShell).

  • Raccogliere le informazioni necessarie per eseguire i comandi di PowerShell necessari per Microsoft 365.

  • Eseguire i comandi di PowerShell per Microsoft 365.

Dopo aver appreso queste competenze di base, non è necessario elencare gli utenti delle cassette postali usando il comando Get-Mailbox . Inoltre, non è necessario comprendere come creare un nuovo comando come il comando citato in precedenza per contare tutti gli elementi in tutti gli elenchi per tutti i siti per tutte le app Web. Microsoft e la community di amministratori possono aiutarti a svolgere tali attività in base alle esigenze.

PowerShell per Microsoft 365 può rivelare informazioni che non è possibile visualizzare con l'interfaccia di amministrazione di Microsoft 365

L'interfaccia di amministrazione di Microsoft 365 visualizza molte informazioni utili, ma non visualizza tutte le informazioni possibili archiviate da Microsoft 365 su utenti, licenze, cassette postali e siti. Ecco un esempio per utenti e gruppi nell'interfaccia di amministrazione di Microsoft 365:

Esempio di visualizzazione di utenti e gruppi nell'interfaccia di amministrazione di Microsoft 365.

Questa visualizzazione fornisce le informazioni necessarie in molti casi. Tuttavia, in alcuni casi sono necessarie informazioni aggiuntive. Ad esempio, le licenze di Microsoft 365 (e le funzionalità di Microsoft 365 disponibili per un utente) dipendono in parte dalla posizione geografica dell'utente. I criteri e le funzionalità che è possibile estendere a un utente che risiede negli Stati Uniti potrebbero non essere uguali a quelli che è possibile estendere a un utente in India o in Belgio. Seguire questi passaggi nell'interfaccia di amministrazione di Microsoft 365 per determinare la posizione geografica di un utente:

  1. Fare doppio clic sul Nome visualizzato dell'utente.

  2. Nel riquadro di visualizzazione delle proprietà utente selezionare i dettagli.

  3. Nella visualizzazione dei dettagli selezionare altri dettagli.

  4. Scorrere fino a trovare l'intestazione Paese o area geografica:

    Esempio di informazioni sull'area per un utente nell'interfaccia di amministrazione di Microsoft 365.

  5. Prendere nota del nome visualizzato e della posizione dell'utente su un pezzo di carta o copiarlo e incollarlo nel Blocco note.

È necessario ripetere questa procedura per ogni utente. Se si hanno molti utenti, questo processo può essere noioso. Con PowerShell è possibile visualizzare queste informazioni per tutti gli utenti usando i comandi seguenti.

Nota

Il modulo Azure Active Directory viene sostituito da Microsoft Graph PowerShell SDK. È possibile usare Microsoft Graph PowerShell SDK per accedere a tutte le API di Microsoft Graph. Per altre informazioni, vedere Inizia a usare Attività iniziali con Microsoft Graph PowerShell SDK.

Per prima cosa, usare un account amministratore di Microsoft Entra DC o cloud application admin per connettersi al tenant di Microsoft 365.

Per ottenere informazioni per un utente è necessario l'ambito di autorizzazione User.ReadBasic.All o una delle altre autorizzazioni elencate nella pagina di riferimento dell'API Graph "Assegna licenza".

L'ambito di autorizzazione Organization.Read.All è necessario per leggere le licenze disponibili nel tenant.

Nota

I moduli PowerShell di Azure AD e MSOnline saranno deprecati a partire dal 30 marzo 2024. Per ulteriori informazioni, leggere l'aggiornamento sulla deprecazione. Dopo questa data, il supporto per questi moduli è limitato all'assistenza per la migrazione a Microsoft Graph PowerShell SDK e alle correzioni per la sicurezza. I moduli deprecati continueranno a funzionare fino al 30 marzo 2025.

È consigliabile effettuare la migrazione a Microsoft Graph PowerShell per interagire con Microsoft Entra ID (in precedenza Azure AD). Per le domande più comuni sulla migrazione, consultare Domande frequenti sulla migrazione. Nota: le versioni 1.0.x di MSOnline potrebbero subire interruzioni dopo il 30 giugno 2024.

Connect-MgGraph -Scopes "User.ReadBasic.All"
Get-MgUser -All -Property DisplayName, UsageLocation | Select DisplayName, UsageLocation

Ecco un esempio dei risultati:

DisplayName                               UsageLocation
-----------                               -------------
Bonnie Kearney                            GB
Fabrice Canel                             BR
Brian Johnson (TAILSPIN)                  US
Anne Wallace                              US
Alex Darrow                               US
David Longmuir                            BR

L'interpretazione di questo comando di PowerShell è: Ottenere tutti gli utenti nella sottoscrizione corrente di Microsoft 365 (Get-MgUser), ma visualizzare solo il nome e la posizione per ogni utente (Selezionare DisplayName, UsageLocation).

Poiché PowerShell per Microsoft 365 supporta un linguaggio della shell dei comandi, è possibile modificare ulteriormente le informazioni ottenute dal comando Get-MgUser . Ad esempio, è possibile che si desideri ordinare questi utenti in base alla loro posizione, raggruppando tutti gli utenti brasiliani insieme, tutti gli utenti degli Stati Uniti e così via. Ecco il comando:

Get-MgUser -All -Property DisplayName, UsageLocation | Select DisplayName, UsageLocation | Sort UsageLocation, DisplayName

Ecco un esempio dei risultati:

DisplayName                                 UsageLocation
-----------                                 -------------
David Longmuir                              BR
Fabrice Canel                               BR
Bonnie Kearney                              GB
Alex Darrow                                 US
Anne Wallace                                US
Brian Johnson (TAILSPIN)                    US

L'interpretazione di questo comando di PowerShell è: ottenere tutti gli utenti nella sottoscrizione di Microsoft 365 corrente, ma visualizzare solo il nome e la posizione per ogni utente e ordinarli prima in base alla posizione e quindi al nome (Sort UsageLocation, DisplayName).

È anche possibile usare filtri aggiuntivi. Ad esempio, se si desidera visualizzare tali informazioni sugli utenti residenti in Brasile, utilizzare questo comando:

Get-MgUser -All -Property DisplayName, Country | Where-Object {$_.Country -eq "BR"} | Select DisplayName, Country 

Ecco un esempio dei risultati:

DisplayName                                           UsageLocation
-----------                                           -------------
David Longmuir                                        BR
Fabrice Canel                                         BR

L'interpretazione di questo comando di PowerShell è: Ottenere tutti gli utenti nella sottoscrizione corrente di Microsoft 365 la cui posizione è Brasile (dove {$_. UsageLocation -eq "BR"}) e quindi visualizzare il nome e la posizione per ogni utente.

Nota sui domini di grandi dimensioni

Se si dispone di un dominio di grandi dimensioni con decine di migliaia di utenti, provare alcuni degli esempi illustrati in questo articolo potrebbe causare la limitazione delle richieste. In base a fattori come la potenza di calcolo e la larghezza di banda di rete disponibile, è possibile che si tenti di eseguire troppe operazioni contemporaneamente. Le organizzazioni di grandi dimensioni potrebbero voler dividere alcune di queste operazioni di PowerShell in due comandi.

Ad esempio, il comando seguente restituisce tutti gli account utente e mostra il nome e la posizione per ognuno di essi:

Get-MgUser -All | Select DisplayName, UsageLocation

Questa operazione funziona perfettamente per i domini più piccoli. In un'organizzazione di grandi dimensioni, tuttavia, è possibile suddividere l'operazione in due comandi: un comando per archiviare le informazioni sull'account utente in una variabile e un altro per visualizzare le informazioni necessarie. Ecco un esempio:

$x = Get-MgUser -All -Property DisplayName, UsageLocation
$x | Select DisplayName, UsageLocation

L'interpretazione di questo set di comandi di PowerShell è:

  1. Ottenere tutti gli utenti nella sottoscrizione corrente di Microsoft 365 e archiviare le informazioni in una variabile denominata $x ($x = Get-MgUser).
  2. Visualizzare il contenuto della variabile $x, ma includere solo il nome e la posizione per ogni utente ($x | Selezionare DisplayName, UsageLocation.

Microsoft 365 include funzionalità che è possibile configurare solo con PowerShell per Microsoft 365

L'interfaccia di amministrazione di Microsoft 365 ha lo scopo di fornire l'accesso a attività amministrative comuni e utili che si applicano alla maggior parte degli ambienti. In altre parole, l'interfaccia di amministrazione di Microsoft 365 è stata progettata in modo che l'amministratore tipico possa eseguire le attività di gestione più comuni. Tuttavia, alcune attività non possono essere eseguite nell'interfaccia di amministrazione.

Ad esempio, l'interfaccia di amministrazione di Skype for Business Online offre alcune opzioni per la creazione di inviti alle riunioni personalizzati:

Esempio di visualizzazione di inviti personalizzati a riunioni nell’interfaccia di amministrazione di Skype for Business online.

Con queste impostazioni, è possibile aggiungere un tocco di personalizzazione e professionalità alle convocazioni di riunioni. Tuttavia, le impostazioni di configurazione delle riunioni non si limitano a creare inviti alle riunioni personalizzati. Ad esempio, per impostazione predefinita le riunioni consentono:

  • A utenti anonimi di ottenere l'ingresso automatico a ogni riunione.

  • Ai partecipanti di registrare una riunione.

  • A tutti gli utenti dell'organizzazione di essere designati come relatori quando partecipano a riunione.

Queste impostazioni non sono disponibili nell'interfaccia di amministrazione di Skype for Business Online. È possibile controllarli da PowerShell per Microsoft 365. Ecco un comando che disabilita queste tre impostazioni:

Set-CsMeetingConfiguration -AdmitAnonymousUsersByDefault $False -AllowConferenceRecording $False -DesignateAsPresenter "None"

Nota

Per eseguire questo comando, è necessario installare il modulo PowerShell di Skype for Business Online.

L'interpretazione di questo comando di PowerShell è:

  1. Nelle impostazioni per le nuove riunioni di Skype for Business Online (Set-CsMeetingConfiguration) disabilitare la possibilità per gli utenti anonimi di accedere automaticamente alle riunioni (-AdmitAnonymousUsersByDefault $False).
  2. Disabilitare la possibilità per i partecipanti di registrare le riunioni (-AllowConferenceRecording $False).
  3. Non designare tutti gli utenti dell'organizzazione come relatori (-DesignateAsPresenter "None").

Per ripristinare queste impostazioni predefinite (abilitare le opzioni), eseguire questo comando:

Set-CsMeetingConfiguration -AdmitAnonymousUsersByDefault $True -AllowConferenceRecording $True -DesignateAsPresenter "Company"

Esistono anche altri scenari simili, motivo per cui gli amministratori devono sapere come eseguire i comandi di PowerShell per Microsoft 365.

PowerShell per Microsoft 365 è ideale per le operazioni in blocco

Le interfacce visive come l'interfaccia di amministrazione di Microsoft 365 sono particolarmente utili quando si dispone di una singola operazione da eseguire. Ad esempio, se è necessario disabilitare un account utente, è possibile usare l'interfaccia di amministrazione per individuare e deselezionare rapidamente una casella di controllo. Questa operazione può essere più semplice rispetto all'esecuzione di un'operazione simile in PowerShell.

Ma se è necessario modificare molti elementi o alcuni elementi selezionati all'interno di un ampio set di altri elementi, l'interfaccia di amministrazione di Microsoft 365 potrebbe non essere lo strumento migliore. Ad esempio, si supponga di dover modificare il prefisso in migliaia di numeri di telefono o rimuovere l'utente specifico Ken Myer da tutti i siti di SharePoint. Come si farebbe nell'interfaccia di amministrazione di Microsoft 365?

Per l'ultimo esempio, si supponga di avere diverse centinaia di siti di SharePoint e di non sapere di quali è membro Ken Meyer. È necessario iniziare dall'interfaccia di amministrazione di Microsoft 365 e quindi eseguire questa procedura per ogni sito:

  1. Selezionare l'URL del sito.

  2. Nella casella delle proprietà della raccolta siti selezionare il collegamento Indirizzo sito Web per aprire il sito.

  3. Nel sito selezionare Condividi.

  4. Nella finestra di dialogo Condividi selezionare il collegamento che mostra tutti gli utenti che dispongono delle autorizzazioni per il sito:

    Esempio di visualizzazione dei membri di un sito di SharePoint nell'interfaccia di amministrazione di SharePoint.

  5. Nella finestra di dialogo Condiviso con selezionare Avanzate.

  6. Scorrere verso il basso l'elenco degli utenti, trovare e selezionare Ken Myer (supponendo che disponga delle autorizzazioni per il sito) e quindi selezionare Rimuovi autorizzazioni utente.

Ciò richiederebbe molto tempo per diverse centinaia di siti.

L'alternativa consiste nell'eseguire il comando seguente in PowerShell per Microsoft 365 per rimuovere Ken Myer da tutti i siti:

Get-SPOSite | ForEach {Remove-SPOUser -Site $_.Url -LoginName "kenmyer@litwareinc.com"}

Nota

Questo comando richiede l'installazione del modulo PowerShell di SharePoint.

L'interpretazione di questo comando di PowerShell è: Ottenere tutti i siti di SharePoint nella sottoscrizione corrente di Microsoft 365 (Get-SPOSite) e per ogni sito rimuovere Ken Meyer dall'elenco di utenti che possono accederci (ForEach {Remove-SPOUser -Site $_. Url -LoginName "kenmyer@litwareinc.com"}).

Microsoft comunica a Microsoft 365 di rimuovere Ken Meyer da ogni sito, inclusi quelli a cui non ha accesso. I risultati mostreranno quindi errori per i siti a cui non ha accesso. È possibile usare una condizione aggiuntiva per questo comando per rimuovere Ken Meyer solo dai siti che lo hanno incluso nell'elenco di accesso. Ma gli errori restituiti non causano alcun danno ai siti stessi. L'esecuzione di questo comando su centinaia di siti potrebbe richiedere alcuni minuti, anziché ore di lavoro nell'interfaccia di amministrazione di Microsoft 365.

Ecco un altro esempio di operazione bulk. Usare questo comando per aggiungere Bonnie Kearney, un nuovo amministratore di SharePoint, a tutti i siti dell'organizzazione:

Get-SPOSite | ForEach {Add-SPOUser -Site $_.Url -LoginName "bkearney@litwareinc.com" -Group "Members"}

L'interpretazione di questo comando di PowerShell è: Ottenere tutti i siti di SharePoint nella sottoscrizione corrente di Microsoft 365 e per ogni sito consentire l'accesso a Bonnie Kearney aggiungendo il nome di accesso al gruppo Membri del sito (ForEach {Add-SPOUser -Site $_. URL -LoginName "bkearney@litwareinc.com" -Group "Members"}).

PowerShell per Microsoft 365 è ideale per filtrare i dati

L'interfaccia di amministrazione di Microsoft 365 offre diversi modi per filtrare i dati per individuare facilmente un subset di informazioni di destinazione. Ad esempio, Exchange facilita il filtro di qualsiasi proprietà relativa alla cassetta postale di un utente. Ad esempio, ecco l'elenco delle cassette postali per tutti gli utenti che vivono nella città di Bloomington:

Esempio di ricerca avanzata nell'interfaccia di amministrazione di Microsoft 365 per l'elenco delle cassette postali per tutti gli utenti che vivono nella città di Bloomington.

L'interfaccia di amministrazione di Exchange consente anche di combinare i criteri di filtro. Ad esempio, è possibile trovare le cassette postali per tutte le persone che vivono a Bloomington e lavorano nel reparto Finanze.

Esistono tuttavia limitazioni alle operazioni che è possibile eseguire nell'interfaccia di amministrazione di Exchange. Ad esempio, non è stato possibile trovare facilmente le cassette postali delle persone che vivono a Bloomington o San Diego o le cassette postali per tutte le persone che non vivono a Bloomington.

È possibile usare il comando di PowerShell seguente per Microsoft 365 per ottenere un elenco di cassette postali per tutte le persone che risiedono a Bloomington o San Diego:

Get-User | Where {$_.RecipientTypeDetails -eq "UserMailbox" -and ($_.City -eq "San Diego" -or $_.City -eq "Bloomington")} | Select DisplayName, City

Ecco un esempio dei risultati:

DisplayName                              City
-----------                              ----
Alex Darrow                              San Diego
Bonnie Kearney                           San Diego
Julian Isla                              Bloomington
Rob Young                                Bloomington

L'interpretazione di questo comando di PowerShell è: Ottenere tutti gli utenti dell'attuale sottoscrizione di Microsoft 365 che hanno una cassetta postale nella città di San Diego o Bloomington (dove {$_. RecipientTypeDetails -eq "UserMailbox" -and ($_. City -eq "San Diego" -or $_. City -eq "Bloomington")}), quindi visualizzare il nome e la città per ognuno (Selezionare DisplayName, City).

Ecco il comando per elencare tutte le cassette postali per le persone che vivono ovunque tranne Bloomington:

Get-User | Where {$_.RecipientTypeDetails -eq "UserMailbox" -and $_.City -ne "Bloomington"} | Select DisplayName, City

Ecco un esempio dei risultati:

DisplayName                               City
-----------                               ----
MOD Administrator                         Redmond
Alex Darrow                               San Diego
Allie Bellew                              Bellevue
Anne Wallace                              Louisville
Aziz Hassouneh                            Cairo
Belinda Newman                            Charlotte
Bonnie Kearney                            San Diego
David Longmuir                            Waukesha
Denis Dehenne                             Birmingham
Garret Vargas                             Seattle
Garth Fort                                Tulsa
Janet Schorr                              Bellevue

L'interpretazione di questo comando di PowerShell è: Ottenere tutti gli utenti dell'attuale sottoscrizione di Microsoft 365 che hanno una cassetta postale non situata nella città di Bloomington (dove {$_. RecipientTypeDetails -eq "UserMailbox" -and $_. City -ne "Bloomington"}), quindi visualizzare il nome e la città per ognuno.

Usare caratteri jolly

È anche possibile usare caratteri jolly nei filtri di PowerShell per trovare una corrispondenza con parte di un nome. Si supponga, ad esempio, di cercare un account utente. Tutto quello che si può ricordare è che il cognome dell'utente era Anderson o forse Henderson o Jorgenson.

È possibile tenere traccia di tale utente nell'interfaccia di amministrazione di Microsoft 365 usando lo strumento di ricerca ed eseguendo tre diverse ricerche:

  • Una per Anderson

  • Una per Henderson

  • Una per Jorgenson

Poiché tutti e tre questi nomi terminano con "figlio", è possibile indicare a PowerShell di visualizzare tutti gli utenti il cui nome termina con "figlio". Ecco il comando:

Get-User -Filter '{LastName -like "*son"}'

L'interpretazione di questo comando di PowerShell è: ottenere tutti gli utenti nella sottoscrizione corrente di Microsoft 365, ma usare un filtro che elenca solo gli utenti i cui cognome terminano con "son" (-Filter '{LastName -like "*son"}'). * indica qualsiasi set di caratteri, ovvero lettere nel cognome dell'utente.

PowerShell per Microsoft 365 semplifica la stampa o il salvataggio dei dati

L'interfaccia di amministrazione di Microsoft 365 consente di visualizzare gli elenchi di dati. Ecco un esempio dell'interfaccia di amministrazione di Skype for Business Online che mostra un elenco di utenti abilitati per Skype for Business Online:

Esempio di interfaccia di amministrazione di Skype for Business online che mostra un elenco di utenti abilitati a Skype for Business online.

Per salvare tali informazioni in un file, è necessario incollarle in un documento o in un foglio di lavoro di Microsoft Excel. Entrambi i casi potrebbero richiedere formattazione aggiuntiva. Inoltre, l'interfaccia di amministrazione di Microsoft 365 non offre un modo per stampare direttamente l'elenco visualizzato.

Fortunatamente, è possibile usare PowerShell non solo per visualizzare l'elenco, ma anche per salvarlo in un file che può essere facilmente importato in Excel. Di seguito è riportato un comando di esempio per salvare i dati utente di Skype for Business Online in un file con valori delimitati da virgole (CSV), che può quindi essere facilmente importato come tabella in un foglio di lavoro di Excel:

Get-CsOnlineUser | Select DisplayName, UserPrincipalName, UsageLocation | Export-Csv -Path "C:\Logs\SfBUsers.csv" -NoTypeInformation

Ecco un esempio dei risultati:

Esempio di tabella importata in un foglio di lavoro di Excel per i dati utente di Skype for Business Online salvati in un file di valori delimitati da virgole.

L'interpretazione di questo comando di PowerShell è: Ottenere tutti gli utenti di Skype for Business Online nell'attuale sottoscrizione di Microsoft 365 (Get-CsOnlineUser); ottenere solo il nome utente, l'UPN e il percorso (selezionare DisplayName, UserPrincipalName, UsageLocation); e quindi salvare tali informazioni in un file CSV denominato C:\Logs\SfBUsers.csv (Export-Csv -Path "C:\Logs\SfBUsers.csv" -NoTypeInformation).

È anche possibile usare le opzioni per salvare l'elenco come file XML o pagina HTML. Infatti, con altri comandi di PowerShell, è possibile salvarlo direttamente come file di Excel, con qualsiasi formattazione personalizzata desiderata.

È anche possibile inviare l'output di un comando di PowerShell che visualizza un elenco direttamente alla stampante predefinita in Windows. Ecco un comando di esempio:

Get-CsOnlineUser | Select DisplayName, UserPrincipalName, UsageLocation | Out-Printer

Di seguito, è riportato l'aspetto del documento stampato:

Esempio di documento stampato che è l'output di un comando di PowerShell inviato direttamente alla stampante predefinita in Windows.

L'interpretazione di questo comando di PowerShell è: Ottenere tutti gli utenti di Skype for Business Online nell'attuale sottoscrizione di Microsoft 365; ottenere solo il nome utente, l'UPN e la posizione; e quindi inviare tali informazioni alla stampante Windows predefinita (Out-Printer).

Il documento stampato ha la stessa formattazione semplice della visualizzazione nella finestra di comando di PowerShell. Per ottenere una copia cartacea, è sufficiente aggiungere | Out-Printer alla fine del comando.

PowerShell per Microsoft 365 consente di gestire i prodotti server

I componenti che costituiscono Microsoft 365 sono progettati per funzionare insieme. Si supponga, ad esempio, di aggiungere un nuovo utente a Microsoft 365 e di specificare tali informazioni, ad esempio il reparto e il numero di telefono dell'utente. Tali informazioni saranno quindi disponibili se si accede alle informazioni dell'utente in uno dei servizi di Microsoft 365: Skype for Business Online, Exchange o SharePoint.

Si tratta di informazioni generali che interessano la famiglia di prodotti. Le informazioni specifiche del prodotto, ad esempio le informazioni sulla cassetta postale di Exchange di un utente, non sono in genere disponibili nella suite. Ad esempio, le informazioni relative all'abilitazione o meno della cassetta postale di un utente sono disponibili solo nell'interfaccia di amministrazione di Exchange.

Si supponga di voler creare un report che mostra le seguenti informazioni per tutti gli utenti:

  • Nome visualizzato dell'utente

  • Indica se l'utente ha una licenza per Microsoft 365

  • L'abilitazione della cassetta postale di Exchange dell'utente.

  • L'abilitazione per Skype for Business online dell'utente

Non è possibile produrre facilmente un report di questo tipo nell'interfaccia di amministrazione di Microsoft 365. È invece necessario creare un documento separato per archiviare le informazioni, ad esempio un foglio di lavoro di Excel. Ottenere quindi tutti i nomi utente e le informazioni sulle licenze dall'interfaccia di amministrazione di Microsoft 365, ottenere le informazioni sulla cassetta postale dall'interfaccia di amministrazione di Exchange, ottenere informazioni su Skype for Business Online dall'interfaccia di amministrazione di Skype for Business Online e quindi combinare tali informazioni.

L'alternativa consiste nell'usare uno script di PowerShell per compilare il report.

Lo script di esempio seguente è più complicato dei comandi visualizzati finora in questo articolo. Tuttavia, mostra il potenziale dell'uso di PowerShell per creare visualizzazioni di informazioni difficili da ottenere in caso contrario. Ecco lo script per compilare e visualizzare l'elenco necessario:

Connect-MgGraph -Scopes "User.ReadBasic.All"
$x = Get-MgUser -All

foreach ($i in $x)
    {
      $y = Get-Mailbox -Identity $i.UserPrincipalName
      $i | Add-Member -MemberType NoteProperty -Name IsMailboxEnabled -Value $y.IsMailboxEnabled

      $y = Get-CsOnlineUser -Identity $i.UserPrincipalName
      $i | Add-Member -MemberType NoteProperty -Name EnabledForSfB -Value $y.Enabled
    }

$x | Select DisplayName, IsLicensed, IsMailboxEnabled, EnabledforSfB

Ecco un esempio dei risultati:

DisplayName             IsLicensed   IsMailboxEnabled   EnabledForSfB
-----------             ----------   ----------------   --------------
Bonnie Kearney          True         True               True
Fabrice Canel           True         True               True
Brian Johnson           False        True               False
Anne Wallace            True         True               True
Alex Darrow             True         True               True
David Longmuir          True         True               True
Katy Jordan             False        True               False
Molly Dempsey           False        True               False

L'interpretazione di questo script di PowerShell è:

  1. Ottenere tutti gli utenti nella sottoscrizione corrente di Microsoft 365 e archiviare le informazioni in una variabile denominata $x ($x = Get-MgUser).
  2. Avviare un ciclo che viene eseguito su tutti gli utenti nella variabile $x (foreach ($i in $x)).
  3. Definire una variabile denominata $y e archiviarle le informazioni sulla cassetta postale dell'utente ($y = Get-Mailbox -Identity $i.UserPrincipalName).
  4. Aggiungere una nuova proprietà alle informazioni utente denominate IsMailBoxEnabled. Impostarlo sul valore della proprietà IsMailBoxEnabled della cassetta postale dell'utente ($i | Add-Member -MemberType NoteProperty -Name IsMailboxEnabled -Value $y.IsMailboxEnabled).
  5. Definire una variabile denominata $y e archiviarle le informazioni di Skype for Business Online dell'utente ($y = Get-CsOnlineUser -Identity $i.UserPrincipalName).
  6. Aggiungere una nuova proprietà alle informazioni utente denominate EnabledForSfB. Impostarlo sul valore della proprietà Enabled delle informazioni di Skype for Business Online dell'utente ($i | Add-Member -MemberType NoteProperty -Name EnabledForSfB -Value $y.Enabled).
  7. Visualizzare l'elenco degli utenti, ma includere solo il nome, la licenza e le due nuove proprietà che indicano se la cassetta postale è abilitata e se è abilitata per Skype for Business Online ($x | Selezionare DisplayName, IsLicensed, IsMailboxEnabled, EnabledforSfB).

Vedere anche

Guida introduttiva a PowerShell per Microsoft 365

Gestire gli account utente, le licenze e i gruppi di Microsoft 365 con PowerShell

Usare Windows PowerShell per creare report in Microsoft 365