Verschieben Sie Computerkonten in großen Mengen in eine neue Organisationseinheit

9

Ich habe eine Organisationseinheit mit ungefähr 2500 Computern. Ich muss 580 von ihnen in eine andere Organisationseinheit verschieben. Gibt es eine Möglichkeit, dies mit einer Batch-Datei zu tun? Ich habe eine Textdatei mit den Computernamen (nicht dem vollqualifizierten Domänennamen).

Grauer Smoking
quelle

Antworten:

9
FOR /f %%i in (C:\path\to\textfile.txt) do (

  dsquery computer -name %%i | dsmove -newparent OU=newOU,DC=domain,DC=com

)

Das sollte sich für Sie darum kümmern.

edit: Es ist schon eine Weile her, dass ich dsmove verwenden musste :) Es benötigt den DN des Objekts, das Sie verschieben, also habe ich die dsquery vor einer Pipe hinzugefügt, um den DN aus der Liste zu erhalten und ihn dann weiterzuleiten zu bewegen. Dies sollte jetzt für eine Liste nur von NetBIOS-Namen gut funktionieren.

MDMarra
quelle
+1 für 1 Befehl
Nixphoe
1

Ein kleiner Fehler in Nixphoes Antwort - tovs dound ein fehlenderdo

FOR /f %%a in (file.txt) do dsquery computer -name %%a >> fqdnfile.txt

FOR /f %%b in (fqdnfile.txt) do dsmove %%b -newparent OU=newOU,DC=domain,DC=local
Sadsad
quelle
1
Willkommen bei ServerFault. Bitte zögern Sie nicht, bestehende Beiträge vorzuschlagen . Diese Vorschläge werden von der Community zur Genehmigung geprüft.
Jscott
1

Angenommen, Sie haben die Namen Ihrer Computer in einer Textdatei und 1 in jeder Zeile. Führen Sie den folgenden Befehl aus, um die fqdn von ihnen zu exportieren

FOR /f %%a in (file.txt) DO dsquery computer -name %%a >> fqdnfile.txt

Führen Sie dann den folgenden Befehl aus, um sie zu verschieben. Bitte verwenden Sie den Befehl echo in lue von dsmove, um dies zuerst zu testen

FOR /f %%b in (fqdnfile.txt) DO dsmove %%b -newparent OU=newOU,DC=domain,DC=local

Probieren Sie es aus. Lassen Sie mich wissen, wenn es nicht funktioniert.

Nixphoe
quelle
1
Sie sollten den FQDN nicht für dsmove afaik benötigen.
MDMarra
Süß, musste noch nie in großen Mengen bewegt werden. Aber ich habe viel über den Befehl gelesen. Gut zu wissen! Ich bin froh, dass ich der gleichen Antwort nahe gekommen bin, die du getan hast :)
Nixphoe
1
@Grey Tux Sie sollten das Skript cmdnicht ausführen powershell.
Jscott
1
es muss% a statt %% a sein
Gray Tux
1
Ja, zwei% sind, wenn Sie es aus einer Batch-Datei ausführen. Ein% ist, wenn Sie es von der Kommandozeile aus
ausführen
0

Kleine Schritt für Schritt für neue Administratoren: Holen Sie sich die Datei file.txt, in der die Computernamen dort pro Zeile aufgeführt sind.

PC-001
PC-002
PC-003

Öffnen Sie CMD und stellen Sie sicher, dass sich Ihre Zeile am selben Speicherort wie Ihre Datei file.txt befindet. Fügen Sie dann die folgende Zeile ein

FOR /f %a in (file.txt) DO dsquery computer -name %a >> fqdnfile.txt

Dadurch wird eine Datei fqdnfile.txt am selben Speicherort wie Ihre Datei.txt erstellt

Dadurch wird fqdnfile.txt mit Distinguish-Namen analysiert (einer pro Zeile).

HINWEIS: Sie sollten doppelt %% für BAT-Dateien und einfach% für CMD verwenden

Führen Sie dann die folgende Zeile aus.

FOR /f %b in (fqdnfile.txt) DO dsmove %b -newparent "OU=COMPUTERS,OU=My Bus,DC=Domain,DC=com"

HINWEIS: Ihr Unterscheidungsname sollte in "" eingeschlossen sein, wenn Sie Leerzeichen in Namen haben, z. B. Mein Bus

Führen Sie die folgende Zeile aus, um zu überprüfen, ob alles korrekt verschoben wurde

FOR /f %a in (file.txt) DO dsquery computer -name %a >> location.txt
Matt
quelle