Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在广告上显示不在组中的所有用户_Powershell - Fatal编程技术网

Powershell 在广告上显示不在组中的所有用户

Powershell 在广告上显示不在组中的所有用户,powershell,Powershell,我正在尝试获取一个不在广告组中的所有用户的列表 组是所有电子邮件用户 我试过这个: Get-ADUser -Filter * -properties memberof | Where-Object {!($_.memberof -like "*all email*")} | measure 但它不能正确地过滤掉。有什么想法吗?memberof属性可能会返回一个字符串数组,因此您必须遍历所有字符串(不同的组),以确定该组是否不存在于其memberof中。但是,这种方法不能解决属于其他组的组的问题

我正在尝试获取一个不在广告组中的所有用户的列表

组是所有电子邮件用户

我试过这个:

Get-ADUser -Filter * -properties memberof | Where-Object {!($_.memberof -like "*all email*")} | measure

但它不能正确地过滤掉。有什么想法吗?

memberof属性可能会返回一个字符串数组,因此您必须遍历所有字符串(不同的组),以确定该组是否不存在于其memberof中。但是,这种方法不能解决属于其他组的组的问题,等等

我的方法

1) 抓取所有电子邮件用户组的所有成员。对于如何迭代该组的组成员(如果有)以获得真正的成员,网络上有一些解决方案。他们的用户名应存储在字符串[]中。这应该不会太难,但我也不知道你在powershell的工作经验有多丰富

2) 从广告中抓取所有用户。同时将他们的用户名存储在字符串[]中

3) 在两个字符串数组上使用
diff
cmdlet,它将为您提供一个[]中存在但另一个[]中不存在的项(在本例中为用户名)。diff基本上是这样工作的:

diff $arUsers1 $arUsers2

memberof属性可能会返回一个字符串数组,因此您必须遍历所有字符串(不同的组),以确定该组是否不存在于其memberof中。但是,这种方法不能解决属于其他组的组的问题,等等

我的方法

1) 抓取所有电子邮件用户组的所有成员。对于如何迭代该组的组成员(如果有)以获得真正的成员,网络上有一些解决方案。他们的用户名应存储在字符串[]中。这应该不会太难,但我也不知道你在powershell的工作经验有多丰富

2) 从广告中抓取所有用户。同时将他们的用户名存储在字符串[]中

3) 在两个字符串数组上使用
diff
cmdlet,它将为您提供一个[]中存在但另一个[]中不存在的项(在本例中为用户名)。diff基本上是这样工作的:

diff $arUsers1 $arUsers2

如果有嵌套组作为“所有电子邮件”组的成员,我为
get-adGroupMember
添加了
-recursive
开关

我的流程是收集组中当前的所有用户,收集组中存在的所有用户,然后使用
比较对象
筛选两个组中都未找到的用户(即不是“所有电子邮件”组成员的用户)

$usersInGroup=get-adGroupMember-identity-recursive
$usersAll=获取成人
$usersNotInGroup=Compare Object-referenceObject$usersInGroup-differenceObject$usersAll |
其中对象{$\ sideIndicator-eq“=>”}

由于
$usersNotInGroup
是从
比较对象
输出中收集的,因此您将不会拥有与
get adUsers
一起收集的丰富AD对象(如果内存可用,您将拥有samAccountName或完整DN)。这应该足以从Active Directory cmdlet中获得结果。

如果有嵌套组作为“所有电子邮件”组的成员,我为
get-adGroupMember
添加了
-recursive
开关

我的流程是收集组中当前的所有用户,收集组中存在的所有用户,然后使用
比较对象
筛选两个组中都未找到的用户(即不是“所有电子邮件”组成员的用户)

$usersInGroup=get-adGroupMember-identity-recursive
$usersAll=获取成人
$usersNotInGroup=Compare Object-referenceObject$usersInGroup-differenceObject$usersAll |
其中对象{$\ sideIndicator-eq“=>”}
由于
$usersNotInGroup
是从
比较对象
输出中收集的,因此您将不会拥有与
get adUsers
一起收集的丰富AD对象(如果内存可用,您将拥有samAccountName或完整DN)。这应该足以从Active Directory cmdlet获取结果