Afgstyler 10 Geschrieben 26. April 2012 Melden Teilen Geschrieben 26. April 2012 Hallo ihr Lieben, ich möchste ein Abfrage bauen. Die Abfrage soll mir zeigen, wo sich grade in Active Directory ein Computer-Objekt befindet, bzw in welcher OU? Könnt ihr mir da helfen bitte. Ich würde ja auf "Get-ADComputer" tippen. Danke MFG Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 26. April 2012 Melden Teilen Geschrieben 26. April 2012 Hi, das Attribut heißt DistiniguishedName. ein kleiner Ansatz. #import ad Module import-module activedirectory #Läd alle Computer mit allen Attributen $ComputerList=Get-ADComputer -Filter * -Properties * #Liest je Durchlauf ein Object aus foreach ($object in $ComputerList) { #Ausgabe Computername $object.distinguishedName } Das Ganze kannst du dir natürlich in der Schleife aufbereiten - z.B. in ein Array packen und am Ende ein CSV Export machen. PS: Skript funktioniert (Erfordert aber das AD Modul - siehe http://www.msxfaq.de/code/rsat_adpowershell.htm) Zitieren Link zu diesem Kommentar
Afgstyler 10 Geschrieben 26. April 2012 Autor Melden Teilen Geschrieben 26. April 2012 Hi, danke für die schnell Antwort und wie kann ich dass nur für bestimmte OUs abfragen. Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 26. April 2012 Melden Teilen Geschrieben 26. April 2012 So hier auf die Schnelle ein Rohling - dieser ist aber ohne Filter und exportiert dir gleich dein Attribut. Möchtest du nur auf eine OU oder Unterhalb einer OU solltest du dir mal dunter $Get-ADComputer die Optionen für -Searchscope/-Searchbase anschauen. #Exportiert dir alle Computer im Container "Computer" in der Domäne "sub.domain.com" sowie unterhalb des Containers "Computer". Falls es sich um eine OU handelt, dann natürlich "OU=Server,DC=Sub.." usw. $ComputerList=Get-ADComputer -Filter * -Properties * -SearchScope Subtree -SearchBase "CN=Computer,DC=sub,DC=domain,DC=com" #import ad Module import-module activedirectory #Erstellt Arrayliste $computerList_Export=New-Object System.Collections.ArrayList #Läd alle Computer mit allen Attributen $ComputerList=Get-ADComputer -Filter * -Properties * #Liest je Durchlauf ein Object aus foreach ($object in $ComputerList) { #Erstellt ein Object, hier können mehrere Spalten definiert werden $computer = New-Object PSObject -Property @{ distinguishedName='' } #Ausgabe Computername je Durchlauf (Auskommentiert) #$object.distinguishedName #Fügt den Computer ein Attribut zu $computer.distinguishedname=[string]$object.distinguishedName #Fügt der Exportliste den jeweiligen PC hinzu $computerList_Export+=$computer } #Ausgabe Array $ComputerList_export #CSV Export $ComputerList_export | Export-CSV e:\Computerlist.csv Zitieren Link zu diesem Kommentar
Afgstyler 10 Geschrieben 26. April 2012 Autor Melden Teilen Geschrieben 26. April 2012 Hallo, sry das ich so viel schreiben, danke das du mir hilfst. Was Powershell angeht bin sehr neu. Also ich will die Abfrag nicht exportieren. Ich will nur eine Abfrage für eine OU machen die heißst bz "Server". Die Abfrage soll mir nur zeigen welche AD-Computer Objekte in der OU vorhanden sind. Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 26. April 2012 Melden Teilen Geschrieben 26. April 2012 Mein Skript nimmt alle Computer ausm AD und exportiert den Pfad (OU/CN) wo sie Liegen in eine CSV Datei. Da steht der DistinguishedName - dieser beinahltet PC Namen und Speicherort des Objects. viel Spaß beim einarbeiten :) PS: DistinguishedName CN=DC1,OU=Domain Controllers,DC=sub,DC=domain,DC=com Damit weißt du, der Computer "DC1" liegt in der OU Domaincontrollers von der Domain sub.domain.com CN=Client01,CN=Computers,DC=sub,DC=domain,DC=com Damit weißt du, der Computer "Client01" liegt in dem CN Computers in der Domain sub.domain.com Wenn man möchte, kann man sich aus den DistiniguishedName auch direkt den PC Name und OU Angeben lassen - da muss man halt mit Stringfunktionen arbeiten :) und es sich selbst umformatieren. Zitieren Link zu diesem Kommentar
Afgstyler 10 Geschrieben 26. April 2012 Autor Melden Teilen Geschrieben 26. April 2012 Das sehe ich ja auch. Wie kann ich den eine Abfrage für eine Bestimmte "OU" Abfragen. Ich möchste ja nicht den ganzen AD abfragen, das ist nicht mein Ziel. Ich will auch nicht die die Abfrage in exportieren. Er soll mir nur anzeigen in (Powershell) welche AD-ComputerObjekte in der OU vorhanden sind! Ich hätte jetzt gedacht, der Befehl hiss so. Get-ADComputer -SearchBase "OU=Server,DC=sub,DC=pw,DC=de" Das geht leider nicht! Bin Azubi in 1. Lehrjahr XD Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 26. April 2012 Melden Teilen Geschrieben 26. April 2012 Also -Filter ist ein Pflicht Attribut Hier der angepasste Code. Die Domäne heißt frankfurt.autobau.de in dem Beispiel. Heißt deine Domäne nur Firma.local, dann würde das so aussehen: Get-ADComputer -Filter * -Properties * -SearchBase "OU=Domain Controlers,DC=firma,DC=local" #import ad Module import-module activedirectory #Erstellt Arrayliste $computerList_Export=New-Object System.Collections.ArrayList #Läd alle Computer mit allen Attributen $ComputerList=Get-ADComputer -Filter * -Properties * -SearchBase [b][color="Red"]"OU=Domain Controllers,DC=frankfurt,DC=Autobau,dc=de"[/color][/b] #Liest je Durchlauf ein Object aus foreach ($object in $ComputerList) { #Erstellt ein Object, hier können mehrere Spalten definiert werden $computer = New-Object PSObject -Property @{ distinguishedName='' } #Ausgabe Computername je Durchlauf (Auskommentiert) #$object.distinguishedName #Fügt den Computer ein Attribut zu $computer.distinguishedname=[string]$object.distinguishedName #Fügt der Exportliste den jeweiligen PC hinzu $computerList_Export+=$computer } #Ausgabe Array $ComputerList_export #CSV Export $ComputerList_export | Export-CSV e:\Computerlist.csv Hinweis: Blende dir im AD MMC /Management Console mal unter Ansicht "Erweiterte Features" ein. Dann gehst du auf deine OU Server -> rechte Maustaste Eigenschaften Wählst das Register "Attribut Editor" Hier suchst du das Attribut "DistinguishedName", den Wert davon trägst du dann Hinter -Searchbase ein. viele Grüße Admin PS: Schöne Aufgabe fürs 1. Lehrjahr :) An deiner Stelle würde ich versuchen den Code vielleicht noch anzupassen, aufzumotzen und mal ein wenig Lektüre für die Powershell anzuschauen. PowerShell wird immer wichtiger - Win8 und Win 8 Server kommen bald. Hier solltest du dir aber ein wenig Zeit einplanen 2-4 Wochen fürs probieren sollten schon drinne sein um sich mit der PS auseinander zusetzen. Zitieren Link zu diesem Kommentar
Afgstyler 10 Geschrieben 26. April 2012 Autor Melden Teilen Geschrieben 26. April 2012 Danke geht alles soweit. Wie kriege ich das jetzt so hin, dass er keine csv Datei herstellt. Ich möchste die ausgabe nur in Powershell sehen. Ich muss das ganz Script anwenden, ich habe versucht nur bis zu letzten } aber da gibt er keine ausgabe mehr. Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 26. April 2012 Melden Teilen Geschrieben 26. April 2012 Also das habe ich alles weitesgehend kommentiert Einfach die Zeile entfernen: #CSV Export $ComputerList_export | Export-CSV e:\Computerlist.csv Nicht desto trotz, solltest du den Skript verstehen können. Dazu solltest du wissen was ein Array, eine Schleife usw ist. Grüße Admin Zitieren Link zu diesem Kommentar
Afgstyler 10 Geschrieben 26. April 2012 Autor Melden Teilen Geschrieben 26. April 2012 Hallo, habe mir ein Buch schon gekauft, habe leider die Zeit nicht dies in meiner Freizeit zu lesen. Active Directory wissen besitze ich habe die 70-640 Prüfung gemacht. Leider kann ich noch nicht Scripten. Zitieren Link zu diesem Kommentar
Afgstyler 10 Geschrieben 26. April 2012 Autor Melden Teilen Geschrieben 26. April 2012 Hallo, danke das du mir geholfen hast uff :D XD. Ein Buch habe ich schon, leider habe ich die Zeit dazu nicht es zu lesen. Active Directory wissen besitze ich, ich habe die 70-640 Prüfung gemacht. Da ist zwar Scripting abgedeckt aber nartülich nicht alles. Ich hätte noch ein andre Frage, ich habe ein Script geschrieben, mit Auswahlmenu. Wenn ich jetzt eine Zahl eintippe die keine Funktion hat, soll es ein Fehler geben. Passiert leider aber nichts. $identity = [system.Security.Principal.WindowsIdentity]::GetCurrent() $princ = New-Object System.Security.Principal.WindowsPrincipal($identity) if(!$princ.IsInRole( ` [system.Security.Principal.WindowsBuiltInRole]::Administrator)) { $powershell = [system.Diagnostics.Process]::GetCurrentProcess() $psi = New-Object System.Diagnostics.ProcessStartInfo $powerShell.Path $script = $MyInvocation.MyCommand.Path $prm = $script foreach($a in $args) { $prm += ' ' + $a } $psi.Arguments = $prm $psi.Verb = "runas" [system.Diagnostics.Process]::Start($psi) | Out-Null return; } # Bildschirm ‘leeren’ cls Import-Module ActiveDirectory Write-Host ”Active Directory Module geladen!!!” # Das Auswahl-Menu Write-Host “Was willst Du tun?” Write-Host “1. WM01 Raus” Write-Host “2. WM02 Rein” Write-Host “3. Bye” Write-Host ” “ # Die einzige Variable $a = Read-Host “Deine Wahl“ Write-Host ”Vorgang war erfolgreich!” # switch-case | Auswahl Abfangen und Verarbeiten switch ($a) { 1 { Move-ADObject 'CN=WM01,OU=Server,DC=pw,DC=de' -TargetPath 'OU=Server002,DC=pw,DC=de' psexec \\192.168.0.10 cmd /c Gpupdate /force break; } 2 { Move-ADObject 'CN=WM01,OU=Server002,DC=pw,DC=de' -TargetPath 'OU=Server,DC=pw,DC=de' psexec \\192.168.0.10 cmd /c Gpupdate /force break; } 3 { break; } } $b = Read-Host “Bitte drücken Sie eine Taste“ Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 26. April 2012 Melden Teilen Geschrieben 26. April 2012 Windows PowerShell Tip: Using the Switch Statement default {"The color could not be determined."} Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.