使用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

原文地址:http://blog.51cto.com/mxyit/2069904

时间: 2024-08-30 02:27:12

使用PowerShell 批量Enable OneDrive for business的相关文章

Office 365:如何批量初始化OneDrive for Business?

很多公司在使用Office 365之后,根据企业内部的业务需求,需要将Office 365 订阅下的部分用户(Mailbox+OneDrive for Business+ SharePoint Site Collection)迁移到新订阅中进行管理,那么在Tenant to Tenant迁移时,管理员在新订阅中添加或者同步用户并授权之后,针对OneDrive for Business需要做的是如何批量初始化OneDrive for Business,而不是手动一个个登录账户再通过单击"OneDr

使用powershell批量添加Qt的文件(生成pro)

想使用QtCreator作为编辑器编辑keil或者IAR的工程,需要生成.pro文件,于是使用powershell批量处理. 源码如下: $incPath = dir -filter "*.h" -Recurse $headList="","" $pathList = "","" foreach($fpath in $incPath) { $headList+=$fpath.DirectoryName +

Powershell批量修改AD账户登陆到的计算机

Powershell 批量修改AD账户登陆到的计算机 上个月有个项目中碰到这样一个需求,讲述步骤前先描述下客户的实际情况:因安全考虑需要,域内的计算机之前都已经设置了指定登陆到的计算机,目前的项目是从Lotus邮件系统迁移到Exchange 2010,Lotus工作流迁移到泛微OA,域内账户输入账号和密码后不能登陆到Exchange系统.原因就是设置了账户的登陆到计算机属性,因为Exchange是新上的系统,没在指定范围内,所以需要添加Exchange服务器CAS01,CAS02,Mail,Ma

PowerShell批量配置Azure VM端点

我们可以通过PowerShell命令:Add-AzureEndpoint来向虚拟机添加端点. 请参考以下脚本,批量添加虚拟机端点: 备注:该例子针对一个虚拟机,添加了三个端口: 端口名称 协议 公用端口 私有端口 MyPort1 tcp 5001 5001 MyPort2 tcp 5002 5002 MyPort3 udp 5003 5003 该例子中,云服务名称与虚拟机名称均为:JohnsonLinux.如果需要添加更多的端口,那么可以按照相应格式,将端口配置添加到$newVmEndpoint

PowerShell批量启动/关闭Azure VM

备注:以下例子中出现的JohnsonWeb, JohnsonVm均是虚拟机的名称.在运行Powershell脚本之前,请导入您的订阅文件. 根据条件启动/关闭虚拟机,例如根据虚拟机名称,批量启动/关闭 启动虚拟机 $vmNames = New-Object System.Collections.ArrayList $vmNames.Add("JohnsonWeb") $vmNames.Add("JohnsonVm") foreach($vm in Get-Azure

PowerShell 批量导入/导出Active Directory

PowerShell 批量导入/导出Active Directory 最近因为公司要求,需要导入20个供应商.20个客户到AD域中,刚开始手动加入了2个供应商,2个客户.但是感觉费时费力.如果能够找到一个命令,批量导入AD该多好呀. 因为之前有师兄在AD方面留下的有文档,发现AD域用户导出的命令是这样的: csvde -f E:\20131015.csv -r "(objectClass=user)" -d "OU=XXX,DC=XXX,DC=com" -u 这里对

Powershell 批量替换文件

Powershell 批量替换文件 ##作者:Xiongpq ##时间:2015-06-10 18:50 ##版本:2.0 ##源文件目录 ##源文件目录的所有文件都会覆盖目标目录的同名文件,源文件目录可以在目标目录内,不会循环覆盖 $source = 'E:\Test_Target\Test_Source\' ##目标目录,支持多个目录 $target = 'E:\Test_Target\', 'D:\Test_Target' $sourceItem = Get-ChildItem -Path

PowerShell批量添加VM端点

我们可以通过PowerShell脚本批量添加VM端点.请您参考以下方案. 准备工作 – PowerShell连接China Azure 1. 从官网下载页面,下载并安装Windows Azure PowerShell: http://www.windowsazure.cn/zh-cn/downloads/#cmd-line-tools 2. 安装完毕后以管理员身份运行,右键点击PowerShell图标然后选择以管理员身份运行: 3. 执行命令Get-AzurePublishSettingsFil

windows azure使用powershell批量创建虚拟机

这里向大家介绍下如何使用powershell批量创建vm虚拟机,本博文中,我打算用powershell批量创建100台VM. 首先,从官网下载页面,下载并安装Windows Azure PowerShell:http://www.windowsazure.cn/zh-cn/downloads/#cmd-line-tools 安装完毕后以管理员身份运行,右键点击PowerShell图标然后选择以管理员身份运行执行命令Get-AzurePublishSettingsFile-Environment