SharePoint Server permet depuis plusieurs versions de présenter les profiles d’utilisateurs, ceci basé sur un mix de données provenant de l’Active Directory et des données ajoutées par l’utilisateurs lui même.
Lors du passage à Office 365 et donc SharePoint OnLine, ce principe reste valable et on peut gérer un certain nombre de paramètres via l’application “SharePoint Admin Center”:
En revanche, comment se connecter à cette base de profiles depuis PowerShell ?
Pour cela, voici un exemple de code permettant de vous connecter sur la base de profiles et de lister les propriétés dans des fichiers Txt (uniquement à titre d’exemple):
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll"$site = 'https://YourTenant-admin.sharepoint.com/'
$mysite = 'https://YourTenant-my.sharepoint.com/'
$admin = 'AdminEmail@YourTenant.onmicrosoft.com'$password = Read-Host 'Enter Password' -AsSecureString
$context = New-Object Microsoft.SharePoint.Client.ClientContext($site)
$contextmy = New-Object Microsoft.SharePoint.Client.ClientContext($mysite)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($admin , $password)
$context.Credentials = $credentials
$contextmy.Credentials = $credentials
$users = $contextmy.Web.SiteUsers
$contextmy.Load($users)
$contextmy.ExecuteQuery()$people = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($context)
$personProperties = $people.GetMyProperties();$collection = @()
Foreach($user in $users)
{
$userprofile2 = $people.GetPropertiesFor($user.LoginName)
$context.Load($userprofile2)
$context.ExecuteQuery()If($userprofile2.Email -ne $null)
{
$userprofile2.UserProfileProperties | Out-File C:\TEMP\$($userprofile2.Email).txt -Encoding UTF8
}
}
Ce code n’a aucune intelligence est plutôt à caser dans la liste des codes PowerShell trash, en revanche, il peut servir de base pour autre chose de plus subtile selon votre besoin.
A vous de laisser s’exprimer votre fibre artistique.
Romelard Fabrice [MBA Risk Management]
Commentaires
Enregistrer un commentaire