使用PowerShell 批量Enable OneDrive for business
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PowerShell 批量Enable OneDrive for business相关的知识,希望对你有一定的参考价值。
又来更新一篇博客,这回简单聊聊如何为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是不会自动生成的
1.首先第一点,请安装PowerShell SharePoint Online Module
2.安装完成后可以打开PowerShell验证下安装是否成功
SharePoint Online Module的名字比较长,可以import后然后get下是否可以获取到module里的命令
Get-Command -Module Microsoft.Online.SharePoint.PowerShell
3.除此之外还需要安装SharePoint Online Client Components SDK,否则有一些assembly是没办法成功load的
4.准备工作完成后,我们就可以通过脚本来enable onedrive了
首先看下如何运行脚本,最主要的其实就是两个参数,SPOAdminUrl,这个其实就是你的O365 ShareOnline管理中心的URL,还有一个是InputFilePath,这个其实是一个文件,里边会记录着需要enable用户的UPN
5.再次登陆Portal后就可以看到onedrive已经成功enable了
最后分享一下脚本的源代码
<# .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
以上是关于使用PowerShell 批量Enable OneDrive for business的主要内容,如果未能解决你的问题,请参考以下文章
Enable PowerShell script execution policy
Enable and Disable RDP NLA using PowerShell
Enable-PSRemoting 后无法创建远程 powershell 会话
[Windows Hyper-V-Server]Enable disable firewall rules under powershell / powershell下启用禁用防火墙规则