Как проверить список групп, чтобы увидеть, есть ли участники - PullRequest
0 голосов
/ 07 июня 2018

Я работал над сценарием, который просматривал список групп в файле CSV и проверял, есть ли у них какие-либо члены.В конечном итоге я хочу, чтобы скрипт экспортировал результаты в отдельный файл CSV.

$groups = Get-Content 'C:\Users\me\Desktop\testGroups.csv'

foreach ($groups in $groups) {
    $users = Get-ADGroupMember -Identity $groups 
    if (($users | Measure-Object).Count -ne 0) {Write-Output "$groups has something" | Out-File C:\Users\me\Desktop\membersTest.csv -Append}
    Else {Write-Output "$groups has nothing" | Out-File C:\Users\me\Desktop\membersTest.csv -Append} 
} 

Это возвращает следующее:

Length
27
31
41
30
...

Я пытался изменить Write-Output на Write-Host, и это, кажется, возвращает правильные результаты, но отображает только егов окне CMD очевидно.

Может ли кто-нибудь помочь мне с процессом исправления этих IF Else утверждений?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

У меня был похожий скрипт для другого проекта, который может быть полезен, я изменил его в соответствии с вашим запросом.Если вам не нужно отображать вывод, вы можете проигнорировать это.

$groups = import-csv groups.csv
$outputFile = New-Item -ItemType file testOutputCSV.CSV -Force

foreach ($group in $groups) {
    [array]$users = Get-ADGroupMember -Identity $group.samaccountname
    if($users.count -ne 0){
        Write-Output "$($group.samaccountname) has something " 
    }
    else {
        Write-Output "$($group.samaccountname) has 0 members" 
    }
    $group.samaccountname +","+$users.count | Out-File $outputFile -Append
}

Если вы хотите выделить группы, не имеющие членов на консоли, а также CSV, вы можете перенести эту строку внутрь блока IF Else, добавив дополнительные столбцы по мере необходимости.

$group.samaccountname +","+$users.count | Out-File $outputFile -Append

Если вам не нужно ничего отображать на консоли, вы можете опустить блок IF Else.

Если вы хотите обновить CSV только для групп, имеющих 0 или ненулевых участников, вы можете внести соответствующие изменения.

Редактировать: Маскированные $ Users будут [массивом], поскольку группы с одним членом будутвозврат ADPrincipal

0 голосов
/ 07 июня 2018

Конечным результатом является CSV, поэтому создайте объект и экспортируйте его.

$groups = Get-Content 'C:\Users\me\Desktop\testGroups.csv'

$GroupMemberCount = ForEach ($group in $groups) {
    [PSCustomObhect]@{
       Group = $group
       MemberCount = (Get-ADGroupMember -Identity $group).Count
    }
}
$GroupMemberCount | Out-Gridview
$GroupMemberCount | Export-Csv 'C:\Users\c002568\Desktop\membersTest.csv' -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...