A colleague of mine asked, how to retrieve the IPs from all servers in an active directory quickly.
Here is the answer:
#build a directorysearcher with ldap filter to get only computers
#if only a single server should be determined, change the * in name=* to name=<servername> (without <>)
$ds = new-object system.directoryservices.directorysearcher("(&(objectcategory=computer)(name=*))")
#get the computernames only
$computers = @($ds.findall() | % { ([adsi]$_.path).properties['name'] })
#loop through the names and try collect the IPs using wmi and list them
foreach($c in $computers)
{
Get-WmiObject -computer $c -query "select * from win32_networkadapterconfiguration" | where-object { $_.ipaddress.count -gt 0 } | foreach-object { "$($c): $($_.ipaddress)" }
}
Have fun.