gpt4 book ai didi

Powershell ... 'enabled eq $true' 与 {$_.Enabled -eq $true}

转载 作者:行者123 更新时间:2023-12-02 22:35:52 29 4
gpt4 key购买 nike

我对 powershell 知之甚少。

我想知道是否有人可以指出我需要了解什么来解释以下内容:

PS C:\Users\username> (Get-Aduser -Filter 'Enabled -eq $true').count
1234
PS C:\Users\username> (Get-Aduser -filter * | where {$_.Enabled -eq $true }).count
13

他们读起来很相似……?什么是“已启用”,它与我阅读的 $_ 有何不同,我认为它是指“管道上的当前对象”,我认为它是通过“where”进行迭代的。

谢谢!

最佳答案

一般来说——这个

Get-Aduser -Filter "something -eq 'some value'"

将过滤器发送到服务器(即域 Controller ),服务器只返回匹配的用户,而这

Get-Aduser -filter *

从服务器获取所有用户,并在脚本中的第二步过滤他们(使用where)。

显然第一种方法效率更高,即使结果相同。


至于Enabled 检查,事情有点复杂。 AD 中的用户对象实际上没有 Enabled 属性 - 该属性是在客户端添加的。这意味着您不能将 Enabled -eq $true 传递给服务器,它不知道该怎么做。

AD 用户帐户对象有 the userAccountControl property它收集了各种标志:

SCRIPT            0x0001   1ACCOUNTDISABLE    0x0002   2HOMEDIR_REQUIRED  0x0008   8LOCKOUT           0x0010  16PASSWD_NOTREQD    0x0020  32

还有很多。设置标志 2 后,帐户将被禁用。如果使用 LDAP 过滤器设置了此标志,您可以专门查询服务器:

# all disabled users
Get-ADUser -LdapFilter "(userAccountControl:1.2.840.113556.1.4.803:=2)"

# all NOT disabled users
Get-ADUser -LdapFilter "(!(userAccountControl:1.2.840.113556.1.4.803:=2))"

这有点笨拙,但 LDAP 就是这样做的。 (:1.2.840.113556.1.4.803: 表示 LDAP 中的“按位与”运算符。不知何故,他们没有为它制作一个更简单的符号。)

有了这个过滤器,过滤实际上再次发生在服务器端,这意味着它应该比替代方法快得多,尤其是当 AD 中有很多用户帐户时。

我不认为有一种方法可以在 Get-ADUser 的“友好”-Filter 语法中表达这个特定的东西,但其他过滤器可以在服务器上工作-边

# all users whose first name starts with an A
Get-ADUser -Filter "givenName -like 'A*'"

Get-ADUser 在内部做的是,它解析 -Filter 字符串,并从中构建一个 LDAP 过滤器,因为 LDAP 过滤器语法是唯一的东西服务器理解:

“PowerShell 风格”过滤器 givenName -like 'A*' 将被转换为 LDAP 过滤器 (givenName=A*)

但是当使用 Enabled -eq $true 尝试时,Get-ADUser 内部出现问题,它似乎完全忽略了它,可能是因为它不聪明足以将其转换为 (!(userAccountControl:1.2.840.113556.1.4.803:=2))。因此 LDAP 过滤器保持为空,服务器返回所有 帐户。

这就是为什么我倾向于从一开始就编写 LDAP 过滤器的原因。它学习起来并不难,比 PowerShell 语法更通用,比客户端过滤更快,并且它按原样发送到服务器,事先没有任何干扰。

关于Powershell ... 'enabled eq $true' 与 {$_.Enabled -eq $true},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952752/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com