Пытаясь ответь на этот вопрос Я столкнулся с чем-то, что меня беспокоило какое-то время, и я не мог найти ответа.
В следующем блоке сценария будут перечислены имена всех членов группы локальных администраторов.
$group = [ADSI]"WinNT://./Administrators"
@($group.Invoke("Members")) | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
Однако он будет перечислять только имена и никакие другие свойства.
Я почти уверен, что есть и другие свойства Members
которые я мог бы извлечь, но я не понимаю, как я могу определить, что это за другие свойства.
Мне не обязательно знать дополнительные свойства этого предмета, это скорее вопрос, как я буду искать их.
(Прошу прощения, если все это немного расплывчато, я очень много учусь всему этому, и я хорошо понимаю, что могу лаять не на то дерево и / или делать регулярные ужасные ошибки.)
Проблема в том, что вы имеете дело с COM-объектом, и эти объекты, похоже, не позволяют показать вам все в PowerShell.
Вы также можете взглянуть на аналогичный вопрос в другом потоке (C #) здесь: https://stackoverflow.com/questions/10615019/get-property-names-via-reflection-of-an-com-object
Пожалуйста, посмотрите доступные свойства здесь:
http://msdn.microsoft.com/en-us/library/aa705950(v=VS.85).aspx
и аналогичный пример к вашему вопросу:
Поскольку вы уже получаете список имен участников группы, чтобы получить подробную информацию о членах, я бы просто запросил еще раз, за исключением индивидуального пользователя, а не группы.
PS C:\> $group = [ADSI]"WinNT://./administrators"
PS C:\> $members = $group.Invoke("Members") | % {$_.GetType().InvokeMember("name", 'GetProperty', $null, $_, $null) }
PS C:\> $membersObjects = @() ; $members | % { $membersObjects += [ADSI]"WinNT://./$_" }
PS C:\> $membersObjects | gm
TypeName: System.DirectoryServices.DirectoryEntry
Name MemberType Definition
---- ---------- ----------
ConvertDNWithBinaryToString CodeMethod static string ConvertDNWithBinaryToString(psobject deInstance, psobject dnWithBinaryInstance)
ConvertLargeIntegerToInt64 CodeMethod static long ConvertLargeIntegerToInt64(psobject deInstance, psobject largeIntegerInstance)
AutoUnlockInterval Property System.DirectoryServices.PropertyValueCollection AutoUnlockInterval {get;set;}
BadPasswordAttempts Property System.DirectoryServices.PropertyValueCollection BadPasswordAttempts {get;set;}
Description Property System.DirectoryServices.PropertyValueCollection Description {get;set;}
FullName Property System.DirectoryServices.PropertyValueCollection FullName {get;set;}
HomeDirDrive Property System.DirectoryServices.PropertyValueCollection HomeDirDrive {get;set;}
HomeDirectory Property System.DirectoryServices.PropertyValueCollection HomeDirectory {get;set;}
LastLogin Property System.DirectoryServices.PropertyValueCollection LastLogin {get;set;}
LockoutObservationInterval Property System.DirectoryServices.PropertyValueCollection LockoutObservationInterval {get;set;}
LoginHours Property System.DirectoryServices.PropertyValueCollection LoginHours {get;set;}
LoginScript Property System.DirectoryServices.PropertyValueCollection LoginScript {get;set;}
MaxBadPasswordsAllowed Property System.DirectoryServices.PropertyValueCollection MaxBadPasswordsAllowed {get;set;}
MaxPasswordAge Property System.DirectoryServices.PropertyValueCollection MaxPasswordAge {get;set;}
MaxStorage Property System.DirectoryServices.PropertyValueCollection MaxStorage {get;set;}
MinPasswordAge Property System.DirectoryServices.PropertyValueCollection MinPasswordAge {get;set;}
MinPasswordLength Property System.DirectoryServices.PropertyValueCollection MinPasswordLength {get;set;}
Name Property System.DirectoryServices.PropertyValueCollection Name {get;set;}
objectSid Property System.DirectoryServices.PropertyValueCollection objectSid {get;set;}
Parameters Property System.DirectoryServices.PropertyValueCollection Parameters {get;set;}
PasswordAge Property System.DirectoryServices.PropertyValueCollection PasswordAge {get;set;}
PasswordExpired Property System.DirectoryServices.PropertyValueCollection PasswordExpired {get;set;}
PasswordHistoryLength Property System.DirectoryServices.PropertyValueCollection PasswordHistoryLength {get;set;}
PrimaryGroupID Property System.DirectoryServices.PropertyValueCollection PrimaryGroupID {get;set;}
Profile Property System.DirectoryServices.PropertyValueCollection Profile {get;set;}
UserFlags Property System.DirectoryServices.PropertyValueCollection UserFlags {get;set;}
Расширение идеи @Jacob. Когда вы перечисляете членов группы, возвращаются только строковые объекты, а не пользовательские объекты AD. Следовательно, доступны только строковые свойства (например, длина и т. Д.). Вам нужно снова запросить AD, используя имя в качестве параметра -identity, чтобы получить свойства пользователя.
В AD вы можете сделать что-то вроде этого:
$(get-adgroup "administrators" -Properties members).members|foreach {get-aduser -identity $_}
Я не могу говорить о коде WinNT