首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以最快的方式计算PowerShell中的广告用户?

以最快的方式计算PowerShell中的广告用户?
EN

Stack Overflow用户
提问于 2018-07-09 08:42:07
回答 1查看 2.8K关注 0票数 1

我一直在寻找最快的方法来统计powershell中的广告用户数量,以及启用和禁用的用户数量,但是查询非常长(大约100 k用户,每个查询1到2分钟),而我的powershell ISE通常会在一两次请求后崩溃(这是用于报告工作的)。

因此,我的问题是如何优化这些查询:

代码语言:javascript
复制
$CountADUsers = (get-aduser –filter * -server $myserver).count.Count
$CountADUsersEnabled = (get-aduser -filter * -server $myserver | where {$_.enabled -eq "True"}).count
$CountADUsersNotEnabled = $CountADUsers - $CountADUsersEnabled

谢谢各位

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 08:59:34

你不需要跑两次。您可以将它保存到变量中,只需过滤它:

代码语言:javascript
复制
$allUsers = get-aduser –filter * -server $myserver
$CountADUsers = $allUsers.count
$CountADUsersEnabled = ($allUsers | where {$_.enabled -eq "True"}).count

而且,在这种情况下,它不会有帮助,但是请记住,使用-Filter *Where-Object并不是很有效,因为您可以只使用:

代码语言:javascript
复制
Get-ADUser -Filter {enabled -eq "True"}

另一个提示: ISE不应该用于运行脚本,因为它有时会以奇怪的方式运行(特别是当您在计算机上的内存耗尽时)。您应该使用powershell.exe代替。

编辑:要做更多的改进,您可以尝试只选择需要使用的属性。

代码语言:javascript
复制
$t = $allusers |select userprincipalname,enabled

然后使用Where-Object进行过滤。供比较:

代码语言:javascript
复制
Measure-command {($allusers | where {$_.enabled -eq "True"}).count}

花了两分钟

代码语言:javascript
复制
Measure-command {($t | where {$_.enabled -eq "True"}).count}

花了两秒钟(但选择大约需要2分钟,所以总的时间大致相同)。然而,这在很大程度上取决于场景。我把这个交给你,这样你就能找到最好的解决办法了。记住,Measure-Command是你的好朋友!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51241312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档