Active Directory上のサーバーのリストを取得したいのですが、それらのIP、OS、およびそれらが属する組織単位も含めたいです。サーバーが所属する直接の親OUです。
私は次のPSスクリプトを思い付きました、そしてそれは私が必要とするものをほぼ満足させます:
> Get-ADComputer -filter * -Properties ipv4Address, OperatingSystem,DistinguishedName | select-object Name, ipv4Address, OperatingSystem, DistinguishedName
ただし、OU名は実際にはDistinguishedNameであり、わかりにくいので、本当に必要なのは、その識別名の2番目のOU値です。フルネームではなく、黄色のボックスに値のみを表示したい。
Get-ADOrganizationUnitを使用しようとしましたが、常に空白になります。これが私の最新の試みです。私のPSスクリプトに何か問題があるかどうかを見つけることができますか?
> Get-ADComputer -filter * -Properties ipv4Address, OperatingSystem,DistinguishedName | select-object Name, ipv4Address, OperatingSystem, @{label='DistinguishedName';expression={(Get-ADOrganizationUnit $_.DistinguishedName -Property DistinguishedName).Name}}
文字列操作はあなたの友達です。
仮定:
$dn = "CN=ComputerName,OU=OU1,OU=OU2,OU=OU3,DC=domain,DC=org"
次に:
$OU = $dn.Split(',')[1].Split('=')[1]
これは何をしますか:
最後に、変数$ OUには、オブジェクトが含まれているパスの最初のOUの名前( "OU1")が含まれています。
そしてはい、あなたはあなたの出力をフォーマットするときにこれを使うこともできます:
Get-ADComputer -filter * -Properties ipv4Address, OperatingSystem,DistinguishedName | select-object Name, ipv4Address, OperatingSystem, @{label='OU';expression={$_.DistinguishedName.Split(',')[1].Split('=')[1]}}