我当前遇到一个问题,我无法根据用户列表获取安全组列表。麻烦主要在于获取他们的“ 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
答案 0 :(得分:0)
您必须像对待数组一样对待它,就像您遍历$companycount
。
请记住,MemberOf
是每个组的distinguisedName
属性的数组。但是该组的名称是distinguisedName
(CN
部分)的一部分,因此您可以使用Substring()
来提取它。
您可以使用类似这样的内容:
$ScriptObject.MemberOf = ($u.MemberOf | ForEach { $_.Substring(3, $_.IndexOf(",") - 3) }) -Join ", "
这将为您提供一个逗号分隔的组名称列表。
请记住,组的名称(cn
属性)可以与displayName
不同(对于通讯组列表,Outlook中显示的是displayName
),可能与您无关或无关。另外,如果您的任何组名中都包含逗号,那么我的代码也会引起问题。