Não é possível identificar propriedades no item no powershell

2

Ao tentar responder a esta pergunta Eu encontrei algo que me incomodou por um tempo, e não consegui encontrar uma resposta.

O seguinte bloco de script listará os nomes de todos os membros do grupo de administradores locais.

$group = [ADSI]"WinNT://./Administrators"
@($group.Invoke("Members")) | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}

No entanto, ele listará somente os nomes e nenhuma outra propriedade.

Tenho quase certeza de que há outras propriedades de Members que eu poderia extrair, mas não entendo como identificaria essas outras propriedades.

Eu não preciso necessariamente conhecer as propriedades adicionais desse item, isso é mais uma questão de como eu iria encontrá-las.

(Peço desculpas se tudo isso é um pouco vago, sou muito autodidata em tudo isso e estou bem ciente de que posso estar latindo na árvore errada e / ou cometendo erros terríveis regulares.)

    
por Patrick 09.01.2014 / 14:57

3 respostas

1

Por favor, veja as propriedades disponíveis aqui:

link

e um exemplo semelhante à sua pergunta:

link

Como você já está obtendo uma lista de nomes de membros para o grupo, para obter os detalhes dos membros, eu apenas voltarei a repetir a consulta, exceto contra o usuário individual, em vez do grupo.

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;}
    
por 15.05.2014 / 02:41
2

O problema é que você está lidando com um Objeto COM, e esses objetos não parecem fornecer uma maneira de mostrar todos no PowerShell.

Você também pode dar uma olhada em uma pergunta semelhante em um thread (C #) diferente aqui: link

    
por 09.01.2014 / 16:32
1

Expandindo a ideia de @ Jacob. Quando você enumera os membros do grupo, apenas objetos de seqüência de caracteres estão sendo retornados, não objetos de usuário do AD. Portanto, as únicas propriedades disponíveis são propriedades de string (ou seja, comprimento, etc.). Você precisa consultar o AD novamente usando o nome como o parâmetro -identity para recuperar as propriedades do usuário.

No AD, você poderia fazer algo assim:

$(get-adgroup "administrators" -Properties members).members|foreach {get-aduser -identity $_}

Eu não posso falar pelo código do WinNT

    
por 16.05.2014 / 15:44