Homefolder Profielen naar OneDrive

De moderne (digitale) werkplek is hot, er wordt veel over gesproken, geschreven en gediscussieerd. Waar bestaat zo’n “werkplek” eigenlijk uit, welke toegevoegde en functionele waarde heeft het voor je gebruikers, hoe pak je een implementatie aan en meer.

OneDrive, bekend bij de meeste van jullie, maakt in veel gevallen een (belangrijk) onderdeel uit van deze nieuwe digitale werkplek. In dit artikel wil ik je helpen hoe je gebruiker profielen & homefolders kunt migreren naar OneDrive.

Online zijn een diverse artikelen te vinden over hoe je kunt migreren naar OneDrive, echter is deze informatie erg gefragmenteerd. Over het algemeen wordt er gebruik gemaakt van 3rd party tooling om migraties (naar OneDrive en andere  online opslagdiensten) te automatiseren door middel van scripting. De tool waar we vandaag gebruik van gaan maken heet “ShareGate”

Onderstaand neem ik de de migratiestappen puntsgewijs met je door. Voor het gemak ga ik er van uit dat je ShareGate als hebt geïnstalleerd en geconfigureerd.

  1. Inventariseren is belangrijk. Wil je folders uitsluiten? Vanuit welke bronnen migreer je, zijn het er meerdere – profielen en homefolders bijvoorbeeld. Maak een duidelijk overzicht zodat je goed in beeld hebt waar welke data te vinden is, om hoeveel data het gaat (in GB’s) en waar het heen gemigreerd moet worden.
  2. Voor je kunt migreren moeten er een licenties zijn toegewezen aan je gebruikers. Het is niet zoals met Office365 Exchange Online dat je al kunt beginnen met synchroniseren en dan later de licenties kunt toewijzen.
  3. Als je een licentie hebt toegewezen aan een gebruiker wordt de OneDrive niet automatisch aangemaakt zoals in Exchange Online. De gebruiker dient eerst in te loggen om de OneDrive aan te maken, het zogenaamde “provisionen”. Dit gebeurt geautomatiseerd op de achtergrond. Dit kun je uiteraard ook in bulk doen gebruikmakend van Powershell. Gebruik hiervoor het volgende Script:

Import-Module "Microsoft.Online.Sharepoint.PowerShell" -Force
$credential = Get-credential
Connect-SPOService -url https://tenantnaam-admin.sharepoint.com -Credential $credential
$InputFilePath = "C:\Temp\OneDrivePreProvision.csv"
$CsvFile = Import-Csv $InputFilePath
ForEach ($line in $CsvFile)
{
Request-SPOPersonalSite -UserEmails $line.User -NoWait
Write-Host Personal site provisioned for $line.User -ForegroundColor Yellow
}

*Format CSV:

User
user1@domain.com
user2@domain.com

*Dit script roept een zogenaamd pre-provisioning request aan. Het request wordt in een queue geplaatst. Het is dus niet zo dat het uitvoeren van dit script voldoende is. Nadat het script zijn werk heeft gedaan wordt het pre-provisioning request daadwerkelijk uitgevoerd. Afhankelijk van het aantal gebruikers kan hier dat enige tijd in beslag nemen.

  1. Je hebt schrijfrechten nodig op alle OneDrive folders binnen de tenant om de data te kunnen migreren. *Tip – Maak hier een generiek account voor aan zodat gebruikers geen argwaan krijgen als ze zien dat er “iemand” rechten heeft op hun OneDrive (zelf heb ik hier niemand over gehoord gedurende een migratie van 1000+ gebruikers maar je weet het nooit.)

Via een rapportagefunctie binnen ShareGate kun je alle OneDrive folders binnen je tenant opvragen en rechten toekennen. Het is wel belangrijk om eerst stap 2 en 3 af te ronden anders werkt dit niet.

  1. Gebruik een CSV om de homefolder/profile locatie en de OneDrive URL in het script te krijgen, mede om ervoor te zorgen dat alles op de juiste locatie terecht komt. Bijvoorbeeld:

DIRECTORY;ONEDRIVEURL
Y:\USERNAME\PROFILE;https://tenant-my.sharepoint.com/personal/USERNAME_tenant_nl/
Y:\USERNAME\HOMEFOLDER;https://tenant-my.sharepoint.com/personal/USERNAME_tenant_nl/

Een aantal tips om je CSV samen te stellen, gebruik deze PowerShell functie om eenvoudig je homefolders/profiles te inventariseren en in een CSV te krijgen:

Function Get-ChildItemToDepth {

                               Param(

                                               [String]$Path = $PWD,

                                              [String]$Filter = "*",

                                              [Byte]$ToDepth = 255,

                                              [Byte]$CurrentDepth = 0,

                                              [Switch]$DebugMode

                                               )

 

                               $CurrentDepth++

                                               If ($DebugMode) {

                              $DebugPreference = "Continue"

                                }

 

                               Get-ChildItem $Path | %{

                               $_ | ?{ $_.Name -Like $Filter }

 

                              If ($_.PsIsContainer) {

                              If ($CurrentDepth -le $ToDepth) {

 

                              # Callback to this function

Get-ChildItemToDepth -Path $_.FullName -Filter $Filter ` -ToDepth $ToDepth -CurrentDepth $CurrentDepth

                              }

                              Else {

                                              Write-Debug $("Skipping GCI for Folder: $($_.FullName) " + `

                                             "(Why: Current depth $CurrentDepth vs limit depth $ToDepth)")

                              }

                               }

               }

}

 

Export alle UPN’s naar een Excel bestand en voer vervolgens eerst het volgende uit:

Voorbeeld user: username@domein.nl

Vervang @domein.nl door _domein_nl/ zodat je het format username_domein_nl/ voor iedere gebruiker krijgt.

*Het voorbeeld gebruikt een .nl domein, dit kan natuurlijk ook .com of iets anders zijn.

Voeg daarna ‘https://tenant-my.sharepoint.com/personal/’ toe voor ‘username_domein_nl/    zodat je https://tenant-my.sharepoint.com/personal/username_domein_nl/ krijgt.

Voeg daarna de Excel files samen zodat je dit format hebt:

DIRECTORY;ONEDRIVEURL
Y:\USERNAME\PROFILE;https://tenant-my.sharepoint.com/personal/USERNAME_tenant_nl/

  1. Als laatste stap voer je het script uit zodat alles daadwerkelijk wordt geüpload naar OneDrive.
##### ############
#Import ShareGate module
Import-Module Sharegate
#Exclude source folders
$ExcludeFolders = "examplefolder","examplefolder"
#Set CopySettings Incremental
$copysettings = New-CopySettings -OnContentItemExists IncrementalUpdate
#Example CSV file with columns titled DIRECTORY and ONEDRIVEURL:
$csvFile = "C:\temp\example.csv"
#load the CSV file into a table
$table = Import-Csv $csvFile -Delimiter ";"
#Get credentials
$cred = Get-Credential
#Cycle through each row
foreach ($row in $table)
{
#connect to the destination OneDrive URL
$dstSite = Connect-Site -Url $row.ONEDRIVEURL -UserName $cred.UserName -Password $cred.Password
#select destination document library, named Documents by default in OneDrive, this is different for each language, double check this.
$dstList = Get-List -Name Documenten -Site $dstSite
#Get list for profile folder and exclude folders
foreach ($SourceFolder in $row.DIRECTORY)
    {
    $folders = Get-ChildItem -Path $SourceFolder -Exclude $ExcludeFolders
    }
#Import folders
 foreach ($folder in $folders)
 {
 $uriFolder = [System.Uri]$folder.FullName
 Import-Document -SourceFilePath $uriFolder -DestinationList $dstList -InsaneMode -CopySettings $copysettings
 Write-Host Uploaded Files for $row.Directory -ForegroundColor Yellow
 }
 }


EXTRA Podcast: Microsoft Experts Live 2019

Op donderdag 6 juni stond Microsoft Experts Live 2019 op het programma.
Dit interessante community evenement hebben Sander en Martijn bezocht en uiteraard was de podcast microfoon mee.

We hebben gezamenlijk een aantal zeer interessante sessies gezien en aansluitend hebben we de kans gekregen om deze mensen een aantal (kritische) vragen te stellen.

Experts Live is een internationaal Microsoft community platform waarbij kennis delen centraal staat.

Elk jaar organiseert Experts Live Netherlands een grootschalig eendaags event waar meer dan 1200+ IT Pro’s en Developers kennis op gaan doen van Microsoft technologie. Nationale en internationale community experts praten bezoekers in één dag volledig bij over laatste Microsoft technologieën.

Luister naar deze leerzame en 2e extra podcast!


Podcast aflevering 4 - Informatie beveiliging en privacy in de cloud

“Security, bescherming van persoonsgegevens, AVG, staat mijn data wel veilig in de cloud”

Dit lijken vrij standaard vragen en termen die je met regelmaat wel hebt gehoord. Maar hoe zit het met Informatie beveiliging en bescherming van de data. Waar kun jij samen met je klant helpen om dit op orde te krijgen? Waar moet jij zelf als consultant aan denken?

Een aantal vragen die wij voor je gesteld hebben aan Jaap Ruijgrok (Security Consultant - Avensus) en Gerhard Mars (Audit Manager - AuditConnect)

Nieuwsgierig? Just Listen and Come and Get IT!


Podcast aflevering 3 - Fysiek kantoor

Ditmaal hebben we geen gast in deze aflevering maar hebben we een discussie met ons drieën.
We delen in dit gesprek onze ideeën over het gebruik van een fysiek kantoor als werkplek.
Hebben wij als IT-ers nog een fysiek kantoor nodig om te werken, overleggen of meetings te houden?

Hoe de Cloud helpt met keuzes maken in hoe wij ons werk organiseren is daarbij een centraal thema.

Luister nu naar onze ideeën en meningen.