[玩转系统] 使用 PowerShell 查找 Entra ID 用户
作者:精品下载站 日期:2024-12-14 04:09:37 浏览:15 分类:玩电脑
使用 PowerShell 查找 Entra ID 用户
使用过滤器来定位邮箱和 Entra ID 用户帐户
PowerShell 脚本通常首先查找一组要处理的 Entra ID 用户帐户或 Exchange 邮箱。经典方法是运行 Get-ExoMailbox 或 Get-MgUser 之类的 cmdlet 来查找所需的对象。然而,当您尝试检索最佳集时,事情可能会变得有点复杂。例如:
- 仅用户邮箱(不包括共享邮箱和房间邮箱)。
- 仅许可帐户(重点关注已分配许可证以使用 Microsoft 365 服务的用户帐户)。
第一组很容易找到:
[array]$Mailboxes = Get-ExoMailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited
第二个是:
[array]$Users = Get-MgUser -Filter "assignedLicenses/`$count ne 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records -All -Property Id, displayName, AssignedLicenses
后一个示例的语法更加复杂,因为它使用图形过滤器来查找至少具有一个许可证(计数大于 0)且属于租户成员(非来宾)的帐户。这也是 Microsoft 所说的针对 Entra ID 对象的高级查询,这就是存在一致性级别参数的原因。
问题是共享邮箱和房间邮箱使用的帐户可以拥有许可证。共享邮箱需要许可证才能使用存档或增加邮箱配额,而会议室邮箱在由 Teams Rooms 设备使用时需要许可证。您的脚本可能不一定要处理这些帐户,因为其目的是处理人类而不是房间或设备拥有的帐户。
创建共享邮箱和房间邮箱数组后,可以轻松过滤用户数组以删除不在该数组中的帐户:
[array]$NonUserAccounts = Get-ExoMailbox -RecipientTypeDetails SharedMailbox, RoomMailbox -ResultSize Unlimited | Select-Object UserPrincipalName, ExternalDirectoryObjectId
Write-Host "Removing non-user accounts from set to be processed..."
$Users = $Users | Where-Object {$_.Id -notin $NonUserAccounts.ExternalDirectoryObjectId}
结果是一个包含人类许可用户帐户的数组。我在脚本中使用此技术来创建经理及其直接报告的 HTML 报告。
查找员工的用户帐户
Entra ID 包括员工数据的多个属性。三个重要属性是:
- EmployeeId:包含组织分配的员工标识符的字符串值。通常这是一个数字。
- EmployeeHireDate:员工加入组织的日期值。
- EmployeeType:指示员工类型的字符串值。例如,您可以在此属性中存储“临时”、“永久”和“兼职”等值。
员工属性不是图表返回的默认集的一部分。您可以像平常一样过滤属性,但如果您想查看数据,则必须在图形请求中指定属性。例如,此 Get-MgUser 命令查找 EmployeeId 属性中具有某些值的成员帐户,而不在图表返回的数据中包含该属性的值。与空间的比较是使用图表时需要了解的缺点之一。
[array]$Employees = Get-MgUser -filter "userType eq 'Member' and EmployeeId ge ' '"
$Employees | Format-Table DisplayName, EmployeeId
DisplayName EmployeeId
----------- ----------
Rene Artois
Tony Redmond
要查看员工数据,请指定要返回的调用的属性:
[array]$Employees = Get-MgUser -filter "userType eq 'Member' and EmployeeId ge ' '" -Property Id, displayname, userprincipalname, employeeid, employeehiredate, employeetype
$Employees | Format-Table DisplayName, EmployeeId, EmployeeType, EmployeeHireDate
DisplayName EmployeeId EmployeeType EmployeeHireDate
----------- ---------- ------------ ----------------
Rene Artois 111888 Permanent 08/03/2018 00:00:00
Tony Redmond 150847 Permanent 01/01/2011 00:00:00
不幸的是,图表不支持根据员工类型或员工雇用日期属性进行过滤(请参阅此页面以供参考)。如果您想根据雇用日期进行过滤,请创建如上所示的员工数组,并使用客户端过滤器。例如,此代码查找过去十年内雇用的员工:
$CheckDate = (Get-Date).AddDays(-3650)
$Employees | Where-Object {$CheckDate -as [datetime] -lt $_.EmployeeHireDate}
虽然此命令会查找员工类型标记为永久的帐户。
$Employees | Where-Object {$_.EmployeeType -eq "Permanent"}
您还需要一个客户端过滤器来使用 PowerShell 中提供的 like、match 和其他比较运算符。评估用户帐户时,图形请求仅限于 eq、and、or 和 startswith。
查找具有 Exchange 自定义属性的用户帐户
对 Entra ID 使用任何查询都取决于查询属性中的准确数据。我的经验是,填充 Entra ID 中可用的员工属性的 Microsoft 365 租户相对较少。这可能是因为许多组织是混合组织,或者有其他原因不使用员工属性(例如不知道它们是否可用),或者正在使用其他方案。例如,使用 Active Directory 和 Exchange Server 的组织有时会通过在自定义(扩展)属性中存储值来标记“人类”帐户。该属性可能存储员工、临时、顾问和服务帐户等值来指示帐户的用途。此示例查找许可的用户帐户,其中 ExtensionAttribute2 存储“Employee”以标记属于人类的帐户。
[array]$EmployeeAccounts = Get-MgUser -Filter "onPremisesExtensionAttributes/extensionAttribute2 eq 'Employee' and assignedLicenses/`$count ne 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records -All
如果您的组织使用 Exchange 自定义属性来存储员工信息,则没有充分的理由改用 Entra ID 属性,除非您想要或需要将 Exchange 属性用于其他目的。切换只需从 Exchange Online 读取属性并将其写入 Entra ID,因此非常简单。下面是一些简单的代码,说明如何从 Exchange Online 获取员工详细信息并将其写入用户的帐户。 EmployeeType 的值取自 CustomAttribute2,而 EmployeeHireDate 的值则来自邮箱的创建日期。
[array]$Mailboxes = Get-ExoMailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited -Properties CustomAttribute2, WhenCreated
ForEach ($Mbx in $Mailboxes) {
Update-MgUser -UserId $Mbx.ExternalDirectoryObjectId -EmployeeType $Mbx.CustomAttribute2 -EmployeeHireDate (Get-Date($Mbx.WhenCreated))
}
分割处理
有时,一个组织跨多个帐户,需要很长时间才能获取所有帐户。在这些情况下,您可以通过将帐户划分为方便的组来拆分处理。有的人用部门作为处理依据,有的人用国家作为处理依据。在此示例中,我们根据姓氏获取许可的用户帐户。图 1 显示了结果。
[array]$Surnames = "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"
ForEach ($S in $Surnames) {
$Filter = "assignedLicenses/`$count ne 0 and userType eq 'Member' and startsWith(surname,('$S'))"
[array]$Users = Get-MgUser -Filter $Filter -ConsistencyLevel eventual -CountVariable Records -All
If ($Users) {
Write-Host ("{0} users have surname starting with {1}" -f $Users.count, $S)
Write-Host "---------------------------------------------"
$Users | Format-Table DisplayName, Surname
Write-Host ""
} Else {
Write-Host ("No users found with surname starting with {0}" -f $S)
}
}
过渡的一部分
进行有效的调用来查找邮箱和/或用户帐户可能是 PowerShell 脚本的成败的关键。从已弃用的 Azure AD 模块到 Graph API 或 Graph SDK 命令的转换引入了一种新的筛选器格式,该格式更难使用,并且缺乏通过标准 PowerShell 比较运算符提供的一些灵活性。更新脚本以使用图表有时可能具有挑战性,但看待事物的积极方式是它提供了提高代码效率的机会。对于中小型组织来说,这并不重要,但在管理数以万计的帐户或邮箱时,它会产生巨大的差异。
猜你还喜欢
- 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