Spring til indholdet

Opret OneDrive på forhånd med PowerShell

En OneDrive bliver først oprettet, når brugeren åbner den. Skal hjemmedrev flyttes derhen, skal den findes før. My Sites til alle brugere i SharePoint Server, som i 2014, og OneDrive på forhånd i Microsoft 365 med Request-SPOPersonalSite.

Opdateret PowerShellSharePoint 2013SharePoint Online 4 min. læsning

En OneDrive bliver oprettet første gang, brugeren går ind på den (Microsoft). Det er fint i det daglige, men ikke før en migrering: skal hjemmedrevene flyttes til brugernes OneDrive, skal de findes, før migreringen går i gang. Microsoft skriver det i vejledningen til fildrev, “Before you migrate your file share content, you must pre-provision your users in Microsoft 365” (Microsoft), og Migration Manager fejler med Destination site or web doesn’t exist, hvis en OneDrive ikke er oprettet (Microsoft).

I SharePoint Server hed det samme My Sites. I 2014 blev de oprettet på forhånd for alle brugere med et eksempelscript fra Microsofts TechNet Gallery.

SharePoint Server#

Scriptet går gennem alle brugerprofiler og opretter et personligt websted til dem, der ikke har et. Kernen, forkortet og ikke kørt:

 1Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
 2
 3$site    = Get-SPSite "http://<my-site-vaert>"
 4$context = Get-SPServiceContext $site
 5$upm     = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
 6
 7foreach ($up in $upm.GetEnumerator()) {
 8    $account = $up[[Microsoft.Office.Server.UserProfiles.PropertyConstants]::AccountName].Value
 9    if ($null -ne $up.PersonalSite) {
10        continue
11    }
12    try {
13        $up.CreatePersonalSite()
14        Write-Host "Oprettet: $account"
15    }
16    catch {
17        Write-Warning "Fejlede: $account ($($_.Exception.Message))"
18    }
19}
20
21$site.Dispose()
  • CreatePersonalSite() opretter webstedet med det samme, hvis brugeren ikke har et (Microsoft). Er der mange brugere, lægger CreatePersonalSiteEnque($false) oprettelsen i kø i stedet (Microsoft). Bemærk stavemåden: Enque.
  • My Site-værten skal være sat op: en administreret sti, en applikationspulje og en webstedssamling med skabelonen My Site Host (Microsoft).
  • Adressen i Get-SPSite bruges kun til at finde brugerprofiltjenesten. Originalen brugte http://intranet/mysites/profile; ethvert websted i en webapplikation, der er forbundet til tjenesten, kan bruges.

Rettet i forhold til 2014-udgaven#

  • $profile er en automatisk variabel i PowerShell (stien til profilscriptet), og PowerShell skelner ikke mellem store og små bogstaver. Originalen brugte den som løkkevariabel. Det virker, men overskriver $PROFILE i scriptet. Her hedder den $up.
  • Beskeden efter oprettelsen var “Personal Site Admin has assigned”, som ikke siger, hvad der skete. Nu skrives kontonavnet, og en fejl skrives med Microsofts egen fejlbesked.
  • Linket til TechNet Gallery virker ikke længere. Det sender videre til learn.microsoft.com og ender i en 404 (september 2026).

Microsoft 365#

I Microsoft 365 er det Request-SPOPersonalSite i SharePoint Online Management Shell (Microsoft). Brugerne står i en tekstfil med én e-mailadresse pr. linje:

1Connect-SPOService -Url "https://<tenant>-admin.sharepoint.com"
2
3$users = Get-Content -Path "C:\Brugere.txt"
4Request-SPOPersonalSite -UserEmails $users

Kommandoen tager højst 200 brugere ad gangen og stopper, hvis listen har en tom linje (Microsoft). Det er en anmodning, ikke en oprettelse. Selve OneDrive’en oprettes senere af et timerjob, og for mange brugere skriver Microsoft, at det kan tage flere dage. Har brugeren allerede en OneDrive, bliver anmodningen ignoreret uden fejl.

Til alle brugere med en licens i bunker af 199, som i Microsofts eget script:

 1Connect-MgGraph -Scopes "User.Read.All"
 2Connect-SPOService -Url "https://<tenant>-admin.sharepoint.com"
 3
 4$users = Get-MgUser -Filter 'assignedLicenses/$count ne 0' -ConsistencyLevel eventual -CountVariable antal -All -Select UserPrincipalName |
 5    Select-Object -ExpandProperty UserPrincipalName
 6
 7for ($i = 0; $i -lt $users.Count; $i += 199) {
 8    $batch = $users[$i..([Math]::Min($i + 198, $users.Count - 1))]
 9    Request-SPOPersonalSite -UserEmails $batch -NoWait
10    Start-Sleep -Milliseconds 655
11}

-NoWait venter ikke på status for hver bunke, hvilket Microsoft skriver kan gøre det langsommere. Filteret tager alle med en licens, ikke kun dem med en SharePoint-licens.

PnP PowerShell har det samme som Request-PnPPersonalSite -UserEmails (også højst 200) og New-PnPPersonalSite -Email (PnP).

Hvem har en OneDrive#

1Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'" |
2    Select-Object -ExpandProperty Url

Adressen er https://<tenant>-my.sharepoint.com/personal/<upn>, hvor punktum og @ i brugernavnet er blevet til understreger: jens.hansen@firma.dk bliver jens_hansen_firma_dk. Er adressen optaget, sætter SharePoint et tal eller en GUID på (Microsoft). Adressen kan altså ikke regnes ud på forhånd med sikkerhed; den skal slås op, når migreringen skal have sine destinationer.

Det der driller#

  • Brugeren skal kunne logge ind og have en SharePoint-licens. En bruger med blokeret login får ingen OneDrive. Microsoft foreslår at åbne for login med Update-MgUser -BlockCredential $false først. Den, der kører kommandoen, skal være SharePoint-administrator og selv have en SharePoint-licens (Microsoft).
  • Retten til at oprette en OneDrive er Create Personal Site i brugerprofilerne. Som standard har “Everyone except external users” den (Microsoft). Er den fjernet for en gruppe, virker forudoprettelsen heller ikke for dem. Ikke efterprøvet.
  • Multi-Geo. Request-SPOPersonalSite tager ikke højde for Multi-Geo.
  • Microsoft Graph. GET /users/{id}/drive opretter brugerens OneDrive, hvis brugeren har en licens, men kun med delegeret adgang, ikke som app (Microsoft).
  • Standardstørrelsen er 1 TB for de fleste abonnementer og ændres for nye OneDrives med Set-SPOTenant -OneDriveStorageQuota i MB (Microsoft).

Hvordan brugerne fra fildrevet findes i Entra ID, står i Brugere ved en migrering.

Alle noter