Zum Inhalt wechseln


Foto

AD Powershell Befehl / Filter


  • Bitte melde dich an um zu Antworten
10 Antworten in diesem Thema

#1 kleiner-romeo

kleiner-romeo

    Newbie

  • 65 Beiträge

 

Geschrieben 15. Dezember 2016 - 15:48

Hallo zusammen,

 

ich bin auf der suche nach einem Powershell Befehl bzw. dem Filter um Computer im AD entsprechend dem Betriebssystem von einer OU in die andere zu schieben. Also z.B. Windows 10 Clients in die OU W10 und Windows 7 Clients in die OU W7

 

Hier modifiziert ein Aufräum Script was benutzt wird um Computer bei denen sich lange keiner mehr angemeldet hat in eine Aufräum OU zu schieben. Vermutlich kann ich dann den Filter mit enabled weglassen? 

 

Get-ADComputer -Filter {(enabled -eq $true)-and (???)} -Properties ?? | Select-Object ??? | Export-Csv C:\Temp\ad.csv -NoTypeInformation -Encoding UTF8
Get-ADComputer -Filter {(enabled -eq $true)-and (???)} -SearchBase "DC=Eins,DC=Zwei,DC=de" |
Get-ADComputer -Filter {(enabled -eq $true)} -SearchBase "DC=Eins,DC=Zwei,DC=de" | Move-ADObject -Targetpath "OU=W10,OU=Clients,DC=Eins,DC=Zwei,DC=de"

 
 
Danke für die Hilfe!
 
Gruß
 
Romeo

TS: Netzwerkinfrastruktur Server 2008
MCITP: Enterprise Desktop Administrator Windows 7

#2 Dukel

Dukel

    Board Veteran

  • 8.909 Beiträge

 

Geschrieben 15. Dezember 2016 - 15:49

Wieso will man die OS Versionen in OUs aufteilen?


Stop making stupid people famous.


#3 NilsK

NilsK

    Expert Member

  • 11.170 Beiträge

 

Geschrieben 15. Dezember 2016 - 16:15

Moin,

 

für das mit den "verwaisten" Computern gibt es eine fertige Lösung ohne PowerShell: http://www.joeware.n...ldcmp/index.htm

 

Die andere Sache mit dem Filter ließe sich über den Schalter -LDAPFilter erledigen. Beispiel aus der Onlinehilfe:

Get-ADComputer -LDAPFilter "(name=*laptop*)" -SearchBase "CN=Computers,DC=Fabrikam,DC=com"

Der LDAP-Filter wäre dann etwas wie (operatingSystem=Windows 7*).

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#4 blub

blub

    Moderator

  • 7.570 Beiträge

 

Geschrieben 15. Dezember 2016 - 16:15

Wieso will man die OS Versionen in OUs aufteilen?

 

z.b. verschiedene PolicySets

 

@Nils: "Operating-System"  bzw. "Operating-System-Version"

https://msdn.microso...7(v=vs.85).aspx


Ein Kluger bemerkt alles, Ein Dummer macht über alles eine Bemerkung. (Heinrich Heine)


#5 NilsK

NilsK

    Expert Member

  • 11.170 Beiträge

 

Geschrieben 15. Dezember 2016 - 16:28

Moin,

 

@Nils: Operating-System  bzw. Operating-System-Version

https://msdn.microso...7(v=vs.85).aspx

 

das sind die Display Names (genauer: adminDisplayName). Zur Ansprache braucht man die LDAP-Syntax (genauer: lDAPDisplayName), die Microsoft schlauerweise abweichend gesetzt hat. Mein Beispiel ist korrekt und funktioniert.

 

[Active Directory: LDAP-Feldnamen | faq-o-matic.net]
http://www.faq-o-mat...ldap-feldnamen/

 

[LDAP-Grundlagen für Active Directory | faq-o-matic.net]
http://www.faq-o-mat...tive-directory/

 

Um die LDAP-Filter erst mal ohne PowerShell auszuprobieren, eignet sich die AD-Suche im ADUC, dort dann die "Benutzerdefinierte Suche" und "Erweitert".

 

Gruß, Nils


Bearbeitet von NilsK, 15. Dezember 2016 - 16:31.

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#6 kleiner-romeo

kleiner-romeo

    Newbie

  • 65 Beiträge

 

Geschrieben 16. Dezember 2016 - 08:40

Wieso will man die OS Versionen in OUs aufteilen?

 

Unterschiedliche Policys, könnte man auch mit WMI Filter machen aber ist halt so gewollt das die in Unterschiedlichen OU´s sind.

 

Moin,

 

für das mit den "verwaisten" Computern gibt es eine fertige Lösung ohne PowerShell: http://www.joeware.n...ldcmp/index.htm

 

Die andere Sache mit dem Filter ließe sich über den Schalter -LDAPFilter erledigen. Beispiel aus der Onlinehilfe:

Get-ADComputer -LDAPFilter "(name=*laptop*)" -SearchBase "CN=Computers,DC=Fabrikam,DC=com"

Der LDAP-Filter wäre dann etwas wie (operatingSystem=Windows 7*).

 

Gruß, Nils

 

Wäre es für den LDAP Filter nicht besser mit der Version zu arbeiten? (operatingSystemVersion=10.0) z.B.

Also so:

Get-ADComputer -LDAPFilter (OperatingSystemVersion=10.0) -SearchBase "OU=Clients,DC=Contoso,DC=com" | Move-ADObject -Targetpath "OU=W10,OU=Clients,DC=Contoso,DC=com" | Export-Csv C:\Temp\ad.csv -NoTypeInformation -Encoding UTF8

Und der der CSV Export das man sieht er hat was gemacht.


TS: Netzwerkinfrastruktur Server 2008
MCITP: Enterprise Desktop Administrator Windows 7

#7 NilsK

NilsK

    Expert Member

  • 11.170 Beiträge

 

Geschrieben 16. Dezember 2016 - 08:46

Moin,

 

Wäre es für den LDAP Filter nicht besser mit der Version zu arbeiten? (operatingSystemVersion=10.0) z.B.

 

probier es aus. Mit dem AD-Benutzer und -Computer siehst du ja, ob der Filter das macht, was du brauchst. Aber Vorsicht: Das sind alles Textfelder, keine numerischen Werte. Du kannst bei Bedarf vorne und hinten Sternchen als Wildcard angeben.

 

Gruß, Nils


Bearbeitet von NilsK, 16. Dezember 2016 - 08:47.

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#8 daabm

daabm

    Expert Member

  • 1.981 Beiträge

 

Geschrieben 16. Dezember 2016 - 16:53

Unterschiedliche Policys, könnte man auch mit WMI Filter machen aber ist halt so gewollt das die in Unterschiedlichen OU´s sind.


Tip aus der Praxis: WMI Filter sind zuverlässiger, die laufen nämlich immer und sind nicht abhängig von AD-seitigen Skripts. Außerdem muß der Rechner danach nicht neu booten, wie das beim Verschieben der Fall ist.

Aber jeder ist seines Glückes Schmied :)
  • NorbertFe und kleiner-romeo gefällt das

Greetings/Grüße, Martin

Mal ein gutes Buch über GPOs lesen? Oder ein kleines, aber feines Blog darüber?

Und wenn mir die IT mal auf die Nerven geht - coke bottle design refreshment (-:


#9 Dukel

Dukel

    Board Veteran

  • 8.909 Beiträge

 

Geschrieben 16. Dezember 2016 - 19:05

Tip aus der Praxis: WMI Filter sind zuverlässiger, die laufen nämlich immer und sind nicht abhängig von AD-seitigen Skripts. Außerdem muß der Rechner danach nicht neu booten, wie das beim Verschieben der Fall ist.

Aber jeder ist seines Glückes Schmied :)

 

Und bei einem Upgrade eines Rechners muss man nicht daran denken diesen im AD zu verschieben.


Stop making stupid people famous.


#10 hell-boy

hell-boy

    Newbie

  • 3 Beiträge

 

Geschrieben 23. Dezember 2016 - 11:59

Für das verschieben veralteter bzw. sich lange nicht mehr gemeldeter Clients möchte ich nochmal einen weiteren Ansatz in den Raum werfen.

Als Beispiel: Alle Clients, die sich seit länger als 30 Tagen nicht gemeldet haben in eine OU verschieben

$days = (Get-Date).AddDays(-30)
Get-ADComputer -Filter {lastLogondate -le $days} -properties *| Move-ADObject -Targetpath "OU=WelcherNameAuchImmer,OU=Clients,DC=Contoso,DC=com"


#11 NilsK

NilsK

    Expert Member

  • 11.170 Beiträge

 

Geschrieben 23. Dezember 2016 - 16:24

Moin,

 

Als Beispiel: Alle Clients, die sich seit länger als 30 Tagen nicht gemeldet haben in eine OU verschieben

 

das kann OldCMP, das ich oben empfohlen habe, ebenfalls. Es ist viel schneller als die PowerShell, hat einen Schutzmechanismus vor "versehentlichem" Ausführen, eine Reporting-Funktion und bietet auch noch eine Reihe anderer Vorteile. Muss man natürlich nicht nutzen, ist aber sowas wie das Ei des Kolumbus für diese Sorte Aufgaben. ;)

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!