Enregistrer un add-in SharePoint via PowerShell sur Office 365
Pour pouvoir déployer un add-in SharePoint sur votre tenant Office 365, il nous faut auparavant le déclarer afin de spécifier le ClientId et ClientSecret de celui-ci.
Pour cela, il existe une page accessible depuis l’URL suivante : http://votretenant.sharepoint.com/_layouts/15/appregnew.aspx (pour plus d’information sur l’enregistrement des add-ins : https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins).
On peut soit y générer un id et une clé secrète, soit les spécifier par nous-mêmes.
Seulement, lorsqu’on souhaite industrialiser et scripter ses déploiements, se rendre sur cette page et saisir les bonnes informations n’est pas toujours la bonne solution (erreurs de manipulation ou de recopie par exemple).
Voici donc comment effectuer cette déclaration via PowerShell. Avant tout, il vous faudra installer le module Microsoft Online Services pour PowerShell sur votre poste (http://go.microsoft.com/fwlink/p/?linkid=236297 en 64bits).
Dans l’invite de commande PowerShell, commencez donc par charger le module et vous connecter au tenant (il faut évidemment être admin de celui-ci) :
Import-Module MsOnline Connect-MsolService
On déclare ensuite les quelques variables qui vont nous servir pour l'enregistrement :
$appClientId = [guid]"EF756153-65B2-4E7E-8AB9-1C379308FC2B" # ClientId de l'addin $addinAddress = [uri]"https://monaddin.azurewebsites.net" # URL de l'addin $addinDisplayName = "Mon Addin" # Nom de l'addin $nbYears = 3 # Nombre d'années max avant renouvellement de la clé secrête, 3 ans maximum $appClientSecret = "1SMhN5gm9eMr438wkF5FCjaVAG/aSMaSNMXNede1gh4=" # La clé secrète
On vérifie ensuite que l'add-in n'existe pas déjà :
$addin = Get-MsolServicePrincipal -AppPrincipalId $appClientId -ea SilentlyContinue
Enfin, et tout se joue ici, on déclare alors un nouveau Service Principal (notre "identité applicative") à qui on va ajouter plusieurs clés :
if($addin-eq$null) { $addr = New-MsolServicePrincipalAddresses-Address $addinAddress $newPrincipal = New-MsolServicePrincipal-DisplayName $addinDisplayName -Type "Symmetric" -AppPrincipalId $appClientId -Addresses @($addr) -StartDate (get-Date) -EndDate ((get-date).addyears($nbYears)) -AccountEnabled $true -ServicePrincipalNames @($AppClientId.ToString(),"$($appClientId.ToString())/$($addinAddress.Authority)") -Value $appClientSecret New-MsolServicePrincipalCredential -AppPrincipalId $appClientId -Type Symmetric -Usage Sign -Value $appClientSecret -StartDate $newPrincipal.StartDate -EndDate $newPrincipal.EndDate New-MsolServicePrincipalCredential -AppPrincipalId $appClientId -Type Password -Usage Verify -Value $appClientSecret -StartDate $newPrincipal.StartDate -EndDate $newPrincipal.EndDate Write-Host"Addin declare"-f Yellow } else { Write-Host"Addin deja declare"-f Yellow }
Commentaires