Получение списка MemberOf на основе списка пользователей - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время я сталкиваюсь с проблемой, когда мне не удается получить список групп безопасности на основе списка пользователей.Проблема в основном в том, чтобы захватить их "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

1 Ответ

0 голосов
/ 17 октября 2018

Вам придется обращаться с ним как с массивом, так же, как вы перебираете $companycount.

Имейте в виду, что MemberOf - это массив атрибутов distinguisedName каждой группы.,Но имя группы является частью distinguisedName (часть CN), поэтому вы можете просто использовать Substring(), чтобы извлечь это.

Вы можете использовать что-то вроде этого:

$ScriptObject.MemberOf = ($u.MemberOf | ForEach { $_.Substring(3, $_.IndexOf(",") - 3) }) -Join ", "

Это даст вам список имен групп, разделенных запятыми.

Помните, что имя группы (атрибут cn) может отличаться от displayName(для списков рассылки это displayName, который отображается в Outlook), который может иметь или не иметь отношение к вам.Кроме того, мой код будет вызывать проблемы, если в именах групп есть запятые.

...