Condividi tramite


Gestire utenti e gruppi di SharePoint con PowerShell

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

Se si è un amministratore di SharePoint che lavora con elenchi di grandi dimensioni di account utente o gruppi e vuole un modo più semplice per gestirli, è possibile usare PowerShell per Microsoft 365.

Prima di iniziare, le procedure descritte in questo articolo richiedono la connessione a SharePoint. Per istruzioni, vedere Connettersi a PowerShell di SharePoint

Ottenere un elenco di siti, gruppi e utenti

Prima di iniziare a gestire utenti e gruppi, è necessario ottenere elenchi di siti, gruppi e utenti. È quindi possibile usare queste informazioni per eseguire l'esempio in questo articolo.

Ottenere un elenco dei siti nel tenant con questo comando:

Get-SPOSite

Ottenere un elenco dei gruppi nel tenant con questo comando:

Get-SPOSite | ForEach {Get-SPOSiteGroup -Site $_.Url} | Format-Table

Ottenere un elenco degli utenti nel tenant con questo comando:

Get-SPOSite | ForEach {Get-SPOUser -Site $_.Url}

Aggiungere un utente al gruppo di amministratori del sito

Usare il Set-SPOUser cmdlet per aggiungere un utente all'elenco di amministratori del sito in una raccolta siti.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.com -IsSiteCollectionAdmin $true

Per usare questi comandi, sostituire tutti gli elementi all'interno delle virgolette, inclusi i < caratteri e > , con i nomi corretti.

Ad esempio, questo set di comandi aggiunge Opal Castillo (nome utente opalc) all'elenco degli amministratori del sito nella raccolta siti ContosoTest nella tenancy Contoso:

$tenant = "contoso"
$site = "contosotest"
$user = "opalc"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.com -IsSiteCollectionAdmin $true

È possibile copiare e incollare questi comandi nel Blocco note, modificare i valori delle variabili per $tenant, $site e $user in valori effettivi dell'ambiente e quindi incollarli nella finestra di SharePoint Management Shell per eseguirli.

Aggiungere un utente ad altri gruppi di raccolte siti

In questa attività viene usato il Add-SPOUser cmdlet per aggiungere un utente a un gruppo di SharePoint in una raccolta siti.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
$group = "<group name name, such as Auditors>"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site

Ad esempio, aggiungere Glen Rife (nome utente glenr) al gruppo Auditors nella raccolta siti ContosoTest nella tenancy contoso:

$tenant = "contoso"
$site = "contosotest"
$user = "glenr"
$group = "Auditors"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site

Create un gruppo di raccolte siti

Usare il New-SPOSiteGroup cmdlet per creare un nuovo gruppo di SharePoint e aggiungerlo a una raccolta siti.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$group = "<group name name, such as Auditors>"
$level = "<permission level, such as View Only>"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

Le proprietà del gruppo, ad esempio i livelli di autorizzazione, possono essere aggiornate in un secondo momento usando il Set-SPOSiteGroup cmdlet .

Ad esempio, aggiungere il gruppo Revisori con autorizzazioni Solo visualizzazione alla raccolta siti contosotest nella tenancy contoso:

$tenant = "contoso"
$site = "contosotest"
$group = "Auditors"
$level = "View Only"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

Rimuovere gli utenti da un gruppo

A volte è necessario rimuovere un utente da un sito o anche da tutti i siti. Forse il dipendente passa da una divisione all'altra o lascia l'azienda. È possibile eseguire questa operazione per un dipendente facilmente nell'interfaccia utente, ma questa operazione non viene eseguita facilmente quando è necessario spostare una divisione completa da un sito a un altro.

Tuttavia, usando sharepoint Management Shell e file CSV, questo è veloce e facile. In questa attività si usa Windows PowerShell per rimuovere un utente da un gruppo di sicurezza della raccolta siti. Quindi si usa un file CSV e si rimuove un sacco di utenti da siti diversi.

Verrà usato il cmdlet "Remove-SPOUser" per rimuovere un singolo utente di Microsoft 365 da un gruppo di raccolte siti in modo da poter visualizzare la sintassi dei comandi. Ecco come appare la sintassi:

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
$group = "<group name name, such as Auditors>"
Remove-SPOUser -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group

Ad esempio, rimuovere Bobby Overby dal gruppo Di revisori della raccolta siti nella raccolta siti contosotest nella tenancy contoso:

$tenant = "contoso"
$site = "contosotest"
$user = "bobbyo"
$group = "Auditors"
Remove-SPOUser -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group

Si supponga di voler rimuovere Bobby da tutti i gruppi in cui si è attualmente. Ecco come eseguire questa operazione:

$tenant = "contoso"
$user = "bobbyo"
Get-SPOSite | ForEach {Get-SPOSiteGroup –Site $_.Url} | ForEach {Remove-SPOUser -LoginName $user@$tenant.com -Site $_.Url}

Avviso

Questo è solo un esempio. Non è consigliabile eseguire questo comando a meno che non sia necessario rimuovere un utente da ogni gruppo, ad esempio se l'utente lascia l'azienda.

Automatizzare la gestione di elenchi di utenti e gruppi di grandi dimensioni

Per aggiungere un numero elevato di account ai siti di SharePoint e concedere loro le autorizzazioni, è possibile usare il interfaccia di amministrazione di Microsoft 365, i singoli comandi di PowerShell o PowerShell e un file CSV. Di queste opzioni, il file CSV è il modo più veloce per automatizzare questa attività.

Il processo di base consiste nel creare un file CSV con intestazioni (colonne) corrispondenti ai parametri necessari per lo script Windows PowerShell. È possibile creare facilmente un elenco di questo tipo in Excel e quindi esportarlo come file CSV. Si usa quindi uno script di Windows PowerShell per scorrere i record (righe) nel file CSV, aggiungendo gli utenti ai gruppi e ai gruppi ai siti.

Ad esempio, si creerà un file CSV per definire un gruppo di raccolte siti, gruppi e autorizzazioni. Verrà quindi creato un file CSV per popolare i gruppi con gli utenti. Infine, verrà creato ed eseguito uno script di Windows PowerShell che crea e popola i gruppi.

Il primo file CSV aggiunge uno o più gruppi a una o più raccolte siti e avrà questa struttura:

Intestazione:

Site,Group,PermissionLevels

Elemento:

https://tenant.sharepoint.com/sites/site,group,level

Ecco un file di esempio:

Site,Group,PermissionLevels
https://contoso.sharepoint.com/sites/contosotest,Contoso Project Leads,Full Control
https://contoso.sharepoint.com/sites/contosotest,Contoso Auditors,View Only
https://contoso.sharepoint.com/sites/contosotest,Contoso Designers,Design
https://contoso.sharepoint.com/sites/TeamSite01,XT1000 Team Leads,Full Control
https://contoso.sharepoint.com/sites/TeamSite01,XT1000 Advisors,Edit
https://contoso.sharepoint.com/sites/Blog01,Contoso Blog Designers,Design
https://contoso.sharepoint.com/sites/Blog01,Contoso Blog Editors,Edit
https://contoso.sharepoint.com/sites/Project01,Project Alpha Approvers,Full Control

Il secondo file CSV aggiunge uno o più utenti a uno o più gruppi e avrà questa struttura:

Intestazione:

Group,LoginName,Site

Elemento:

group,login,https://tenant.sharepoint.com/sites/site

Ecco un file di esempio:

Group,LoginName,Site
Contoso Project Leads,bobbyo@contoso.com,https://contoso.sharepoint.com/sites/contosotest
Contoso Auditors,allieb@contoso.com,https://contoso.sharepoint.com/sites/contosotest
Contoso Designers,bonniek@contoso.com,https://contoso.sharepoint.com/sites/contosotest
XT1000 Team Leads,dorenap@contoso.com,https://contoso.sharepoint.com/sites/TeamSite01
XT1000 Advisors,garthf@contoso.com,https://contoso.sharepoint.com/sites/TeamSite01
Contoso Blog Designers,janets@contoso.com,https://contoso.sharepoint.com/sites/Blog01
Contoso Blog Editors,opalc@contoso.com,https://contoso.sharepoint.com/sites/Blog01
Project Alpha Approvers,robinc@contoso.com,https://contoso.sharepoint.com/sites/Project01

Per il passaggio successivo, è necessario salvare i due file CSV nell'unità. Ecco alcuni comandi di esempio che usano sia file CSV che per aggiungere autorizzazioni e appartenenza a gruppi:

Import-Csv C:\O365Admin\GroupsAndPermissions.csv | ForEach {New-SPOSiteGroup -Group $_.Group -PermissionLevels $_.PermissionLevels -Site $_.Site}
Import-Csv C:\O365Admin\Users.csv | ForEach {Add-SPOUser -Group $_.Group –LoginName $_.LoginName -Site $_.Site}

Lo script importa il contenuto del file CSV e usa i valori nelle colonne per popolare i parametri dei comandi New-SPOSiteGroup e Add-SPOUser . Nell'esempio viene salvato il file nella cartella O365Admin nell'unità C, ma è possibile salvarlo ovunque si desideri.

A questo punto, rimuoveremo un gruppo di persone per diversi gruppi in siti diversi usando lo stesso file CSV. Ecco un comando di esempio:

Import-Csv C:\O365Admin\Users.csv | ForEach {Remove-SPOUser -LoginName $_.LoginName -Site $_.Site -Group $_.Group}

Generare report utente

È possibile ottenere un report per alcuni siti e visualizzare gli utenti per tali siti, il livello di autorizzazione e altre proprietà. Ecco come appare la sintassi:

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | select * | Format-table -Wrap -AutoSize | Out-File c\UsersReport.txt -Force -Width 360 -Append

In questo modo i dati per questi tre siti vengono acquisiti e scritti in un file di testo nell'unità locale. Il parametro –Append aggiunge nuovo contenuto a un file esistente.

Ad esempio, eseguire un report nei siti ContosoTest, TeamSite01 e Project01 per il tenant Contoso1:

$tenant = "contoso"
$site = "contosotest"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
$site = "TeamSite01"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site |Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
$site = "Project01"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

È stato necessario modificare solo la variabile $site . La variabile $tenant mantiene il valore in tutte e tre le esecuzioni del comando.

Tuttavia, cosa succede se si vuole fare questo per ogni sito? È possibile eseguire questa operazione senza dover digitare tutti i siti Web usando questo comando:

Get-SPOSite | ForEach {Get-SPOUser –Site $_.Url} | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

Questo report è abbastanza semplice ed è possibile aggiungere altro codice per creare report o report più specifici che includono informazioni più dettagliate. Ma questo dovrebbe dare un'idea di come usare SharePoint Management Shell per gestire gli utenti nell'ambiente SharePoint.

Vedere anche

Connettersi a SharePoint PowerShell

Gestire SharePoint con PowerShell

Gestire Microsoft 365 con PowerShell

Guida introduttiva a PowerShell per Microsoft 365