根据用户列表获取 MemberOf 列表
Grabbing a list of MemberOf based off a list of users
我目前 运行 遇到无法根据用户列表获取安全组列表的问题。麻烦主要在抢他们"MemberOf";因为它本身就是一个数组。任何建议都会有所帮助!
代码如下:
$companycount = Get-ADUser -Properties * -Filter{(company -Like "companyname.")}
$users=@()
foreach($user in $companycount)
{
if($user.Enabled)
{
$ScriptObject = New-Object PSOBJECT
Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name Sam -Value ""
Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name Description -Value ""
Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name MemberOf -Value ""
$ScriptObject.Sam = $user.SamAccountName
$ScriptObject.Description =$user.Description
$ScriptObject.MemberOf = $user.MemberOf
$users+=$ScriptObject
}
}
$users|export-csv
您必须将其视为一个数组,就像您在 $companycount
.
中循环一样
请记住,MemberOf
是每个组的 distinguisedName
属性的数组。但是该组的名称是 distinguisedName
(CN
部分)的一部分,因此您可以使用 Substring()
来提取它。
你可以使用这样的东西:
$ScriptObject.MemberOf = ($u.MemberOf | ForEach { $_.Substring(3, $_.IndexOf(",") - 3) }) -Join ", "
这将为您提供一个以逗号分隔的组名称列表。
请记住,群组名称(cn
属性)可以不同于 displayName
(对于通讯组列表,它是 Outlook 中显示的 displayName
),这可能与您相关,也可能不相关。另外,如果您的任何组名中有逗号,我的代码就会出现问题。
我目前 运行 遇到无法根据用户列表获取安全组列表的问题。麻烦主要在抢他们"MemberOf";因为它本身就是一个数组。任何建议都会有所帮助!
代码如下:
$companycount = Get-ADUser -Properties * -Filter{(company -Like "companyname.")}
$users=@()
foreach($user in $companycount)
{
if($user.Enabled)
{
$ScriptObject = New-Object PSOBJECT
Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name Sam -Value ""
Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name Description -Value ""
Add-Member -InputObject $ScriptObject -MemberType NoteProperty -Name MemberOf -Value ""
$ScriptObject.Sam = $user.SamAccountName
$ScriptObject.Description =$user.Description
$ScriptObject.MemberOf = $user.MemberOf
$users+=$ScriptObject
}
}
$users|export-csv
您必须将其视为一个数组,就像您在 $companycount
.
请记住,MemberOf
是每个组的 distinguisedName
属性的数组。但是该组的名称是 distinguisedName
(CN
部分)的一部分,因此您可以使用 Substring()
来提取它。
你可以使用这样的东西:
$ScriptObject.MemberOf = ($u.MemberOf | ForEach { $_.Substring(3, $_.IndexOf(",") - 3) }) -Join ", "
这将为您提供一个以逗号分隔的组名称列表。
请记住,群组名称(cn
属性)可以不同于 displayName
(对于通讯组列表,它是 Outlook 中显示的 displayName
),这可能与您相关,也可能不相关。另外,如果您的任何组名中有逗号,我的代码就会出现问题。