До сих пор у меня есть следующий скрипт, который работает как шарм, но только список членов группы «Администраторы». Поскольку мои серверы могут быть немецкими, французскими ... У меня нет гарантии, что такая группа будет существовать с английским словом. Поэтому я хочу адаптировать его для сбора всех групп и ассоциированных членов, а не только для администраторов ... bummer Я застрял на определенном этапеПолучить все локальные элементы и группы, отображаемые вместе
В приведенном ниже сценарии перечислены все пользователи, которые находятся в непустых локальных группах. Однако я хотел бы получить в своем CSV также название группы, частью которой является пользователь, для более четких интерпретаций.
Может кто-нибудь помочь мне в этом? Я немного застрял и совершенно ничего.
$Servers=Get-Content ListOfComputers.txt
$output = 'ListOfLocalAdministratorsGroup.csv'
$results = @()
foreach($server in $Servers)
{
$admins = @()
$computer =[ADSI]"WinNT://$server"
$computer.psbase.children | where { $_.psbase.schemaClassName -eq 'group' } | foreach {
$group =[ADSI]$_.psbase.Path
$members = @($group.psbase.Invoke("Members"))
$members | foreach {
$obj = new-object psobject -Property @{
Server = $Server
Admin = $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)
}
$admins += $obj
}}
$results += $admins
}
$results| Export-csv $Output -NoTypeInformation
Здравствуйте Trondh, К сожалению я редактировал в то же время, потому что я изменил мой сценарий и почти получил это работает. Я попробую ваше решение и дам вам знать! :) – Wawa41
Trondh, я попробовал ваш ответ, но я получаю сообщение «Не удалось найти имя группы» с помощью метода Invoke. – Wawa41
Таким образом: $ objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-32-544") $ objgroup = $ objSID.Translate ([System.Security.Principal.NTAccount]) $ objgroupname = $ objgroup.Value Еогеасп ($ сервер в $ серверов) { $ админы = @() $ группа = [ADSI] "WinNT: // $/сервер $ objgroupname" $ членов = @ ($ group.psbase.Invoke ("Members")) – Wawa41