返回 Office 365 用户帐户信息

 

上一次修改主题: 2014-06-09

摘要:使用 Windows PowerShell 来管理使用 Windows PowerShell cmdlet、脚本和批处理过程的 Office 365。

抛开名称,将重点放在可以使用 Azure Active Directory 执行的管理任务上会更加有趣(重要)。Azure Active Directory 包括 66 个 cmdlet,其中大部分用于管理您的 Office 365 用户、组和许可证。例如,需要您的 Office 365 用户的快速列表?请尝试使用以下命令:

Get-MsolUser

虽然这有点走弯路,但却可能是谈论 cmdlet 名称的好时机。如果您看一下 Azure Active Directory cmdlet 的名称,您会注意到它们有一个共同点:

  • Add-MsolForeignGroupToRole

  • Add-MsolGroupMember

  • Add-MsolRoleMember

  • Confirm-MsolDomain

  • Connect-MsolService

正如您所看到的,每个 cmdlet 名词(连字符后的名称部分)以前缀 Msol 开始。巧合?不完全是。相反,Msol 前缀(MsOnline 的缩写)用于将这些 cmdlet 标识为 Azure Active Directory cmdlet。所有 Azure Active Directory cmdlet 必须使用前缀 Msol,其他 Windows PowerShell cmdlet 则不可以使用 Msol 前缀。例如,SharePoint Online cmdlet 都具有以下前缀:

  • Add-SPOUser

  • Connect-SPOService

  • Disconnect-SPOService

  • Get-SPOAppErrors

  • Get-SPOAppInfo

Lync Online cmdlet 都使用前缀 Cs:

  • Get-CsAudioConferencingProvider

  • Get-CsOnlineUser

  • Get-CsTenant

  • Get-CsTenantFederationConfiguration

  • Get-CsTenantHybridConfiguration

Cs 前缀实际上是 Communication Server 的缩写。这是因为 Lync Server 以前称为 Office Communications Server。正式更改名称时,已经实现了大量的 cmdlet。因为在那个时候更改 cmdlet 名称可能会延迟产品的发布,所以做出了保留 Cs 前缀的决定。

有趣的是,Exchange cmdlet 不使用任何种类的前缀:

  • Add-RecipientPermission

  • Get-LinkedUser

  • Get-RecipientPermission

  • Get-RemovedMailbox

  • Get-SendAddress

为什么不呢?因为 Exchange 是第一个发布 Windows PowerShell cmdlet 集的服务器产品。当时,不强制使用 cmdlet 前缀或其他标识符。但是,随着其他服务器团队开始创建 cmdlet,很快,大家都意识到一个问题:如果 Exchange 有一个名为 Set-User(实际上的确有)的 cmdlet,那么,需要一个用于设置用户属性的 cmdlet 的其他团队该怎么办?(cmdlet 名称必须是唯一的。)解决方案是使用前缀。因此,我们现在才有名称是 Set-MsolUser、Set-CsUser 和 Set-SPOSiteUser 之类的 cmdlet。

不管怎样,运行 Get-MsolUser 都会返回类似于以下的信息:

UserPrincipalName                     DisplayName           isLicensed
-----------------                     -----------           ----------
ZrinkaM@litwareinc.onmicrosoft.com    Zrinka Makovac        True
BonnieK@litwareinc.onmicrosoft.com    Bonnie Kearney        True
FabriceC@litwareinc.onmicrosoft.com   Fabrice Canel         True
BrianJ@litwareinc.onmicrosoft.com     Brian Johnson         False 
AnneWlitwareinc.onmicrosoft.com       Anne Wallace          True

所有这些都是您的 Office 365 用户。

但是,假设您只想查看未经授权的用户列表;也就是说,已被添加到 Office 365,但还没有被授权使用任何软件应用程序的用户。这也很简单:

Get-MsolUser -UnlicensedUsersOnly

同样,我们调用了 Get-MsolUser cmdlet,只是这次我们附加了 UnlicensedUsersOnly 参数。顾名思义,该参数将返回的数据限制为尚未颁发任何许可证的用户:

UserPrincipalName                     DisplayName           isLicensed
-----------------                     -----------           ----------
BrianJ@litwareinc.onmicrosoft.com     Brian Johnson         False
ScottW@litwareinc.onmicrosoft.com     Scott Wallace         False

非常好。

我们还要说明一下,Windows PowerShell 因作为一种由 Martians 创建的计算机语言而知名。当许多人想到 Windows PowerShell 时,他们会想到类似下面的命令:

gc test.txt | sort {[int]$_} |% {$i = 1}{while ($i -lt $_){$i;$i++};$i++}

当然,这个命令是有点...笨拙...另一方面,我们刚刚向您展示了一个只返回未获得 Office 365 授权的用户的命令。为做到这一点,我们使用了一个名为 Get-MsolUser 的 cmdlet 和一个名为 UnlicensedUsersOnly 的参数:

Get-MsolUser -UnlicensedUsersOnly

当我们运行该命令时,我们只返回未经授权的用户。

这也就意味着,您经常可以根据意愿使 Windows PowerShell 变得或神秘莫测,或清晰明了


下一篇: 选择要返回的用户帐户属性值

 
显示: