使用 Office 365 PowerShell 管理用户帐户和许可证(六)
使用 Office 365 PowerShell 禁止访问服务
上一次修改主题:2016-12-21
解释如何使用 Office 365 PowerShell 来添加或移除您组织中的用户对 Office 365 服务的访问权限。
当向 Office 365 帐户分配许可计划中的许可证时,用户就可以使用该许可证提供的 Office 365 服务。但是,您可以控制用户可以访问的 Office 365 服务。例如,即使许可证允许访问 SharePoint Online,您也可以禁用对它的访问。事实上,您可以使用 Office 365 PowerShell 禁止访问以下任何数量的相关服务:
单个帐户。
一组帐户。
组织中的所有帐户。
目录:
简版(说明不含解释)
长版(说明附有详细解释)
另请参阅
开始之前
本主题中的步骤需要您连接到 Office 365 PowerShell。有关说明,请参阅连接到 Office 365 PowerShell。
您可以使用 Get-MsolAccountSku cmdlet 查看可用的许可计划以及这些计划中提供的 Office 365 服务。有关详细信息,请参阅使用 Office 365 PowerShell 查看许可证和服务。
若要查看本主题中相关步骤的前后结果,请参阅查看服务的许可信息。
PowerShell 脚本可自动执行本主题中描述的过程。具体来说,此脚本允许您查看和禁用 Office 365 组织中的服务,包括 Sway。有关详细信息,请参阅使用 Office 365 PowerShell 禁止访问 Sway。
如果您使用 Get-MsolUser cmdlet 而无需使用 All 参数,仅可返回前 500 个帐户。
简版(说明不含解释)
此部分介绍的步骤未经任何渲染或过多解释。如果您有任何疑问或想了解更多信息,可以阅读本主题的其余部分。
若要对用户禁用单个许可计划中的 Office 365 服务,请执行以下步骤:
通过使用以下语法来确定许可计划中不需要的服务:
$LO = New-MsolLicenseOptions -AccountSkuId <AccountSkuId> -DisabledPlans "<UndesirableService1>", "<UndesirableService2>"...
本示例创建 LicenseOptions 对象,该对象可以禁用名为
litwareinc:ENTERPRISEPACK
(Office 365 企业版 E3) 的许可计划中提供的 Office Online 和 SharePoint Online 服务。$LO = New-MsolLicenseOptions -AccountSkuId "litwareinc:ENTERPRISEPACK" -DisabledPlans "SHAREPOINTWAC", "SHAREPOINTENTERPRISE"
将步骤 1 中的 LicenseOptions 对象用于一个或多个用户。
若要创建一个已禁用服务的新帐户,请使用以下语法:
New-MsolUser -UserPrincipalName <Account> -DisplayName <DisplayName> -FirstName <FirstName> -LastName <LastName> -LicenseAssignment <AccountSkuId> -LicenseOptions $LO -UsageLocation <CountryCode>
本示例为 Allie Bellew 创建一个新帐户,用来分配许可证和禁用步骤 1 中所述的服务。
New-MsolUser -UserPrincipalName allieb@litwareinc.com -DisplayName "Allie Bellew" -FirstName Allie -LastName Bellew -LicenseAssignment litwareinc:ENTERPRISEPACK -LicenseOptions $LO -UsageLocation US
有关在 Office 365 PowerShell 中创建用户帐户的详细信息,请参阅使用 Office 365 PowerShell 创建用户帐户。
若要禁用现有授权用户的服务,请使用下面的语法:
Set-MsolUserLicense -UserPrincipalName <Account> -LicenseOptions $LO
本示例对用户 BelindaN@litwareinc.com 禁用服务。
Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -LicenseOptions $LO
若要对所有现有的授权用户禁用步骤 1 中所述的服务,请运行以下命令:
$AllLicensed = Get-MsolUser -All | where {$_.isLicensed -eq $true}; $AllLicensed | foreach {Set-MsolUserLicense -LicenseOptions $LO}
若要对一组现有用户禁用服务,请使用下列两种方法之一来确定用户:
基于现有帐户属性筛选帐户 若要执行此操作,请使用以下语法:
$x = Get-MsolUser -All <FilterableAttributes>; $x | foreach {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -LicenseOptions $LO}
本示例对美国销售部门的用户禁用服务。
$USSales = Get-MsolUser -All -Department "Sales" -UsageLocation "US"; $USSales | foreach {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -LicenseOptions $LO}
使用特定帐户列表 若要完成此操作,请执行以下步骤:
创建一个文本文件,在它的每一行上包含一个帐户,如下所示:
akol@contoso.com tjohnston@contoso.com kakers@contoso.com
在此示例中,该文本文件是 C:\My Documents\Accounts.txt。
运行以下命令:
Get-Content "C:\My Documents\Accounts.txt" | foreach {Set-MsolUserLicense -UserPrincipalName $_ -LicenseOptions $LO}
若要对用户禁用所有可用许可计划中的 Office 365 服务,请执行以下步骤:
将此脚本复制并粘贴到记事本。
$AllLicensingPlans = Get-MsolAccountSku for($i = 0; $i -lt $AllLicensingPlans.Count; $i++) {$O365Licences = New-MsolLicenseOptions -AccountSkuId $AllLicensingPlans[$i].AccountSkuId -DisabledPlans "<UndesirableService1>", "<UndesirableService2>"...Set-MsolUserLicense -UserPrincipalName <Account> -LicenseOptions $O365Licences }
为您的环境自定义以下值:
<UndesirableService> 在此示例中,我们将使用 Office Online 和 SharePoint Online。
<Account> 在此示例中,我们将使用 belindan@litwareinc.com。
自定义的脚本如下所示:
$AllLicensingPlans = Get-MsolAccountSku for($i = 0; $i -lt $AllLicensingPlans.Count; $i++) {$O365Licences = New-MsolLicenseOptions -AccountSkuId $AllLicensingPlans[$i].AccountSkuId -DisabledPlans "SHAREPOINTWAC", "SHAREPOINTENTERPRISE"Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -LicenseOptions $O365Licences }
在易于您查找的位置将脚本另存为
RemoveO365Services.ps1
。在此示例中,我们将文件保存在“C:\O365 Scripts
”。使用以下命令在 Office 365 PowerShell 中运行此脚本。
& "C:\O365 Scripts\RemoveO365Services.ps1"
注意: |
---|
若要消除这些步骤的影响(即重新启用这些已禁用的服务),请再次执行这些步骤,但使用 DisabledPlans 参数的值 $null 。
|
返回顶部
长版(说明附有详细解释)
您在使用 Office 365 PowerShell 签发许可证时会默认启用所有服务。这是一件好事:这意味着您可以快速、轻松地将许可证分配给用户,无需一直指定启用每一项服务。
但是,尽管如此,您可能还需要限制对某些用户可用的服务;例如,某些用户可能应该具有 Office Professional Plus、Skype for Business Online 和 Exchange Online 的访问权限,但不应具有 SharePoint Online 或 Office Online 的访问权限。能否以这种方式对帐户进行限制?事实上这是可行的。为了解释其工作原理,现在我们采用一种两步方法来处理此问题:
向用户分配一个自动启用所有服务的 Office 365 许可证。
运行一对 Office 365 PowerShell 命令,为该用户禁用指定的服务。
我们已执行第 1 步:我们的用户 (Belinda Newman) 具有 Office 365 许可证,使其可以访问所有 Office 365 服务。但是,我们希望修改 Belinda 的帐户,使其不具备 SharePoint Online (SHAREPOINTENTERPRISE
) 或 Office Online (SHAREPOINTWAC
) 的访问权限。应如何执行此操作?
方法如下:首先,使用 New-MsolLicenseOptions cmdlet 创建一个包含想要禁用的服务的 LicenseOption 对象。对于 Belinda,我们想要禁用SHAREPOINTENTERPRISE
和 SHAREPOINTWAC
,因此我们使用此命令:
$x = New-MsolLicenseOptions -AccountSkuId "litwareinc:ENTERPRISEPACK" -DisabledPlans "SHAREPOINTWAC", "SHAREPOINTENTERPRISE"
看出具体的工作原理了吗?您指定许可计划 (litwareinc:ENTERPRISEPACK
),然后指明您想要禁用的每项服务,使用逗号将这些服务分开。
注意: |
---|
确保将新的 LicenseOption 对象存储在变量中。在上述示例中,我们使用了 $x ,尽管您可以使用任何有效的 Windows PowerShell 变量名称。
|
现在,我们可以使用以下命令禁用 Belinda 对这两项服务的访问权限:
Set-MsolUserLicense -UserPrincipalName BelindaN@litwareinc.com -LicenseOptions $x
没有太复杂的操作,只需:调用 Set-MsolUserLicense cmdlet 并包含 LicenseOptions 参数,以及包含我们想要禁用的计划的变量 ($x
)。现在当我们通过运行以下命令 ((Get-MsolUser -UserPrincipalName belindan@litwareinc.com).Licenses.ServiceStatus
) 查看 Belinda 的许可证信息时会看到什么?如下:
ServicePlan ProvisioningStatus ----------- ------------------ SWAY Success INTUNE_O365 Success YAMMER_ENTERPRISE PendingInput RMS_S_ENTERPRISE Success OFFICESUBSCRIPTION Success MCOSTANDARD Success SHAREPOINTWAC Disabled SHAREPOINTENTERPRISE Disabled EXCHANGE_S_ENTERPRISE Success
很酷吧?当然,如果愿意,我们可以对多个用户执行此相同操作。例如,此命令将为所有许可用户禁用此相同的两项服务:
Get-MsolUser | Where-Object {$_.isLicensed -eq $True} | Set-MsolUserLicense -LicenseOptions $x
请记住,Belinda 仍具有有效的 Office 365 许可证;只是现在她能访问的服务更少。在我们禁用这两项服务之前,Belinda 可以访问新闻源、OneDrive 和 SharePoint Online 站点:
现在这些选项对她不再可用:
这正是我们希望发生的。
如果我们稍后改变主意:能否重新启用这些服务?当然可以。要为某个用户重新启用所有服务,只需使用此命令创建以下 LicenseOption 对象:
$x = New-MsolLicenseOptions -AccountSkuId "litwareinc:ENTERPRISEPACK" -DisabledPlans $null
该命令可以执行哪些操作?首先,Windows PowerShell 常量 $null
意味着什么都没有。(或者用一种技术性更强的语言来说,它表示“空值”。)您应该还记得,当我们使用 New-MsolLicenseOptions cmdlet 时,必须指明我们想要禁用的服务。在这种情况下,我们不想禁用任何服务。这可能会让您相信,我们可以使用如下所示的命令,即没有为 DisabledPlans 参数指定值的命令:
$x = New-MsolLicenseOptions -AccountSkuId "litwareinc:ENTERPRISEPACK" -DisabledPlans ""
但是,这不起作用。相反,它将生成一个错误消息:
Set-MsolUserLicense : Cannot bind parameter 'LicenseOptions'. Cannot convert the "" value of type "System.String" to type "Microsoft.Online.Administration.LicenseOption".
幸运地是,将该参数值设置为 $null
是可行的:
$x = New-MsolLicenseOptions -AccountSkuId "litwareinc:ENTERPRISEPACK" -DisabledPlans $null
这就意味着,当您运行 Set-MsolUserLicense cmdlet 时,我们将告诉 Set-MsolUserLicense,我们不希望 Belinda 被禁止访问任何服务:
Set-MsolUserLicense -UserPrincipalName BelindaN@litwareinc.com -LicenseOptions $x
如果没有禁用任何服务,这必须意味着所有服务都已启用,这很合理。
现在您已清楚这一切如何工作,我们将向您演示如何签发许可证并禁用指定服务,只需使用同一个命令即可。这听起来令人印象深刻,但老实说,没有任何关系:您只需在同一个命令中同时包含 AddLicenses 和 LicenseOptions 参数。换句话说,您需要首先创建 LicenseOption 对象:
$x = New-MsolLicenseOptions -AccountSkuId "litwareinc:ENTERPRISEPACK" -DisabledPlans "SHAREPOINTWAC", "SHAREPOINTENTERPRISE"
然后如前所述,在命令中使用 AddLicenses 和 LicenseOptions 参数:
Set-MsolUserLicense -UserPrincipalName BelindaN@litwareinc.com -AddLicenses "litwareinc:ENTERPRISEPACK" -LicenseOptions $x
该命令将向 Belinda Newman 签发一个新的许可证,但在该许可证中禁用了 Skype for Business Online (SHAREPOINTWAC
) 和 SharePoint Online (SHAREPOINTENTERPRISE
)。
返回顶部
使用 Office 365 PowerShell 管理用户帐户和许可证(六)相关推荐
- 如何给远程计算机添加用户,如何访问远程计算机以添加/删除/管理用户帐户?...
我有一个场景,我需要访问远程计算机以编程方式添加和删除Windows用户帐户 . 远程机器是一个"备用工作站",我需要远程配置,准备好以防万一主工作站需要更换 - 所以这里没有安全 ...
- 组策略 计算机 用户账户控制,Windows 10 (用户帐户控制组策略和注册表) - Microsoft 365 Security | Microsoft Docs...
用户帐户控制组策略和注册表项设置 04/19/2017 本文内容 适用范围 Windows 10 Windows Server 2016 组策略设置 UAC 管理中心可以配置 10 个组策略 (用户帐 ...
- 域用户帐户、组的管理
一.项目背景 为了完成项目任务,设计一小型网络,拥有3台计算机,这3台计算机组成一个基于工作组的小型网络,现在需要对这些计算机进行配置,以满足下列要求: 1.公司内有5位员工,需要使用这些计算机,每位 ...
- linux批处理创建mysql用户_域用户和组帐户的管理之一次同时添加多个用户帐户篇...
如果利用AD图形界面来创建大量用户帐户的话,将浪费很多时间用于重复操作相同的步骤.此时可以利用系统内置的工作csvde.exe.ldifde.exe.dsadd.exe等程序来节省创建用户帐户的时间. ...
- Office 365 批量创建用户步骤
Office 365 批量创建用户步骤 1. 用管理员帐户登录到Office 365管理页面 (http://portal.microsoftonline.com/), 然后进入Office 365管 ...
- 如何使用 UserAccountControl 标志操纵用户帐户属性
转载: http://support.microsoft.com/kb/305144 概要 在打开用户帐户的属性后,单击帐户选项卡,然后选中或清除"帐户选项"对话框中的复选框,则会 ...
- TF31003:您的用户帐户没有连接到 Team Foundation Server 的权限
TF31003:您的用户帐户没有连接到 Team Foundation Server {0} 的权限.请与 Team Foundation Server 管理员联系,请求其向您的帐户添加适当的权限. ...
- [转]Linux系统中用户帐户清洁与安全方法
http://www.sina.com.cn 2008年12月25日 13:07 比特网ChinaByte 安全性是一个庞大和具有挑战性的主题,但每个负责服务器端工作的人都应当知道基本步骤.Cam ...
- DB2: 为DB2数据库创建新用户帐户并为其分配特定特权
目标 到目前为止,一直使用实例管理员帐户(SYSADM)来执行所有数据库命令.这个帐户对所有实用程序.数据和数据库对象具有完全访问权.因此,为了避免无意或有意的数据损失,必须要保护这个帐户.在大多数情 ...
最新文章
- 使用Tensorflow实现残差网络ResNet-50
- 控制div的大小自适应_可以漂移的电动轮椅,采用“自适应重心控制系统”,根本不怕翻车...
- 现在无法停止通用卷设备_软化和柔顺有什么区别吗?头发粗硬适合拉直还是烫卷?...
- Nginx安装与配置文件解析
- c#基于socket的UDP服务器和客户端实例
- 怎样让计算机恢复到桌面上,如何把电脑桌面恢复成原样.怎么办?
- jquery中如何获得$.ajax()事件返回的值
- 为什么天才容易患阅读障碍症_王俊凯因“耳石症”缺席跨年晚会,这种病与熬夜玩手机有关?...
- php time of 0,PHP程序时出现 Fatal error: Maximum execution time of 30 seconds exceeded in 提示...
- vc 6.0下msdev错误
- 设置路由器当作交换机使用
- 如何使用Adobe Acrobat对PDF文档进行电子签名
- 软件著作权申请时间是多久?
- zblogPHP新主题“度娘”发布
- suse linux enterprise 11 密码,图解SUSE Linux Enterprise Server 11 SP4安装教程
- 国内从事视觉领域的公司
- java.lang.RuntimeException: xxl-job jobhandler naming conflicts.
- openguass3.1.1升级5.0.0并测试tpch
- 粘塑性自洽(Visco-Plastic Self-Consistent,VPSC)晶体塑性模型简介
- JAVA中JCL是什么简称_jcl是什么意思啊