おはようございます。私は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を返しますが、displayName、Name、-などの子の追加プロパティを取得するにはどうすればよいですか。 whenCreated。それが得られれば、CSVファイルなどにエクスポートできる配列にすべてを配置する作業を行うことができます。代わりにLDAPのようなものを使用する必要がありますか?
最初のループで行っているフォーマットは、実際には必要ありません。以下を使用してみてください。
$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