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:
Ich habe aber keine Ahnung wie man einfacher aus den Dictionary Entries des
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:
Und darauf aufbauend (aber ohne String Konvertierung) dann die Lösung mit der Automatischen Übernahme aller Dictionary Einträge aus dem AD Objekt:
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;
Geschrieben von Bernd Eckenfels
in Infrastruktur, Intranet, Technik
| Kommentare (3)
| Trackback (1)
Kommentare
Ansicht der Kommentare:
(Linear | Verschachtelt)
$utc = [datetime]"1/1/1601";
... foreach()...
$pc.login=$utc.AddDays($c.properties["lastlogon"][0]/864000000000).ToString("yyyy-MM-dd");
(maybe lastlogin is not replicated. the above will generate errors if property does not exist).
http://technet.microsoft.com/en-us/library/ff730967.aspx
([adsisearcher] "(objectclass=computer)").FindAll() | %{ New-Object PSObject -p $_.Properties} | Out-GridView
(however if you want to specify multiple parameters like search root, search type and others, the temporary variable in the script might come in handy).
Personally I prefer readable self documenting code - especially if it is a canned script as opposed a manual command entry.
Bernd
Layout by Ricky Wilson | Serendipity Template by Carl Galloway | Login
Impressum
Bernd Eckenfels
Mörscher Str. 8
76185 Karlsruhe
bernd-2012@eckenfels.net
Read More
Suche
Kategorien
Verlinkung
- Script [284]
- de.Hackin9.org 08/2011 [232]
- Max Trinidad [221]
- @MaxTrinidad [281]
- www.domaincrawler.com [28]
- www.datasis.de [3]
- www.google.de [2]
- www.google.de [2]
- www.google.ch [2]
- www.google.de [2]
- www.google.de [2]
- www.facebook.com [1]
- www.google.de [1]
- www.google.de [1]
- www.google.de [1]
- www.bing.com [1]
- www.google.de [1]
- localhost [1]
- www.google.de [1]
Kommentare
2012-02-08 08:01
Bernd zu Passwortsicherheit
2012-02-04 17:28
123 zu Passwortsicherheit
2012-02-04 14:43
bl123 zu Passwortsicherheit
2012-02-04 14:25
Edith - die Zauberkünstlerin zu Passwortsicherheit
2012-02-04 13:00
Bernd zu Passwortsicherheit
2012-02-04 10:59
Oliver// zu Passwortsicherheit
2012-02-04 10:34
Christian zu Passwortsicherheit
2012-02-03 14:53

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
Aufgenommen: Feb 08, 08:01