又来更新一篇博客,这回简单聊聊如何为Office 365的用户批量enable onedrive for business, 有的人可能会一脸懵逼,这玩意还需要enable?不是本身就已经自带了吗?其实确实是这样,Office 365的用户只要购买了符合条件的license,就可以享受到Onedrive for business 带来的存储空间。but,这个存储空间并不是开了账户就会自动生成的!这个存储空间生成的时间是用户点击了onedrive的图标开始,第一次点击onedrive的时候可能会发现会需要一段时间才能进入页面,其实后台就是在干这个事。


    有的人可能会比较迷茫这个对我来说有什么影响吗?不管他是什么时候生成的,我只要保证我能正常使用不就好了吗?Yes,对于用户来说确实是这样,but,对于IT管理员来说这个其实是有很大的影响的!


    比如说,如果我想做SharePoint 到SharePoint Online, 或者说从一个file share迁移到SharePoint Online,这种情况下,如果用户的onedrive for business在迁移时还没有生成的话,就会出现一些报错的问题,因为迁移的目标实际上是不存在的。


    为了解决这个问题,其实管理员可以通过脚本的方式提前为用户生成Onedrive的存储空间,这对于批量的迁移来说是一个很关键的前提!

    具体如何来操作,请看下边的分享,首先可以看到在portal上可以很明显看到用户的onedrive是不会自动生成的

    图像 001.png


 1.首先第一点,请安装PowerShell SharePoint Online Module   图像 002.png图像 003.png



2.安装完成后可以打开PowerShell验证下安装是否成功

SharePoint Online Module的名字比较长,可以import后然后get下是否可以获取到module里的命令

Get-Command -Module Microsoft.Online.SharePoint.PowerShell

图像 005.png


图像 006.png



3.除此之外还需要安装SharePoint Online Client Components SDK,否则有一些assembly是没办法成功load的

图像 007.png


图像 008.png


4.准备工作完成后,我们就可以通过脚本来enable onedrive了

首先看下如何运行脚本,最主要的其实就是两个参数,SPOAdminUrl,这个其实就是你的O365 ShareOnline管理中心的URL,还有一个是InputFilePath,这个其实是一个文件,里边会记录着需要enable用户的UPN

图像 011.png

图像 010.png


5.再次登陆Portal后就可以看到onedrive已经成功enable了

图像 012.png




最后分享一下脚本的源代码

<#
.EXAMPLE

.\BulkEnqueueOneDriveSite.ps1 -SPOAdminUrl https://contoso-admin.sharepoint.com -InputfilePath C:\users.txt 

.PARAMETER SPOAdminUrl
 The URL for the SharePoint Admin
center
 https://contoso-admin.sharepoint.com

.PARAMETER InputFilePath
 The path to the input file.
 The file must contain 1 to 200
users
 C:\users.txt

.NOTES
 This script needs to be run by a
SharePoint Online Tenant Administrator
 This script will prompt for the username
and password of the Tenant Administrator
#>

param
(
    #Must be SharePoint Administrator
URL
    [Parameter(Mandatory =
$true)]
    [ValidateNotNullOrEmpty()]
    [string] $SPOAdminUrl,
    
    [Parameter(Mandatory =
$true)]
    [ValidateNotNullOrEmpty()]
    [string]
$InputFilePath
)

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
| Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
|
Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")
| Out-Null

$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SPOAdminUrl)

$Users = Get-Content -Path $InputFilePath

if ($Users.Count -eq 0 -or $Users.Count -gt 200)
{
    Write-Host $("Unexpected user
count: [{0}]" -f $Users.Count) -ForegroundColor Red
    return 
}

$web = $ctx.Web
Write-Host "Please enter a Tenant Admin username" -ForegroundColor
Green
$username = Read-Host

Write-Host "Please enter your password" -ForegroundColor
Green
$password = Read-Host -AsSecureString

$ctx.Credentials = New-Object
Microsoft.SharePoint.Client.SharePointOnlineCredentials($username,$password
)
$ctx.Load($web)
$ctx.ExecuteQuery()

$loader =
[Microsoft.SharePoint.Client.UserProfiles.ProfileLoader]::GetProfileLoader($ctx)
$ctx.ExecuteQuery()

$loader.CreatePersonalSiteEnqueueBulk($Users)
$loader.Context.ExecuteQuery()

Write-Host "Script Completed"



另外再分享下需要用到的组件的下载地址

SharePoint Online Client Components SDK

https://www.microsoft.com/en-us/download/details.aspx?id=42038


SharePoint Online Module

https://www.microsoft.com/en-us/download/details.aspx?id=35588