Azure Runbooks, PowerShell e SharePoint
Tradotto dall'originale in spagnolo. Leggi in spagnolo
Questo tutorial mostra come usare un Runbook di Azure Automation insieme a PowerShell per creare automaticamente una pagina complessa in SharePoint. Con questo processo potrai configurare una nuova pagina con un campo di tracking, aggiungere una web part personalizzata e gestire le immagini di intestazione, tutto tramite uno script.

Prima di iniziare, è importante tenere presenti i prerequisiti:
- Questo script usa una Managed Identity per l’autenticazione. Assicurati che l’account di Azure Automation abbia una Managed Identity assegnata e che disponga dei permessi necessari sul sito SharePoint.
Istruzioni per usare la Managed Identity con questo script:
- Verifica che l’account di Azure Automation abbia una Managed Identity abilitata.
- Assegna alla Managed Identity i permessi SharePoint necessari tramite il portale di Azure.
- Lo script userà la Managed Identity per autenticarsi su SharePoint senza dover salvare credenziali nello script.
Parametri
Questo blocco di codice raccoglie i parametri necessari per eseguire lo script. È importante fornire l’URL del sito SharePoint ($siteurl), il nome della pagina ($page_name) e il percorso relativo del sito ($relative_site).
Param
(
[Parameter (Mandatory = $true)]
[string] $siteurl,
[Parameter (Mandatory = $true)]
[string] $page_name,
[Parameter (Mandatory = $true)]
[string] $relative_site
)
Connessione a SharePoint
Qui si definisce la connessione a SharePoint Online usando l’identità gestita.
Connect-PnPOnline -Url $siteurl -ManagedIdentity
Variabili per la creazione della pagina e percorsi delle immagini
Si definiscono le variabili necessarie per creare la pagina e i percorsi delle immagini che verranno usate come intestazione.
$pageRelativeImage="SiteAssets/ZerogapBanner.jpg"
$source_url_header="/sites/ZerogapSite/SiteAssets/zerogap/ZerogapBanner.jpg"
Verificare se la pagina indicata esiste già
Questo codice verifica se la pagina che vogliamo creare esiste già nel sito SharePoint.
$FileExists = Get-PnPPage -identity $page_name -ErrorAction SilentlyContinue
Creazione e configurazione della pagina
Se la pagina non esiste, viene eseguita una serie di comandi per:
- Aggiungere un nuovo campo di tassonomia alla libreria SitePages.
- Aggiungere una nuova pagina con il nome fornito.
- Aggiungere una web part personalizzata alla pagina.
- Preparare l’immagine di intestazione e copiarla nella posizione desiderata.
- Disattivare i commenti della pagina.
- Aggiornare l’intestazione della pagina con la nuova immagine.
- Pubblicare la pagina e impostare il proprietario del contenuto.
If($FileExists)
{
Write-output "Nothing to do for this site:"
write-output $siteurl
}
Else {
Add-PnPTaxonomyField -List "SitePages" -DisplayName "Tracking" -InternalName "Archive" -TaxonomyItemId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -FieldOptions AddToAllContentTypes
Add-PnPPage -Name $page_name
$page_file=$page_name + ".aspx"
Add-PnPPageWebPart -Page $page_file -Component "Zerogap Tracking"
$PageHeaderImage = $relative_site + "/" + $pageRelativeImage
$target_url=$relative_site + "/SiteAssets"
$target_url=$target_url.replace('//','/')
$DocumentLibrary = Get-PnPList -Identity "SiteAssets"
if ($DocumentLibrary -eq $null) {
$Web = Get-PnPWeb
$Zerogap = $Web.Lists.EnsureSiteAssetsLibrary()
$Zerogap = Invoke-PnPQuery
}
Copy-PnPFile -SourceUrl $source_url_header -TargetUrl $target_url -Force
Set-PnPPage -Identity $page_file -CommentsEnabled:$false
$page=Get-PnPClientSidePage -Identity $page_file
$page.SetCustomPageHeader($PageHeaderImage)
$page.Save()
$Page.Publish()
Set-PnPPage -Identity $page_file -Publish
$values=@{"Editor"="admin@zerogap.uk"; "Author"="admin@zerogap.uk"}
$id = Get-PnPPage -Identity $page_name | Select -ExpandProperty PageId
$Zerogap = Set-PnPListItem -List "Site Pages" -Identity $id -Values $values -UpdateType UpdateOverwriteVersion
Set-PnPPage -Identity $page_file -Publish
}
Chiudere la sessione PnP Online
Infine, dopo aver eseguito le azioni necessarie, la sessione PnP Online viene chiusa.
Disconnect-PnPOnline
Seguendo questi passaggi potrai automatizzare la creazione di una pagina complessa in SharePoint usando un Runbook di Azure Automation. Ecco il codice completo, senza commenti e tradotto in spagnolo.
Codice completo
Param
(
[Parameter (Mandatory = $true)]
[string] $siteurl,
[Parameter (Mandatory = $true)]
[string] $page_name,
[Parameter (Mandatory = $true)]
[string] $relative_site
)
$tenant='zerogap.onmicrosoft.com'
$AdminName = "admin@Zerogap.uk"
Connect-PnPOnline -Url $siteurl -ManagedIdentity
$pageRelativeImage="SiteAssets/ZerogapBanner.jpg"
$source_url_header="/sites/ZerogapSite/SiteAssets/Zerogap/ZerogapBanner.jpg"
$FileExists = Get-PnPPage -identity $page_name -ErrorAction SilentlyContinue
If($FileExists)
{
Write-output "Nothing to do for this site:"
write-output $siteurl
}
Else {
Add-PnPTaxonomyField -List "SitePages" -DisplayName "Tracking" -InternalName "Archive" -TaxonomyItemId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -FieldOptions AddToAllContentTypes
Add-PnPPage -Name $page_name
$page_file=$page_name + ".aspx"
Add-PnPPageWebPart -Page $page_file -Component "Zerogap Tracking"
$PageHeaderImage = $relative_site + "/" + $pageRelativeImage
$target_url=$relative_site + "/SiteAssets"
$target_url=$target_url.replace('//','/')
$DocumentLibrary = Get-PnPList -Identity "SiteAssets"
if ($DocumentLibrary -eq $null) {
$Web = Get-PnPWeb
$Zerogap = $Web.Lists.EnsureSiteAssetsLibrary()
$Zerogap = Invoke-PnPQuery
}
Copy-PnPFile -SourceUrl $source_url_header -TargetUrl $target_url -Force
Set-PnPPage -Identity $page_file -CommentsEnabled:$false
$page=Get-PnPClientSidePage -Identity $page_file
$page.SetCustomPageHeader($PageHeaderImage)
$page.Save()
$Page.Publish()
Set-PnPPage -Identity $page_file -Publish
$values=@{"Editor"="admin@zerogap.uk"; "Author"="admin@zerogap.uk"}
$id = Get-PnPPage -Identity $page_name | Select -ExpandProperty PageId
$Zerogap = Set-PnPListItem -List "Site Pages" -Identity $id -Values $values -UpdateType UpdateOverwriteVersion
Set-PnPPage -Identity $page_file -Publish
}
Disconnect-PnPOnline
