MySites en Onedrive on-prem voor alle gebruikers aanmaken

Als een gebruiker voor de eerste keer naar zijn persoonlijke site (MySite) gaat in SharePoint wordt er een timerjob gestart die in de Content Database een nieuwe site aanmaakt inclusief de Onedrive. De gebruiker krijgt dan een scherm te zijn ‘Welkom bij OneDrive voor Bedrijven’ Een moment geduld, alstublieft. Alles wordt voorbereid…’

Dit kan afhankelijk van de omgeving een aantal minuten tot vele minuten duren. Daarom kan je met het volgende script alle sites voor de gebruikers in 1x aanmaken.

Het aanmaken van een MySite voor een grote groep gebruikers kan een intensief proces zijn voer dit daarom uit buiten kantoortijden.

Dit script is getest op SharePoint 2016 met de januari update 2016, maar werkt ook op SharePoint 2013.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Function New-OSCPersonlSite
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory = $True,Position=0)]
[String]$SiteURL
)
#Add "Microsoft.SharePoint.PowerShell" Snapin
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
#Load "Microsoft.Office.Server" Assembly
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") | Out-Null
#Get SharePoint site
$Site = Get-SPSite -Identity $SiteURL
#Get service context
$context = Get-SPServiceContext -Site $site
$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$AllProfiles = $upm.GetEnumerator()
#Create personal site for each user
foreach($profile in $AllProfiles)
{
$AccountName = $profile[[Microsoft.Office.Server.UserProfiles.PropertyConstants]::AccountName].Value
Try
{
if($profile.PersonalSite -eq $Null)
{
write-host "Creating personel site for $AccountName"
$profile.CreatePersonalSite()
write-host "Personal Site Admin has assigned"
}
else
{
Write-Warning "$AccountName already has personel site"
}
}
Catch
{
Write-Error "Failed to create personal site for '$AccountName'"
}
}
$Site.Dispose();
}
New-OSCPersonlSite -SiteURL "https://my.MYSITE.com"