Comandi PowerShell di SharePoint più utili
Nov 12, 2018
I comandi PowerShell di SharePoint più utili consentono agli amministratori di gestire siti, oggetti e permessi più efficacemente rispetto agli strumenti nativi. Cmdlet come Get-SPSite e Get-SPWeb forniscono informazioni dettagliate su siti e file, mentre New-SPSite, Remove-SPSite, e Set-SPUser semplificano la creazione, l'eliminazione e il controllo degli accessi ai siti. Automatizzando la generazione di report, la gestione dei permessi e gli audit, gli script PowerShell di SharePoint migliorano la produttività, riducono gli errori e rafforzano la sicurezza negli ambienti.
SharePoint Server è una piattaforma collaborativa basata sul web che si integra con Microsoft Office. Per configurare le impostazioni dei siti SharePoint, gli amministratori di sistema spesso utilizzano SharePoint Management Shell che viene installato con il prodotto SharePoint. L'esecuzione di SharePoint Management Shell richiama l'ambiente di runtime di Windows PowerShell ed esegue un file di script chiamato sharepoint.ps1, che carica lo snap-in di Windows PowerShell per SharePoint ed esegue alcuni comandi. Questi comandi non sono molto importanti; includono la scelta di C:UsersUsername come posizione principale per l'esecuzione dei comandi e l'esecuzione dell'ultima versione del PowerShell console.
Un'opzione migliore è utilizzare PowerShell ISE. Non solo include molti cmdlet creati appositamente per la gestione di SharePoint, ma offre anche codice evidenziato a colori, un motore di debug e un motore di ricerca per cmdlet.
Per caricare lo snap-in di SharePoint, dobbiamo eseguire il seguente comando:
Add-PSSnapin Microsoft.SharePoint.PowerShell
Dopo ciò, è prudente aggiornare l'assistenza di PowerShell per ottenere le ultime informazioni sui cmdlet di Microsoft SharePoint PowerShell:
Update-Help
Allora, quali cmdlet sono disponibili nel componente aggiuntivo di SharePoint? Ecco il comando che li elencherà tutti per te:
Get-Command -Module "Microsoft.SharePoint.PowerShell"
Ora diamo un'occhiata più da vicino ai cmdlet SharePoint più utili.
Contenuti correlati selezionati:
Ottenere informazioni sul sito SharePoint
Get-SPSite cmdlet è il principale cmdlet per ottenere informazioni sulle collezioni di siti SharePoint. Elenca gli URL dei tuoi siti SharePoint e i loro livelli di compatibilità (versioni di SharePoint).
Utilizzando il parametro Select-Object con questo cmdlet, possiamo ottenere proprietà specifiche riguardo a un sito, come il proprietario del sito, l'utilizzo dello spazio di archiviazione, il livello massimo di quota e la data dell'ultima modifica del contenuto:
Get-SPSite "http://sharepoint/sites/ent" | Select-Object url, owner, @{Expression={$_.Usage.Storage}}, @{Expression={$_.Audit.AuditFlags}}, readonly, LastContentModifiedDate, @{Express={$_.QuotaStorageMaximumLevel}}
Inoltre, possiamo esportare informazioni su tutti i siti nella nostra SharePoint farm in un file csv:
Get-SPWebApplication http://sharepoint/ | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, URL, ID, ParentWebID | Export-CSV C:rootsharepointinventory.csv -NoTypeInformation
Possiamo anche utilizzare il cmdlet Get-SPSite per creare uno script di PowerShell di SharePoint che elenchi tutti i gruppi e i loro membri per un determinato sito SharePoint:
$site = Get-SPSite http://sharepoint/sites/ent/
$groups = $site.RootWeb.sitegroups
foreach ($grp in $groups) {"Group: " + $grp.name; foreach ($user in $grp.users) {" User: " + $user.name} }
$site.Dispose()
Se hai bisogno di un rapporto completo dei permessi per un sito SharePoint, esegui il seguente codice, specificando l'URL del sito SharePoint ($SPSiteURL) e il percorso per esportare i dati in un file csv ($ExportFile) :
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$SPSiteUrl = "http://sharepoint/sites/ent"
$SPSite = New-Object Microsoft.SharePoint.SPSite($SPSiteUrl);
$ExportFile = "C:rootPermissions.csv"
"Web Title,Web URL,List Title,User or Group,Role,Inherited" | out-file $ExportFile
foreach ($WebPath in $SPSite.AllWebs)
{
if ($WebPath.HasUniqueRoleAssignments)
{
$SPRoles = $WebPath.RoleAssignments;
foreach ($SPRole in $SPRoles)
{
foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
{
$WebPath.Title + "," + $WebPath.Url + "," + "N/A" + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name + "," + $WebPath.HasUniqueRoleAssignments | out-file $ExportFile -append
}
}
}
foreach ($List in $WebPath.Lists)
{
if ($List.HasUniqueRoleAssignments)
{
$SPRoles = $List.RoleAssignments;
foreach ($SPRole in $SPRoles)
{
foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
{
$WebPath.Title + "," + $WebPath.Url + "," + $List.Title + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name | out-file $ExportFile -append
}
}
}
}
}
$SPSite.Dispose();
Per trovare un certo file su un sito SharePoint, dobbiamo usare il cmdlet Get-SPWeb. Ecco uno script che cerca un file il cui nome contiene la parola “readme” nel sito “http://sharepoint/sites/ent”:
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_.Name -like "*readme*" } |
Select Name, {$_.File.Length}, url
Ora creiamo un report che mostrerà tutti i file creati da un determinato utente. Questo script può essere utile, ad esempio, quando un dipendente lascia l'azienda e devi trasferire i suoi dati ad altre persone.
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_["Created By"] -like "*system*" } |
Select Name, url, {$_["Created By"]}
Il nostro ultimo script che utilizza il cmdlet Get-SPWeb riporta tutti i file con un'estensione specificata:
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_.Name -Like "*.rtf" } |
Select Name,
@{Name="URL";
Expression={$_.ParentList.ParentWeb.Url + "/" + $_.Url}}
Utilizzo di PowerShell per gestire siti e oggetti SharePoint
I nuovi siti SharePoint vengono tipicamente creati utilizzando un modello. Per ottenere un elenco di tutti i modelli di sito, eseguire il cmdlet Get-SPWebTemplate senza parametri.
Utilizziamo il cmdlet Get-SPWebTemplate insieme al cmdlet New-SPSite per creare un nuovo sito SharePoint basato su un modello. Ecco un esempio di script per la creazione di un sito utilizzando il modello “Team Site” (STS#0):
$template = Get-SPWebTemplate "STS#0"
New-SPSite -Url "http://sharepoint/sites/Netwrixteamsite" -OwnerAlias "enterpriset.simpson" -Template $template
Per eliminare un sito, utilizziamo il cmdlet Remove-SPSite:
Remove-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -GradualDelete
A volte, potresti dover cambiare l'amministratore della raccolta siti. Esegui lo script seguente per aggiungere i diritti di amministratore all'utente specificato:
Set-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -SecondaryOwnerAlias " i:0#.w|enterprisei.scur"
Ora, vediamo come gestire i permessi per le nostre raccolte di siti. Prima di tutto, aggiungiamo determinati diritti di accesso a un particolare account utente di Active Directory. In questo caso, all'utente “enterpriset.simpson” verranno concessi i diritti di “Contributor” per il sito “http://sharepoint/sites/ent”. Nota che prima di un nome account utente regolare come “enterpriset.simpson”, devi usare il prefisso “i:0#.w|”. Altrimenti, l'esecuzione fallirà e lo script genererà un errore.
Set-SPUser -Identity "i:0#.w|enterpriset.simpson" -Web http://sharepoint/sites/ent -AddPermissionLevel "Contributor"
Per aggiungere permessi a un certo gruppo di AD security, utilizza lo stesso script ma digita il nome del gruppo invece del nome dell'account utente.
Per aggiungere un utente a un gruppo, utilizza questo comando:
Set-SPUser -Identity "i:0#.w|enterprisej.carter" -Web http://sharepoint/sites/ent -Group "Enterprise Owners"
Conclusione
Come puoi vedere, gestire e creare report sui siti SharePoint utilizzando gli script di SharePoint PowerShell non è così difficile come potrebbe sembrare inizialmente. Infatti, in alcuni casi, è molto più veloce eseguire uno script piuttosto che generare un report dal registro di controllo dell'amministratore.
Per mantenere il tuo ambiente Microsoft SharePoint sicuro e altamente disponibile, è necessario anche tracciare attentamente le modifiche. Netwrix Auditor for SharePoint può generare facilmente report sulle modifiche di SharePoint, offrendoti una visibilità completa su chi ha modificato cosa, quando e in quale farm di SharePoint. Puoi anche ricevere notifiche automatiche riguardo le modifiche critiche. Inoltre, Netwrix Auditor for SharePoint ti fornirà tutte le informazioni sulle attuali autorizzazioni e su come sono state concesse, oltre a mostrare qualsiasi ereditarietà interrotta nel tuo ambiente SharePoint.
Condividi su
Scopri di più
Informazioni sull'autore
Jeff Melnick
Direttore dell'Ingegneria dei Sistemi
Jeff è un ex Direttore dell'Ingegneria delle Soluzioni Globali presso Netwrix. È un blogger di Netwrix da lungo tempo, nonché relatore e presentatore. Nel blog di Netwrix, Jeff condivide lifehack, consigli e trucchi che possono migliorare notevolmente la tua esperienza di amministrazione del sistema.
Scopri di più su questo argomento
Powershell Elimina il file se esiste
PowerShell Write to File: "Out-File" e Tecniche di Output del File
Come creare nuovi utenti di Active Directory con PowerShell
Come eseguire uno script PowerShell
Cos'è PowerShell? Una guida completa alle sue funzionalità e utilizzi