【问题标题】:powershell - Check multiple user and exclude duplicate user and add countpowershell - 检查多个用户并排除重复用户并添加计数
【发布时间】:2017-09-20 19:02:04
【问题描述】:

我的任务是创建一个可以执行以下任务的脚本。示例:我们有一个域 ABC。

有 4 个安全组,分别命名为 A、B、C 和 D。

Peter 是 A 和 B 组的成员。 David 是 B 和 C 组的成员。 约翰是 A 组的成员。 B组也是A组的成员。

我们要查找 A、B 组中的用户总数。那些已经在组中的用户将被排除在计数中,这意味着排除重复用户计数。基于上述,脚本将显示 A & B = 3 个用户的总数,而不是 5 个用户。我尝试编写一个脚本,该脚本将计算 A 和 B 组中的用户以及 A 和 B 组中存在的任何组。如果 John 位于 A 和 B,则脚本只会添加 1 个计数。另外如果大卫在B组但不在A组,它会增加1个计数。

编辑:在你们的帮助下修改代码后,没有错误。但是显示的结果是空的。

$groups = $A_group, $B_Group
$gm     = @()
foreach ($group in $groups) {
    $gm += Get-ADGroupMember $group |
           where {$_.objectclass -eq 'user'} |
           select SamAccountName
}
($gm.samaccountname | Select -Unique).Count
Write-Output $total = ($gm.samaccountname | Select -Unique).Count

【问题讨论】:

  • 你在哪里定义你的 $total 变量?
  • 代码“不工作”是如何准确的?预期的结果是什么?实际结果如何?你有错误吗?他们说了什么?
  • $total = ($gm.samaccountname | Select -Unique).Count; Write-Output $total

标签: powershell powershell-2.0 powershell-3.0


【解决方案1】:

由于存在嵌套组 [组内组],因此您唯一缺少的是 Get-ADGroupMember 的 -recursive 参数。这也会让用户进入嵌套的 ADGroup B,而不仅仅是返回 ADGroup B 名称。

将此行更改为如下:

$gm += Get-ADGroupMember $group -Recursive | where objectclass -eq 'user' | select SamAccountName

我不知道最后一行在做什么。[似乎错误且不必要]下面的行足以让您获得总数。

$total = ($gm.samaccountname | Select -Unique).count

【讨论】:

  • 运行代码时出现错误。 char:17 + where
  • 在 ps1:28 char:17 + where
  • 不知道为什么没有回复而不得不使用评论?
  • @Power988 因为如果您需要提供其他信息,您应该edit your question。 SO 是一个问答网站,而不是一个网络论坛。
  • 关于错误,where objectclass -eq 'user' 是 PowerShell v3 引入的缩写符号。在 v2 中,您必须使用正则符号:where {$_.objectclass -eq 'user'}。
猜你喜欢
  • 2018-11-24
  • 1970-01-01
  • 2021-01-23
  • 2014-10-09
  • 2016-11-07
  • 2018-08-04
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
相关资源
最近更新 更多