Procurando ADSI usando o PowerShell


1

Bom Dia. Eu tenho tentado juntar algo por dias (que deveria ser) simples usando o PS, mas ainda não consegui descobrir tudo. Eu estou tentando pesquisar e recuperar informações do ADSI usando PS. Quando uso o seguinte no console do PS:

Get-ADObject "CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com" -Properties *

Ele retorna as propriedades do objeto que possuem valores atribuídos a elas (o que é correto) para que funcione. Mas, o que eu preciso são filhos do objeto AD, então eu tento adicionar SearchScope :

Get-ADObject "CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com" -SearchScope OneLevel -Properties *

E recebo um relatório de mensagens de erro:

A positional parameter cannot be found that accepts argument "CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com"

Então, tentei uma abordagem diferente:

[string]$strCrLf = "`r`n"
[string]$strDoubleQuote = '"'
$ChildObjects = @()

$ParentObject = ([ADSI]"LDAP://CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com")
ForEach ($Child in $ParentObject.psBase.Children)
    {
    $ChildObjects += @("([ADSI]" + $strDoubleQuote + $Child.Path + $strDoubleQuote + ").distinguishedName" + $strCrLf)
    }

$ChildObjects | ForEach-Object {
    Invoke-Expression $_
    }

O acima, retorna o nome distinto das crianças, mas como recuperar propriedades adicionais das crianças, como Mostrar nome , Nome e quandoCriado . Se eu conseguir isso, posso trabalhar em colocar tudo em uma matriz que pode ser exportada para um arquivo CSV ou algo assim. Eu preciso usar algo como o LDAP?


1
Você já tentou adicionar -Filter antes da string de entrada no seu segundo exemplo? Você não deveria precisar, mas vale a pena tentar se você está recebendo um erro de parâmetro posicional. Além disso, você não iria querer Subtree ao invés de OneLevel como um valor para o SearchScope parâmetro para solicitar todas as crianças?
root

Obrigado. eu tentei -Filter mas teve o mesmo erro. Eu só quero um nível retornado para este, em vez de enumerar a árvore, mas é bom apontar isso.
STGdb

Respostas:


1

A formatação que você está fazendo no primeiro loop não é realmente necessária. Tente usar o seguinte:

$ChildItems = ([ADSI]"LDAP://CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com")

$ChildItems.psbase.Children | Format-Table Name, DisplayName, whenCreated | Out-File C:\test.csv

AWESOME - funciona muito bem. Apenas uma coisa faltando em sua resposta embora (deve ser ([ADSI]"LDAP://CN=OID etc - basta adicionar o LDAP parte). obrigado
STGdb

1
Ops, deve ter perdido isso no copiar / colar do meu teste. Eu atualizei a resposta.
Josh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.