webdevqa.jp.net

PowerShellを使用したADSIの検索

おはようございます。私はPSを使用して何日も(それは簡単なはずですが)何かをオンとオフにまとめようとしてきましたが、まだすべてを理解することができていません。 PSを使用してADSIから情報を検索および取得しようとしています。 PSコンソールで以下を使用する場合:

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

動作するように、値が割り当てられている(正しい)オブジェクトプロパティを返します。しかし、必要なのはADオブジェクトの子なので、追加しようとしますSearchScope

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

そして、次のようなエラーメッセージが表示されます。

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

そこで、別のアプローチを試しました。

[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 $_
    }

上記は子のdistinguishedNameを返しますが、displayNameName、-などの子の追加プロパティを取得するにはどうすればよいですか。 whenCreated。それが得られれば、CSVファイルなどにエクスポートできる配列にすべてを配置する作業を行うことができます。代わりにLDAPのようなものを使用する必要がありますか?

1
STGdb

最初のループで行っているフォーマットは、実際には必要ありません。以下を使用してみてください。

$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
1
Josh