Jump to content

Powershell Abfrage


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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)

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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“

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...