Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Auslesen der AD OU meines Rechners per Batch

Mitglied: ahe

ahe (Level 1) - Jetzt verbinden

11.08.2006, aktualisiert 13.07.2007, 11297 Aufrufe, 7 Kommentare

Hallo,

ich versuche per Batch anhand der Standort-OU eines Rechners im ActiveDirectory die Installation eines SW-Pakets mit unterschiedlichen Parametern zu starten.

Ich erkenne derzeit die OU eigentlich nur dadurch, dass die DNS-Settings entsprechend gesetzt sind und bekomme sie mit "ping -n 1 localhost" heraus. Das Resultat ist der Rechnername und der entsprechende Standort. Dies funktioniert allerdings nicht bei neuen Rechnern, die anscheinend etwas Zeit brauchen...

Die Alternative mit "gpresult /c" bringt mir zwar die richtige OU-Strucktur (und diverse andere Info's), allerdings dauert es ewig, daher kann ich es nicht verwenden.

Ich suche nun eine Möglichkeit den String CN=Rechnername,OU=Rechnertyp,OU=Standort,DC=de,DC=corp auch auf andere, schnellere Art und Weise herauszubekommen. Allerdings habe ich bislang weder in den ResourceKits (SupportTools, AdminTools) etwas gefunden, was mir helfen könnte.

Auszug aus dem bisherigen teilweise funktionierendem Code:
01.
set srvalias=meinserver
02.
set site1=one two three four
03.
set site2=ten eleven 
04.
set site3=twenty thirty
05.

06.
for /F "tokens=2* delims=." %%j in ('ping -n 1 localhost ^|findstr /R ".corp"') do (
07.
		rem start subroutine below
08.
		call :CHECKSITE %%j
09.
)
10.
set instshare=\\%srvalias%\%site%
11.

12.
copy "%instshare%\MeineEXE.exe" "%temp%\MeineEXE.exe"
13.
"%temp%\MeineEXE.exe"
14.
goto END
15.

16.
REM ************************************************************************************
17.
REM Subroutine to check the site of the client and set the site to a special site
18.
REM ************************************************************************************
19.
:CHECKSITE
20.
set sitename=%1
21.
for %%i in (%site1%) do (
22.
	if /i %%i==%sitename% set site=one
23.
)
24.
for %%i in (%site2%) do (
25.
if /i %%i==%sitename% set site=ten
26.
)
27.
for %%i in (%site3%) do (
28.
	if /i %%i==%sitename% set site=twenty
29.
)
30.
goto :EOF
31.

32.
:END
33.
exit

mfg
Axel
Mitglied: ahe
11.08.2006 um 16:06 Uhr
Eine andere, allerdings vermutlich ebenfalls nicht Allgemeingültige Lösung:

Ich suche nach dem Distinguished-Name (DN) des Rechners in der Registry (ich vermute allerdings, dass dies eine spezielle GPO in die Registry brennt) und werte dann den Standortnamen aus.
01.
for /F "tokens=3* delims=," %%j in ('reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine" /v Distinguished-Name') do (
02.
		echo %%j > c:\temp\DN.txt
03.
)
04.
	
05.
for /F "tokens=2* delims==" %%i in ('type c:\temp\DN.txt') do (
06.
		set testsite=%%i	
07.

08.
		rem start subroutine below
09.
		call :CHECKSITE %testsite%
10.
)
Vielleicht gibt es ja noch eine etwas bessere Lösung. Die Abfrage mit
01.
gpresult /scope "computer" 
dauert zu lange, da das Ganze beim Starten des Rechners per zentraler GPO erfolgen soll. D. h. die GPO startet auf allen Clients dieses Script und das Script reagiert je nach Standort etwas anders (installiert z. B. eine Anwendung mit versch. Paramtern oder aus verschiedenen standortabhängigen Verzeichnissen).

mfg
Axel
Bitte warten ..
Mitglied: Biber
11.08.2006 um 16:31 Uhr
Moin Axel,
ob diese Reg-Query-Variante allgemeingültig ist, kann ich nicht sagen - bei mir tut es jedenfalls auch.

Dann kannst Du es etwas abkürzen:
01.
@echo off & setlocal
02.
set srvalias=meinserver
03.
set site1=one two three four
04.
set site2=ten eleven 
05.
set site3=twenty thirty
06.
set RegKey="HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine"
07.
for /F "tokens=6 delims=,=" %%j in ('reg query %regkey% /v Distinguished-Name') do call :CHECKSITE %%j
08.
endlocal & set site=%site%
09.
goto :eof
10.
~~~~~~~~~ende Hauptbatch
11.
:CHECKSITE    
12.
for %%i in (%site1%) do if /i %%i==%1  (set "site=one" && goto :eof)
13.
for %%i in (%site2%) do if /i %%i==%1 (set "site=ten" && goto :eof)
14.
for %%i in (%site3%) do if /i %%i==%1 (set "site=twenty" && goto :eof)
Den Leidensdruck mit gpresult verstehe ich... ist wirklich etwas zäh damit....

Gruß
Biber
Bitte warten ..
Mitglied: ahe
27.08.2006 um 01:06 Uhr
Sorry, sorry, sorry Biber

für die späte Antwort, habe leider keine Benachrichtigung erhalten (komisch, bei einem anderen Posts war es so..., liegt vielleicht daran, dass mein Postfach voll war ).

Ich bin z. Zt. in Urlaub und kann daher nicht so richtig testen, Deine Lösung sieht interessant aus... (und wieder deutlich kürzer als meine )

Damit umgehe ich dann elegant das Anlegen/Löschen der temp-Datei (DN.txt), um an die site-Variable zu kommen (irgendwie vergesse ich immer setlocal/endlocal)

Schön ist auch die Optimierung der Subroutine, sollte ebenfalls ein paar ms bringen, da jetzt nicht mehr immer alle Schleifen durchlaufen werden.

mfg
Axel
Bitte warten ..
Mitglied: Biber
27.08.2006 um 02:25 Uhr
Moin Axel,
thx für die Rückmeldung und kein Problem, wenn es mal etwas länger dauert..
...ich antworte ja auch nicht immer innerhalb von Stunden.

Eigentlich würde ich den Beitrag auch gerne schließen, andererseits
- eventuell hat tatsächlich noch jemand ein Tool/ein Skript/einen Tipp als andere gpResult-Alternative.
Oder, was auch eine wesentliche Information wäre, jemand postet: "Diesen Reg-Key gibt es bei mir gar nicht."

Deshalb lasse ich diesen Beitrag - bis zu einem möglichen Einspruch oder neuen Impulsen - erstmal als gelösten, aber offenen Beitrag stehen.

Grüße und schönen Sonntag
Biber
Bitte warten ..
Mitglied: ahe
12.07.2007 um 15:37 Uhr
Hallo Biber,

ich habe das Thema etwas schleifen lassen, allerdings ist jetzt eine ähnliche Anforderung erneut gekommen...

Nachdem ich/wir das Script soweit hatten, dass es funktionieren müßte, kam heraus, dass die AD-Strucktur dann doch etwas anders aussieht...

Ich muß den String von rechts nach links auslesen, da es wohl noch ein paar Unter-OU's gibt. Als wir dann so am Grübeln waren, kam einer unserer AD-Admins und meinte, warum wir nicht einfach den Befehl DSQUERY nehmen, anstatt die Registry auszulesen, das sei doch viel zu umständlich... (Grummel... hab_den_Verein_doch_damals_genau_danach_gefragt... Grummel).

Mit der Befehlsfolge

dsquery computer domainroot -name %computername% -gc

erhalte ich dann genau die Zeile die ich brauche.

CN=Rechnername,OU=Rechnertyp,OU=irgendeineUnter-ou,OU=noch_eineUnter-ou,OU=Standort,DC=de,DC=corp

Allerdings muss ich jetzt die Zeile von rechts nach links auswerten, um den Standort zu erwischen, also irgendwie die Zeile bis zum dritten Komma von hinten lesen...(?)

Scheinbar waren das doch ein paar Ouzos/Biere zu viel gestern...

mfg
Axel
Bitte warten ..
Mitglied: Biber
12.07.2007 um 19:09 Uhr
Moin ahe,

falls das eine Frage sein sollte, nämlich wie Du an die letzten drei Tokens kommst, dann z.B. so:
[Demo am CMD-Prompt (zwei EINzeilige Befehle jeweils in der ">"-Zeile)]
01.
(=19:05:36  D:\temp=)
02.
>set line=CN=Rechnername,OU=Rechnertyp,OU=irgendeineUnter-ou,OU=noch_eineUnter-ou,OU=Standort,DC=de,DC=corp
03.

04.
(=19:05:46  D:\temp=)
05.
>for /f "delims=, tokens=1-11" %a in ("%line%") do @for /f "tokens=1-3" %x in ("%k %j %i %h %g %f %e %d %c %b %a") do @Echo %x %y %z
06.
DC=corp DC=de OU=Standort
Das heißt, die Anzahl der Tokens ("tokens=1-11") kannst Du auch noch höher setzen im Rahmen des M$-Limits von 1 bis 31.
Oder niedriger, wenn es bei Dir auch maximal 7 sein sollten wir in Deiner Beispielzeile.
Wichtig sind Dir ja nur die letzten drei Token , also die Variablen %x %y %z im obigen Beispiel.

Hoffe, das Prinzip is klargeworden....


Grüße
Biber
P.S. Deine Wortspielerei mit "Zuviel Ouzos für OUs.." finde ich schön...
Bitte warten ..
Mitglied: ahe
13.07.2007 um 12:53 Uhr
Hallo Biber,

da hast Du richtig verstanden

Ich denke, ich werde es so versuchen... und ich hoffe die Schachtelungstiefe der OU's nimmt nicht noch mehr zu...

Schön wäre es, ganz ans Ende des Strings zu springen und von Rechts nach Links auswerten zu können...


. . .

Mmh. Wo ich den Satz jetzt geschrieben und gelesen habe ist mir eine Idee gekommen...

Mit der folgenden Befehlszeile bekomme ich genau das, was ich haben will:
echo %line:~-17,3%

Dabei werden die drei Zeichen vom 17. Zeichen von Rechts angezeigt, was genau das ist, was ich gerne hätte..., die Länge der Zeichenkette bis zum entscheidenden String (immer von Rechts gesehen!) ist nämlich immer gleich!

Nun gut, ab Montag hab' ich Urlaub und kann mein Hirn mit Norddeutschem Bier (Jever in Jever) "trainieren"...

mfg
Axel
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

AD: alle Domänen Benutzer - Problem OU CN

gelöst Frage von lupoloBatch & Shell2 Kommentare

Servus, irgendwie klappt das bei mir nicht. Ich glaube es liegt an den Parametern für -SearchBase Ich möchte gerne ...

Windows Server

AD Tool um User in OU zu lokalisieren

Frage von copybyteWindows Server6 Kommentare

Liebe Gemeinde, ich suche eine Möglichkeit um Benutzer im AD, genauer gesagt die OU zu lokalisieren. Natürlich kann ich ...

Windows 7

AD-Benutzer einer Lokalen Gruppe hinzufügen(16Bit OU)

Frage von WIZARDBOYWindows 73 Kommentare

Hallo Liebe IT-Gemeinde ich möchte einen Benutzer aus dem AD zu einer Lokalen Gruppe hinzufügen. Ich habe es bereits ...

Windows Server

Kennwort zurücksetzen AD Tool für Teamleiter OU bezogen

gelöst Frage von opc123Windows Server3 Kommentare

Hallo, ich suche ein Tool, mit dem die Teamleiter das Kennwort von Teilnehmern zurücksetzen können. Knackpunkt für mich wäre, ...

Neue Wissensbeiträge
Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 15 StundenInternet3 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Router & Routing

Zyxel VMG 1312 B30A - Firmwareupdate nur im "privaten" Firefox Modus möglich

Tipp von the-buccaneer vor 1 TagRouter & Routing2 Kommentare

Hatte hier ein Zyxel 1312 das ums verrecken kein Firmwareupdate durchführen wollte. Datei ist auswählbar, dann kommt der Fortschrittskreisel ...

Windows 7

Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019

Information von kgborn vor 2 TagenWindows 75 Kommentare

Kleine Info für die Admins der oben genannten Maschinen. Ab Juli 2019 werden Updates von Microsoft nur noch mit ...

Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Information von ChriBo vor 4 TagenFirewall2 Kommentare

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Heiß diskutierte Inhalte
Hardware
IT-Werkzeugkoffer bis 50,- EUR
gelöst Frage von departure69Hardware53 Kommentare

Hallo. Ich bin als IT-Systembetreuer einer Gemeinde zusätzlich auch der IT-Systembetreuer einer Grund- und Hauptschule. Dort muß ich jedoch ...

Netzwerke
Verteilung von Programmdaten außerhalb des internen Netzwerkes
Frage von mertaufmbergNetzwerke27 Kommentare

Guten Morgen liebe Administratoren, ich versuche zurzeit eine möglichst sichere und einfache Lösung zu suchen, um ein Programmverzeichnis über ...

Datenbanken
PHP Fatal error: Uncaught Error: Call to undefined function oci connect
Frage von PlanitecXDatenbanken19 Kommentare

Hallo Zusammen, ich sitze seit Tagen am Problem das ich keine PHP Anwendung mit Anbindung zu Oracle zum laufen ...

Hardware
PC im Selbstbau, Workstation, mittelklasse Gaming
gelöst Frage von MrRobot1997Hardware19 Kommentare

Hallöchen Leute, ich bin seit einigen Jahren leider nicht mehr wirklich im Bild, wenn es um die Hardware und ...