使用 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 服务,请执行以下步骤:

  1. 通过使用以下语法来确定许可计划中不需要的服务:

    $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"
    

  2. 将步骤 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}
        

      • 使用特定帐户列表   若要完成此操作,请执行以下步骤:

        1. 创建一个文本文件,在它的每一行上包含一个帐户,如下所示:

          akol@contoso.com
          tjohnston@contoso.com
          kakers@contoso.com
          

          在此示例中,该文本文件是 C:\My Documents\Accounts.txt。

        2. 运行以下命令:

          Get-Content "C:\My Documents\Accounts.txt" | foreach {Set-MsolUserLicense -UserPrincipalName $_ -LicenseOptions $LO}
          

若要对用户禁用所有可用许可计划中的 Office 365 服务,请执行以下步骤:

  1. 将此脚本复制并粘贴到记事本。

    $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
    }
    

  2. 为您的环境自定义以下值:

    • <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
    }
    

  3. 在易于您查找的位置将脚本另存为 RemoveO365Services.ps1。在此示例中,我们将文件保存在“C:\O365 Scripts”。

  4. 使用以下命令在 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 的访问权限。能否以这种方式对帐户进行限制?事实上这是可行的。为了解释其工作原理,现在我们采用一种两步方法来处理此问题:

  1. 向用户分配一个自动启用所有服务的 Office 365 许可证。

  2. 运行一对 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 管理用户帐户和许可证(六)相关推荐

  1. 如何给远程计算机添加用户,如何访问远程计算机以添加/删除/管理用户帐户?...

    我有一个场景,我需要访问远程计算机以编程方式添加和删除Windows用户帐户 . 远程机器是一个"备用工作站",我需要远程配置,准备好以防万一主工作站需要更换 - 所以这里没有安全 ...

  2. 组策略 计算机 用户账户控制,Windows 10 (用户帐户控制组策略和注册表) - Microsoft 365 Security | Microsoft Docs...

    用户帐户控制组策略和注册表项设置 04/19/2017 本文内容 适用范围 Windows 10 Windows Server 2016 组策略设置 UAC 管理中心可以配置 10 个组策略 (用户帐 ...

  3. 域用户帐户、组的管理

    一.项目背景 为了完成项目任务,设计一小型网络,拥有3台计算机,这3台计算机组成一个基于工作组的小型网络,现在需要对这些计算机进行配置,以满足下列要求: 1.公司内有5位员工,需要使用这些计算机,每位 ...

  4. linux批处理创建mysql用户_域用户和组帐户的管理之一次同时添加多个用户帐户篇...

    如果利用AD图形界面来创建大量用户帐户的话,将浪费很多时间用于重复操作相同的步骤.此时可以利用系统内置的工作csvde.exe.ldifde.exe.dsadd.exe等程序来节省创建用户帐户的时间. ...

  5. Office 365 批量创建用户步骤

    Office 365 批量创建用户步骤 1. 用管理员帐户登录到Office 365管理页面 (http://portal.microsoftonline.com/), 然后进入Office 365管 ...

  6. 如何使用 UserAccountControl 标志操纵用户帐户属性

    转载: http://support.microsoft.com/kb/305144 概要 在打开用户帐户的属性后,单击帐户选项卡,然后选中或清除"帐户选项"对话框中的复选框,则会 ...

  7. TF31003:您的用户帐户没有连接到 Team Foundation Server 的权限

    TF31003:您的用户帐户没有连接到 Team Foundation Server {0} 的权限.请与 Team Foundation Server 管理员联系,请求其向您的帐户添加适当的权限. ...

  8. [转]Linux系统中用户帐户清洁与安全方法

    http://www.sina.com.cn  2008年12月25日 13:07  比特网ChinaByte 安全性是一个庞大和具有挑战性的主题,但每个负责服务器端工作的人都应当知道基本步骤.Cam ...

  9. DB2: 为DB2数据库创建新用户帐户并为其分配特定特权

    目标 到目前为止,一直使用实例管理员帐户(SYSADM)来执行所有数据库命令.这个帐户对所有实用程序.数据和数据库对象具有完全访问权.因此,为了避免无意或有意的数据损失,必须要保护这个帐户.在大多数情 ...

最新文章

  1. 使用Tensorflow实现残差网络ResNet-50
  2. 控制div的大小自适应_可以漂移的电动轮椅,采用“自适应重心控制系统”,根本不怕翻车...
  3. 现在无法停止通用卷设备_软化和柔顺有什么区别吗?头发粗硬适合拉直还是烫卷?...
  4. Nginx安装与配置文件解析
  5. c#基于socket的UDP服务器和客户端实例
  6. 怎样让计算机恢复到桌面上,如何把电脑桌面恢复成原样.怎么办?
  7. jquery中如何获得$.ajax()事件返回的值
  8. 为什么天才容易患阅读障碍症_王俊凯因“耳石症”缺席跨年晚会,这种病与熬夜玩手机有关?...
  9. php time of 0,PHP程序时出现 Fatal error: Maximum execution time of 30 seconds exceeded in 提示...
  10. vc 6.0下msdev错误
  11. 设置路由器当作交换机使用
  12. 如何使用Adobe Acrobat对PDF文档进行电子签名
  13. 软件著作权申请时间是多久?
  14. zblogPHP新主题“度娘”发布
  15. suse linux enterprise 11 密码,图解SUSE Linux Enterprise Server 11 SP4安装教程
  16. 国内从事视觉领域的公司
  17. java.lang.RuntimeException: xxl-job jobhandler naming conflicts.
  18. openguass3.1.1升级5.0.0并测试tpch
  19. 粘塑性自洽(Visco-Plastic Self-Consistent,VPSC)晶体塑性模型简介
  20. JAVA中JCL是什么简称_jcl是什么意思啊

热门文章

  1. 亚马逊测评使用的买家账号怎么养?测评自养号需要具备哪些条件?
  2. esp8266+ws2812+blinker亮度控制
  3. MD4加密java算法
  4. 母亲节快乐!程序员们也不要忘记把这份礼品送给母亲
  5. 母亲节倒计时,选礼物救急指南
  6. sxs.exe 的查杀.bat
  7. C++11实现一个cyclic barrier
  8. 中央企业数字化转型的作用及意义
  9. 蓄水池采样算法(Reservoir Sampling)
  10. 孝经白话:广扬名章第十四