Rechner im AD LDAP mit Powershell auflisten
Ich hab ein wenig mit Powershell herumgespielt (weil ich das Script das auch in de.Hackin9.org 08/2011 abgebildet war nicht verstanden habe).
Dabei kam dann folgendes funktionierendes Script heraus, es sortiert mit alle Rechner des AD LDAPs und zeigt diese in einem grafischen Viewer mit Betriebsystemversion und Servicepack Level an:
$ldapSearcher = new-object directoryservices.directorysearcher; $ldapSearcher.filter = "(objectclass=computer)"; $computers = $ldapSearcher.findall(); $pcs = @(); foreach ($c in $computers) { $pc = "" | Select-Object Name,OS,SP,SPN; $pc.Name=$c.properties["cn"]; $pc.OS=$c.properties["operatingsystem"]; $pc.SP=$c.properties["operatingsystemservicepack"]; $pc.SPN=$c.properties["serviceprincipalname"]; $pcs += $pc; } $pcs | sort-object OS,SP,Name | Out-GridView;Ich habe aber keine Ahnung wie man einfacher aus den Dictionary Entries des
$c.Properties
Member direkte Properties machen kann ohne diese mit einer foreach Schleife und direktem Assignment aufwändig zu kopieren. Ich hoffe ein mitlesender Powershell Guru kann mir das kurz sagen? :)
Update: Max Trinidad (@MaxTrinidad) hat mich auf die Idee mit New-Object gebracht, damit lässt sich das Script etwas vereinfachen und die Attribute in Strings konvertieren:
$ldapSearcher = new-object directoryservices.directorysearcher; $ldapSearcher.filter = "(objectclass=computer)"; $computers = $ldapSearcher.findall(); [Array] $pcs = $null; foreach($c in $computers) { $pcs += New-Object PSobject -property @{ Name = [string]$c.properties["cn"]; OS = [string]$c.properties["operatingsystem"]; SP = [string]$c.properties["operatingsystemservicepack"]; SPN = [string]$c.properties["serviceprincipalname"]; } }Und darauf aufbauend (aber ohne String Konvertierung) dann die Lösung mit der Automatischen Übernahme aller Dictionary Einträge aus dem AD Objekt:
$ldapSearcher = New-Object directoryservices.directorysearcher; $ldapSearcher.filter = "(objectclass=computer)"; $computers = $ldapSearcher.findall(); [Array] $pcs = $null; $computers | ForEach-Object { $pcs += New-Object PSobject -property $_.Properties; } $pcs | Out-GridView;
Trackbacks
Hope This Helps on : Windows 2008 / 7 - Powershell alle Rechner mit Betreibssystem in eine Datei
Problem : Man möchte eine Übersicht über alle im AD vorhandenen Rechner mit Betriebsystem und Servicepack Lösung : Dieses Skript exportiert alle Rechner mit OS und SP in eine Textdatei die einfach in Excel importiert werden kann. $ldapSearcher
Comments
Display comments as Linear | Threaded
Bernd on :
Bernd on :
Bernd on :