Как вы экспортируете список имен ПК и членство в определенной группе этой конечной точки с помощью powershell? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть список конечных точек, и мы пытаемся выяснить, есть ли у них конкретное членство в группе, но я не могу понять, как экспортировать конечную точку и группу, членом которой она является.

$Groups = foreach ($pc in (Get-Content "C:\Users\*\Desktop\DefualtTest.csv")) {
    try {
        Get-ADComputer $pc -Properties memberof |
            select -Expand memberof |
            dsget group -samid |
            ? {$_ -match 'bit9'}
    } catch {
        Write-Output "$pc does not have bit9 group"
    }
}

$Groups | Out-File "C:\Users\*\Desktop\testONE.csv" 

1 Ответ

0 голосов
/ 27 ноября 2018

пытаться сделать это в комментариях ... сложно.[ ухмылка ]

вот пример того, что я подразумеваю под словом "делать это по одной строке за раз" в цикле foreach ...

# fake reading a list of systems from a text file
#    in real life, use Get-Content
$ComputerList = @'
pc01
pc02
pc03
pc04
pc05
pc666
'@ -split [environment]::NewLine

# fake getting a list of Computers & the groups they are in
#    in real life, use Get-ADComputer & the ".MemberOf" property
$GroupMembershipLookup = @{
    'pc01' = @('GroupA', 'GroupB')
    'pc02' = @('GroupB', 'GroupC', 'GroupD')
    'pc03' = @('GroupA', 'GroupB', 'GroupE')
    'pc04' = @('GroupZ')
    }

$NoGroupFound = '__No Group Found__'

$Results = foreach ($CL_Item in $ComputerList)
    {
    # use a real call to Get-ADComputer here [*grin*]
    #    pro'ly something like "(Get-ADComputer $CL_Item -Property MemberOf).MemberOf -join '; '"
    $GroupList = $GroupMembershipLookup[$CL_Item] -join '; '
    if ([string]::IsNullOrEmpty($GroupList))
        {
        $GroupList = $NoGroupFound
        }
    [PSCustomObject]@{
        ComputerName = $CL_Item
        GroupMembership = $GroupList
        }
    }

# on screen 
$Results

# to CSV
$Results |
    Export-Csv -LiteralPath "$env:TEMP\Del_GroupMembershipList.csv" -NoTypeInformation

на экране вывода ...

ComputerName GroupMembership       
------------ ---------------       
pc01         GroupA; GroupB        
pc02         GroupB; GroupC; GroupD
pc03         GroupA; GroupB; GroupE
pc04         GroupZ                
pc05         __No Group Found__    
pc666        __No Group Found__ 

CSV-контент ...

"ComputerName","GroupMembership"
"pc01","GroupA; GroupB"
"pc02","GroupB; GroupC; GroupD"
"pc03","GroupA; GroupB; GroupE"
"pc04","GroupZ"
"pc05","__No Group Found__"
"pc666","__No Group Found__"

что делает вышеперечисленное ...

  • создает массив системыимена , как если бы были прочитаны с помощью Get-Content
  • , создает таблицу поиска , как если бы один использовал Get-ADComputer, чтобы получить членство в группе для каждой системы
  • сделал значение "not found" и сохранил его в $ Var для повторного использования
  • , повторяемый через $ComputerList collection
  • , захватил список / массив групп и преобразовалих в строку с разделителями точкой с запятой
  • , проверенную на "группы не найдены" и добавленную ранее сохраненное значение, если список пуст
  • , построил [PSCustoObject] и отправил его в выходной поток
  • захватил поток вывода в массив с именем $Results все за один раз , чтобы избежать штрафа += массива
  • displayed результаты на экране
  • отправили коллекцию $Results в файл CSV
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...