- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 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/
感觉代码越少越好,所以想“优化”如何同时启用多个项目: button1.enabled = YES; button2.enabled = YES; textField.enabled = YES; .
我正在尝试禁用和禁用存储在 List 中的 Component。当我尝试这样做时,出现以下错误: 'Component' does not contain a definition for 'enab
我正在努力使用执行器启用 Spring Boot 运行状况检查。由于我们的应用程序依赖于 Spring 1.5.21,因此我必须使用执行器 1.5.21 版本。我在他们的online document
我有一个项目结构如下:.Persistence -> .Repo -> .Services -> .Controllers -> MVC3 App。 每一层都有一个带有接口(interface)的相应
解决方法: 在cmakelists.txt中添加设置: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fms-extensions") 问题解决 下面是cmakel
我对 powershell 知之甚少。 我想知道是否有人可以指出我需要了解什么来解释以下内容: PS C:\Users\username> (Get-Aduser -Filter 'Enabled -
我有一个运行 Ubuntu 16.04.1x64 的 DO droplet,我正在尝试运行 IPFS作为系统服务。我已经按照说明创建了一个用户“connor”并安装了 IPFS here .我将服务存
我尝试制作 Android WebRTC 应用 我在 Android Oreo 和 Pie 上测试过,该应用运行良好。 但是在 Android Lollipop 和 Marshmallow 上,当我调
我有一个简单的网站,其中一个 aspx 页面 ( Test.aspx ) 显示 Roles.Enabled在 Web.config 中设置为 false 的值(属性 roleManager@enabl
在 Spring Boot 中,对于分段上传,我看到许多教程站点都建议具有以下属性之一:spring.http.multipart.enabled=false或者spring.servlet.mult
我有一个 PHP 库,它使用许多正则表达式,其中包括用于多字节字符串的 \P 表达式,例如 ((((?:\P{M}\p{M}*)+?)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?
如果“错误运行应用程序:Instant Run 需要启用'工具 | Android | 启用 ADB 集成'。” 使用最新的 Gradle 插件和最新的 Android SDK 时出现问题。您可以使用
在尝试了一些选项后,我仍然没有得到满意的结果: 使用的Javascript库是FullpageJS ( http://alvarotrigo.com/fullPage/ ) Fullpage.js 使
默认情况下,Kafka Consumer 会定期提交当前偏移量,除非通过禁用 enable.auto.commit 将其关闭。 .根据文档,您将负责自己提交偏移量。所以当我想要 手册 控制,这似乎是要
我有一个 AWS SAM 应用程序,其函数包含 schedule 事件,并且我希望有条件地启用/禁用根据参数值为事件生成的 EventBridge 规则。 为此,我在 template.yaml 中执
似乎 servlet 的 web.xml 有一个元素叫做 false 可以像这样放在servelt定义中 example com.example.TestServlet 10
我们有 Aerospike 服务器版本 3.8.3(支持 LDT) 我们遇到以下异常 - 2018-08-01 16:11:31,558 1320573 [task-scheduler-3] ERRO
我有一个运行 Windows 10 Pro 的 Windows VM,我正在尝试安装运行 WSL2 的 Docker。 但是,我遇到了下面的错误,我可以确认 虚拟机平台 Windows 功能 已经启用
我开始学习 Javafx,并且偶然发现了这个“奇怪”的功能。我制作了一个带有两个按钮的简单窗口。当我按下其中一个按钮时,会出现一条蓝色笔画并一直保留在那里,直到我按下另一个按钮。除了知道最后按下的是哪
我在使用 C++ 模板时遇到了这段使用 SFINAE 使用 std::enable_if 的代码.这段代码我面临两个问题。 #include #include enum class Type :
我是一名优秀的程序员,十分优秀!