Für einige PowerShell-Scripte (die ich auch hier veröffentlichen werde, sobald sie fertig sind) brauche ich eine Liste aller Computer, die in unserem Active Directory bekannt sind. Nichts einfacher als das:
# Returns a list of all computers (running Windows XP) in the local LDAP
function GetComputersFromLDAP()
{
trap
{
write-host ("Error while retrieving computers from LDAP: " + $_.exception.message) -foregroundcolor "red";
return $false;
}
$pcs = @();
$ldapSearcher = new-object directoryservices.directorysearcher;
$ldapSearcher.filter = "(objectclass=computer)";
$computers = $ldapSearcher.findall();
foreach ($computer in $computers)
{
if ($computer.properties["operatingsystem"] -eq "Windows XP Professional")
{
$pc = "" | select-object Name;
$pc.Name = $computer.properties["name"];
$pcs += $pc;
}
}
return ($pcs | sort-object Name);
}
Über das zurückgegebene Array kann man dann wie folgt iterieren:
foreach ($pc in $pcs)
{
write-host $pc.Name;
}
Pingback:PowerShell: Verfügbaren Hauptspeicher (RAM) für mehrere PCs ermitteln » Stefan Macke
Hi,
das sieht ja schon ganz nett aus. Wie wäre es aber z.B. gleich gewisse Keys als Schlüssel zu benutzen, z.B. einen Server oder gar Printserver auszulesen und zwar anhand des “Merkmals”?? –
Gruß
p
@pollewetzer: Es steht dir frei, dass Script zu erweitern 🙂 Für meine Zwecke reicht es aus…
Pingback:IT Blog
Hallo Bernd. Du hast natürlich recht, die $dir-Zeile bewirkt gar nichts. Das muss wohl noch aus einer früheren Version des Scripts übriggeblieben sein. Ich habe sie aus dem Listing entfernt.
Pingback:Verweis auf mein PowerShell-Script in der aktuellen Ausgabe der hakin9 » Stefan Macke
Und hier noch eine Version mit konvertierung von einer ausgewählten anzahl an Attributen und einer noch eleganteren Version die einfach alle Attribute aus dem AD Object in Not-Properties umkopiert:
(mit Unterstützung von @MaxTrinidad)
Gruss
Bernd
Schön,
ich mach es mir einfacher.
LinuxServer verbunden mit Winserver SMBSTATUS = Alle verbundenen PCs
Das Script ist aber natürlich auch nicht schlecht.
🙂