[玩转系统] 如何将 Get-MgUser 与 Microsoft Graph PowerShell 结合使用
作者:精品下载站 日期:2024-12-14 06:45:45 浏览:15 分类:玩电脑
如何将 Get-MgUser 与 Microsoft Graph PowerShell 结合使用
Microsoft Graph PowerShell 中的 Get-MgUser cmdlet 允许您从命令行查找有关组织内的用户、用户组或所有用户的信息。它还将公开更多有关用户的信息,这些信息比通常通过基于 Web 的管理门户(例如 Azure AD 管理中心或 Microsoft 365 管理中心)找到的信息要多。
在本教程中,我将引导您了解如何使用 Microsoft Graph PowerShell 中的 Get-MgUser cmdlet 来查找和导出有关用户的有用信息。我还将介绍如何过滤和操作搜索结果以查找您需要的特定信息。
内容
- 为什么使用 Get-MgUser cmdlet?
- 先决条件
- 查找运行 Get-MgUser 所需的权限
- 查找单个用户的信息
- 选择特定属性
- 使用 Microsoft Graph 参考文档查找嵌套属性
- 使用 -ExpandProperty 或 -Expand 查找隐藏信息
- 过滤 Get-MgUser 搜索结果
- 使用搜索参数查找用户
- 结合搜索和过滤选项
为什么使用 Get-MgUser cmdlet?
Get-MgUser 是通过命令行界面查找有关用户的信息的首选命令。该命令可在 Microsoft Graph PowerShell SDK 中找到,该 SDK 是 MSOnline 和 AzureAD 等 PowerShell 模块的后续版本。
您可以将许多不同的参数与 Get-MgUser 一起使用,例如:
-展开属性
-属性
-过滤
-搜索
-跳过
-排序
-顶部
-ConsistencyLevel
-PageSize
-全部
-CountVariable
先决条件
要使用 Get-MgUser 命令,您需要确保满足以下条件:
- 您正在运行 PowerShell 5.1 或更高版本
- 安装了 .NET Framework 4.7.2 或更高版本
- 您已安装 Microsoft Graph PowerShell SDK
查找运行 Get-MgUser 所需的权限
在连接到 Microsoft Graph 之前,必须确保使用 -scope 参数并定义了运行命令的正确权限。
要查找查找用户信息所需的最低权限级别,请使用 Find-MgGraphCommand cmdlet 查找 Get-MgUser cmdlet 的权限。
Find-MgGraphCommand -command Get-MgUser |`
Select -First 1 -ExpandProperty Permissions
您不需要连接到您的组织即可运行此命令,但您需要安装 Microsoft Graph PowerShell。这是预期的输出,虽然描述没有显示,但可以根据权限名称准确地做出假设。
根据上面的输出,为了运行我们的命令,我们可以使用以下命令以所需的最少权限连接到 Microsoft Graph。
Connect-MgGraph -Scopes "User.Read.All"
查找单个用户的信息
要查找单个用户的信息,您可以运行以下命令来显示所有用户的显示名称、用户名和 ID 的列表。您可以从此处复制目标用户的 ID,以便直接定位该用户。
Get-MgUser | select DisplayName, UserPrincipalName, Id
复制用户 ID 后,将其放入以下命令中以显示用户帐户的所有信息。
Get-MgUser -UserId 5965d511-e639-4a28-bfbb-b2cb08e83907 | fl
如果您已经知道用户的用户名,则可以将 Id 替换为用户名,以获得相同的结果。
Get-MgUser -UserId [email | fl
选择特定属性
当您定位特定用户并包含“格式列表”参数时,您会获得信息页面,其中大部分是空的或不相关的。使用select参数,我们可以选择显示的属性。
例如,要仅显示显示名称、用户名和用户 ID,我们可以使用以下命令。
Get-MgUser -UserId [email | `
select DisplayName, UserprincipalName, Id
使用带有 Format-Line 参数的 PIPE 来确定要报告的属性并保存命令以供日后使用。
您希望查看的某些属性可能不会立即可见,这是因为它们是嵌套的。例如,如果您想查看用户的邮箱是否启用了自动回复,您可以运行以下命令。
Get-MgUser -UserId [email -Property MailboxSettings | `
Select @{Name = 'AutomaticReply'; Expression = {$_.MailboxSettings.AutomaticRepliesSetting.status}}
有时找到这些设置并不容易,但是,当您需要提取特定信息时,Microsoft Graph 文档是最好的起点。
使用 Microsoft Graph 参考文档查找嵌套属性
调用 Get-MgUser cmdlet 时的许多属性都是嵌套的。 Microsoft Graph 中的其他 cmdlet 也是如此,要查找这些属性,Microsoft Learn 上的 Graph API 参考文档是最好的查找位置。
在上面的示例中,我找到了邮箱的自动回复设置,我们可以在文档中查找,如下所示。
1. 首先访问 https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties,此页面显示所有属性、值类型和每个属性的解释。
2. 找到初始属性并选择类型字段(如果可单击)。这里我选择了mailboxSettings。
3. 您将看到一个类似的页面,其中显示了mailboxSettings 属性的所有属性。我在这里选择了automaticRepliesSetting。
4. 可以看到,如果我们想要查看用户邮箱的自动回复设置的状态,我们需要status属性。它嵌套在 MailboxSettings > AutomaticReplySettings 中。
所以我们知道我们的设置值位于 MailboxSettings.AutomaticRepliesSetting.status 中,但是,它必须作为表达式包含在我们的命令中。如果不这样做,您将收到如下错误:
选择:缺少表达式的必填项。
因此,为了使这项工作正常进行,一旦我们在命令中定义了 -property 参数,我们就可以 PIPE,然后使用 select 命令来提取我们的值,如下所示:
选择 @{Name=‘自动回复’;表达式={$_.MailboxSettings.AutomaticRepliesSetting.status}}
自动回复
————-
已禁用
使用 -ExpandProperty 或 -Expand 查找隐藏信息
如果您使用format-list命令查看某个用户的所有用户属性,您可能会发现许多属性都是空的。我不确定这是为什么,但有些肯定包含信息。您可以使用Expand 或ExpandProperty 参数来显示不立即可见的信息。
另一个不寻常的怪癖是,并非所有命令都会在 Get-MgUser 之后接受用户用户名,因此为什么在教程开始时,我强调您可以将 UserPricincipalName 或 Id 解析到命令中。我将向您展示的下一个命令也是如此。
例如,要显示用户上次登录的信息,您可以执行以下操作。
get-mguser -userid (get-mguser -UserId "[email ").id `
-property signinactivity | Select-Object -expandproperty signinactivity
您可以在上面的命令中看到,在不知道用户 Id 的情况下,我们选择了 Id 属性并在命令中调用了用户两次。如果您没有在命令中指定 id,您将收到如下错误:
get-mguser : {“@odata.context”:”http://reportingservice.activedirectory.windowsazure.com/$metadata#Edm.String”,”value”:” Get By Key 仅支持 UserId 并且密钥必须是有效的 Guid”}
因此,要使用上面与用户 ID 相同的命令,您可以运行以下命令。
get-mguser -userid 841e1f59-a0e2-4062-896a-8c84c36f1811 `
-property signinactivity | Select-Object -expandproperty signinactivity
您会发现并非所有属性都以相同的格式呈现。这意味着信息不能总是以相同的方式提取。例如,如果我们想查看特定用户的管理员名称,我们可以运行以下命令。
Get-MgUser -UserId [email -ExpandProperty manager | `
Select @{Name = 'Manager'; Expression = {$_.Manager.AdditionalProperties.displayName}}
过滤 Get-MgUser 搜索结果
您可以使用 -Filter 参数来过滤用户的搜索结果。使用过滤器参数时,只能使用几个逻辑运算符,它们是:
- eq 属性等于
- le 该属性小于或等于(按字母顺序)
- gt 属性大于或等于(按字母顺序)
- 和属性 1 等于且属性 2 等于
- 或属性 1 等于或属性 2 等于
- startswith属性开始于
- endswith 属性以以下结尾
下面我将向您展示如何在命令中使用每个逻辑运算符的示例。
首先,我们可以使用 eq 运算符来查找属性与特定值匹配的用户,这里将过滤显示名称等于“John Smith”的用户。
get-mguser -filter "DisplayName eq 'John Smith'"
与上面的格式类似,我们可以使用 le 或 ge 运算符来查找显示名称以小于或大于字母表中“G”的字母开头的用户。
#Filter users whos name begins with a letter before G in the alphabet
get-mguser -filter "DisplayName le 'g'"
#Filter users whos name begins with a letter after G in the alphabet
get-mguser -filter "DisplayName ge 'g'"
要查找租户中显示名称以字母 D 开头的所有用户,您可以使用 startswith 运算符。
get-mguser -filter "startswith(Displayname, 'D')"
与上面类似,我们可以通过用户endswith运算符来查找主邮件地址以特定域名结尾的用户。对于此命令,指定 -CountVariable 和 -ConsistencyLevel 参数非常重要。
Get-MgUser -CountVariable CountVar -Filter "endsWith(mail,'it-career.online')" `
-Sort "displayName" -ConsistencyLevel eventual
上面的命令现在可以与 和 运算符配对来微调我们的结果。例如,要查找主域为 it-career.online 且显示名称以 D 开头的用户。
Get-MgUser -CountVariable CountVar -Filter `
"endsWith(mail,'it-career.online') and startswith(Displayname, 'D')" `
-Sort "displayName" -ConsistencyLevel eventual
与上面类似,可以以相同的方式使用 or 运算符来扩大我们的结果。在这里,我们搜索主要邮件地址以“it-career.online”或“it-career.info”结尾的用户。
Get-MgUser -CountVariable CountVar -Filter `
"endsWith(mail,'it-career.online') or endsWith(mail,'it-career.info')" `
-Sort "displayName" -ConsistencyLevel eventual
使用搜索参数查找用户
与过滤选项类似,我们也可以使用-search参数来微调我们的用户搜索结果。我上面提到了使用 -ConsistencyLevel 选项并设置为 最终,我们需要在以下命令中执行此操作。
下面我们正在搜索显示名称以字母 I 开头的用户。
Get-MgUser -ConsistencyLevel eventual -Search '"DisplayName:I"'
目前尚不清楚搜索参数的具体工作原理,例如它是按短语搜索的。如果显示名称是“John Smith”,我可以使用搜索词:
- ''显示名称:J''
- ''显示名称:约翰''
- ''显示名称:Smith''
- ''显示名称:S''
但是,它不会找到可能属于单词中间或末尾的值。例如,如果我使用以下内容,John Smith 将不会出现在我的搜索结果中:
- ''显示名称:h''
- ''显示名称:第''
- ''显示名称:hn''
结合搜索和过滤选项
使用 Get-MgUser cmdlet 时,搜索和筛选参数并不相互排斥,尽管可能缺乏功能/文档,但将两者结合起来并不会带来全部好处,但您可以。
例如,如果您想要过滤域 it-career.online 的所有用户并搜索特定部门中的用户的结果,您可以运行以下命令。
Get-MgUser -Filter "endsWith(mail,'it-career.online')" `
-Search 'Department:Marketing' -ConsistencyLevel eventual
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag