Для каждой AD-группы получить член и операционную систему в таблице - PullRequest
0 голосов
/ 18 июня 2020

Здесь я пытаюсь получить список групп AD и сервера в каждой из этих групп с операционной системой в таблице.

Get-ADGroup -Filter 'name -like "SUS*"' |
    ForEach-Object {
        $hash = @{GroupName = $_.Name; Member = '' }
        $_ | Get-ADGroupMember -ea 0 -recurs |
        ForEach-Object {
            $hash.Member = $_.Name
            New-Object psObject -Property $hash
        }
    } | sort groupname, member

Как это сделать, чтобы у меня была таблица в следующем формате

GroupName | ServerName | OperatingSystem

1 Ответ

1 голос
/ 18 июня 2020

Намного проще использовать ускоритель [PSCustomObject], чем использовать New-Object и ha sh, как вы это делаете.

Кроме того, если вам нужна операционная система, вам нужно использовать Get-ADComputer. Get-ADGroupMember возвращает только объект ADPrincipal, который не может содержать свойство OperatingSystem. К счастью, вы можете передать этот объект в Get-ADComputer, и он вернет объект ADComputer, который может содержать операционную систему, если вы попросите об этом.

Get-ADGroup -Filter 'name -like "SUS*"' | ForEach-Object {
    $groupName = $_.Name
    $_ | Get-ADGroupMember -ea 0 -recurs | Get-ADComputer -Properties OperatingSystem -ea 0 | ForEach-Object {
        return [PSCustomObject]@{
            GroupName = $groupName
            ServerName = $_.Name
            OperatingSystem = $_.OperatingSystem
        }
    }
} | Sort-Object GroupName, ServerName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...