如何使用 Get-MsolUser 在 Microsoft 365 中创建用户报告
Get-MsolUser cmdlet 是 MSOnline PowerShell 模块的一部分,用于通过命令行界面管理 Microsoft 365 环境。 Get-MsolUser 可用于详细说明组织中用户的特定信息或报告一组用户。
在这篇文章中,我将向您展示如何使用 cmdlet 获取有关用户的特定信息,以及如何创建有关多个用户的有用报告。它还可以合并到更大的脚本中,以创建用户数组或变量,然后可以对其进行操作,例如向每个邮箱添加别名或向每个用户分配 Microsoft 许可证。
先决条件
为了使用 Get-MsolUser cmdlet,您需要确保运行的是 PowerShell 版本 6 或更早版本并安装了 MSOnline 模块。如果您没有安装 MSOnline PowerShell 模块或收到错误,请按照我的指南如何修复术语“Connect-MsolService”无法识别
PowerShell v7 目前不支持 MSOnline 模块。
使用 Get-MsolUser cmdlet 获取有关特定用户的信息
如果您不确定要定位的用户,可以单独运行 Get-MsolUser cmdlet,它将返回您组织中的用户列表。从这里,您可以从显示名称或用户主体名称中识别您想要定位的用户。
现在您知道了要定位的用户的 UserPrincipalName,您可以使用以下命令来获取该用户的基本信息:
get-msoluser -UserprincipalName [email 从以下输出中您可以看到仅返回基本信息,例如用户主体名称、显示名称以及用户是否获得许可:
通常,您会寻找有关特定用户的更详细信息。要了解更多信息,我们可以将带有格式列表参数的管道“|”添加到我们的命令中,以返回有关用户的所有信息的列表。
get-msoluser -UserprincipalName [email | FL现在,您将看到返回的一长串所选用户帐户的属性和值。我不会在这里粘贴示例,因为它太长了。
您可以使用选择参数指定您感兴趣的信息,而不是默认列出有关用户的所有信息。通过以下命令,我选择了一些有用的信息来收集有关我们用户的信息。
get-msoluser -UserprincipalName [email |`
select DisplayName, UserPrincipalName, UsageLocation,`
UserType, WhenCreated我们的命令的输出如下所示:
最后,在某些情况下,您可能希望将该信息导出到 CSV 以便对其进行操作,甚至上传到另一个系统。您可以使用以下命令来执行此操作。
get-msoluser -UserprincipalName [email |`
select DisplayName, UserPrincipalName, UsageLocation, UserType, WhenCreated |`
Export-CSV -NoTypeInformation -path C:\temp\userinfo2.csv
对于上述脚本,csv 文件将保存在 C:\Temp\ 中,文件名为 userinfo2.csv。
如何使用 Get-MsolUser 报告多个用户
要使用 Get-MsolUser 命令生成有关我们组织 Microsoft 365 租户中多个用户的报告,我们可以在上面所做的基础上进行构建。
我们可以使用以下命令列出租户中的所有用户,并且仅列出每个用户的特定信息:
get-msoluser | select DisplayName, UserPrincipalName, UsageLocation, UserType, IsLicensed这是输出,您可以看到每个用户都有一个部分,其中包含我们选择的相应信息:
与上面类似,我们还可以使用 Export-CSV cmdlet 将此信息导出到可以对其进行操作的 CSV 中:
get-msoluser | select DisplayName, UserPrincipalName, UsageLocation, UserType, IsLicensed | `
Export-CSV -NoTypeInformation -path C:\temp\userinfo2.csv将信息导出到 CSV 后,输出如下所示:
如果我们只想定位特定用户,我们可以调整命令来搜索特定属性和属性中的特定单词。
例如,如果我们想要列出所有没有设置使用位置的用户,我们可以使用以下脚本来搜索使用位置属性为空(或空)的用户:
get-msoluser | ? {$_.UsageLocation -ne $null} |`
select DisplayName, UserPrincipalName, UsageLocation, UserType, IsLicensed | `
Export-CSV -NoTypeInformation -path C:\temp\userinfo2.csv从下面您可以看到,我们的 CSV 报告现在仅列出没有设置使用位置的用户。
以上内容可以根据您的需要进行调整。例如,您可以使用各种运算符来代替 -ne(不等于),例如:
- -eq(完全等于)
- -like (匹配通配符模式)
- -notlike(与通配符模式不匹配)
- -gt(大于指定值)
- -ge(大于或等于指定值)
- -lt(小于指定值)
- -le 小于或等于指定值)
您还可以在搜索查询中使用逻辑运算符,例如 AND 或 OR。这是另一个很好的示例,我们查找所有未设置使用位置且显示名称包含“信息”的帐户:
get-msoluser | ? {$_.UsageLocation -eq $null -and $_.DisplayName -like "Info"} |`
select DisplayName, UserPrincipalName, UsageLocation, UserType, IsLicensed | `
Export-CSV -NoTypeInformation -path C:\temp\userinfo2.csv





