<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=AutoIt%3AnetdomJoin</id>
	<title>AutoIt:netdomJoin - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=AutoIt%3AnetdomJoin"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=AutoIt:netdomJoin&amp;action=history"/>
	<updated>2026-04-28T05:40:59Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=AutoIt:netdomJoin&amp;diff=9216&amp;oldid=prev</id>
		<title>BLinz2: Textersetzung - „&lt;comments&gt;“ durch „&lt;comments /&gt;“</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=AutoIt:netdomJoin&amp;diff=9216&amp;oldid=prev"/>
		<updated>2017-08-06T18:51:09Z</updated>

		<summary type="html">&lt;p&gt;Textersetzung - „&amp;lt;comments&amp;gt;“ durch „&amp;lt;comments /&amp;gt;“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategorie:AutoIt]][[Kategorie:Windows]][[Kategorie:Windows_XP]][[Kategorie:Windows_Server_2008]][[Kategorie:Windows_Vista]][[Kategorie:Windows_7]][[Kategorie:Batch]][[Kategorie:Migration]]&lt;br /&gt;
&lt;br /&gt;
Ersatz für das Microsoft Tool &amp;#039;&amp;#039;&amp;#039;netdom /join&amp;#039;&amp;#039;&amp;#039; welches sich unter Windows Vista / 7 nicht mehr so einfach kopieren lässt /aus Freigabe ausführen lässt.&amp;lt;br&amp;gt;&lt;br /&gt;
Download der fertigen EXE: &amp;#039;&amp;#039;&amp;#039;[[ZnilTools:netdomJoin.exe|netdomJoin.exe]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Quellcode:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;AutoIt&amp;quot;&amp;gt;&lt;br /&gt;
#NoTrayIcon&lt;br /&gt;
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
#AutoIt3Wrapper_Icon=znil.ico&lt;br /&gt;
#AutoIt3Wrapper_Compression=4&lt;br /&gt;
#AutoIt3Wrapper_UseUpx=n&lt;br /&gt;
#AutoIt3Wrapper_Change2CUI=y&lt;br /&gt;
#AutoIt3Wrapper_Res_Comment=2011/2012 Bernhard Linz&lt;br /&gt;
#AutoIt3Wrapper_Res_Description=http://znil.net&lt;br /&gt;
#AutoIt3Wrapper_Res_Fileversion=1.0.0.45&lt;br /&gt;
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y&lt;br /&gt;
#AutoIt3Wrapper_Res_LegalCopyright=Freeware&lt;br /&gt;
#AutoIt3Wrapper_Res_SaveSource=y&lt;br /&gt;
#AutoIt3Wrapper_Res_Language=1031&lt;br /&gt;
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y&lt;br /&gt;
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
&lt;br /&gt;
; #INDEX# =======================================================================================================================&lt;br /&gt;
; Title .........: netdomJoin&lt;br /&gt;
; AutoIt Version : 3.6.6.1&lt;br /&gt;
; Language ......: Deutsch&lt;br /&gt;
; Description ...: Nachbau des &amp;quot;Netdom join&amp;quot; Befehls von Windows XP / 2003 für Windows XP bis 2008R2&lt;br /&gt;
;				   Hintergrund ist das der Befehl unter Windows Vista / 7 / 2008 / 2008R2 nur durch Nachinstallation vorhanden ist&lt;br /&gt;
;				   und sich nicht einfach auf einen anderen Rechner kopieren lässt.&lt;br /&gt;
;				   Nutzt WMI Funktion, wurde erweitert um das schreiben einer LOG Datei und das Einlesen einer Text Datei mit den&lt;br /&gt;
;				   Computernamen die umziehen sollen&lt;br /&gt;
; Author(s) .....: Bernhard Linz im November 2011&lt;br /&gt;
;				   Bernhard@znil.net / http://znil.net&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Änderungslog:&lt;br /&gt;
;-------------&lt;br /&gt;
;02.11.2011 - 21:07		_ANSI2OEM Konvertierung bei _LOGMeldung_schreiben entfernt - sonst sehen Umlaut im Logfile falsch aus,&lt;br /&gt;
;						Logfile wird normalerweise unter Windows geöffnet, nicht in der DOS-Box&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; V A R I A B L E N    D E K L A R I E R E N&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Konstanten für JoinDomainOrWorkgroup Methode&lt;br /&gt;
Global Const $cJOIN_DOMAIN 				= 1 			;(0x1) Default. Joins a computer to a domain. If this value is not specified, the join is a computer to a workgroup.&lt;br /&gt;
Global Const $cCREATE_ACCOUNT 			= 2 			;(0x2) Creates an account on a domain.&lt;br /&gt;
Global Const $cDELETE_ACCOUNT 			= 4				;(0x4) Deletes an account when a domain exists.&lt;br /&gt;
Global Const $cJOIN_UPGRADE 			= 16 			;(0x10) The join operation is part of an upgrade from Windows 98 or Windows 95 to Windows 2000 or Windows NT.&lt;br /&gt;
Global Const $cJOIN_ACCOUNT_REGARDLESS 	= 32 			;(0x20) Allows a join to a new domain, even if the computer is already joined to a domain.&lt;br /&gt;
Global Const $cUNSECURED_JOIN			= 64 			;(0x40) Performs an unsecured join.&lt;br /&gt;
Global Const $cMACHINE_PASSWORD			= 128			;(0x80) The machine, not the user, password passed. This option is only valid for unsecure joins.&lt;br /&gt;
Global Const $cDEFER_WRITING			= 256			;(0x100) Writing SPN and DnsHostName attributes on the computer object should be deferred until the rename that follows the join.&lt;br /&gt;
Global Const $cINVOKE_API				= 262144		;(0x40000) The APIs were invoked during install.&lt;br /&gt;
&lt;br /&gt;
;Variablen&lt;br /&gt;
Global $sComputername&lt;br /&gt;
Global $sDomain&lt;br /&gt;
Global $sOU = &amp;quot;&amp;quot;&lt;br /&gt;
Global $bDomainlogin = False&lt;br /&gt;
Global $sUserD, $sPasswordD&lt;br /&gt;
Global $bComputerlogin = False&lt;br /&gt;
Global $sUserO, $sPasswordO&lt;br /&gt;
Global $bReboot = False&lt;br /&gt;
Global $iReboottime = 30&lt;br /&gt;
Global $bLogging = False&lt;br /&gt;
Global $sLoggingFile&lt;br /&gt;
Global $hLoggingFile&lt;br /&gt;
Global $oComputer, $iJoinDomainResultNumber, $sJoinDomainResultText&lt;br /&gt;
Global $g_eventerror = 0 ; Dies ist notwendig, damit Com-Fehler entdeckt werden können. Dies muss später wieder zurückgesetzt werden.&lt;br /&gt;
Global $oMyError&lt;br /&gt;
Global $sCOM_Fehlermeldung&lt;br /&gt;
Global $sTEMP&lt;br /&gt;
Global $oWMIService, $objItems, $objItem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;                          10        20        30        40        50        60        70        80&lt;br /&gt;
;                 12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
Global $sHeader = &amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| netdomJoin.exe - Version &amp;quot; &amp;amp; FileGetVersion(@ScriptName) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| 2011/2012 von Bernhard Linz, http://znil.net&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| Firma:  Bernhard.Linz@datagroup.de&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;| Privat; Bernhard@znil.de&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF&lt;br /&gt;
&lt;br /&gt;
;                             10        20        30        40        50        60        70        80&lt;br /&gt;
;                 	 12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
Global $sHilfeText = &amp;quot;netdomJOIN.exe fügt den aktuellen Computer einer Domäne hinzu. Auch ein&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Domänenwechsel ist möglich (aus einer Domäne direkt in eine andere.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Es ist auch möglich, Remote einen Computer im Netzwerk in die Domäne auf zu&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;nehmen.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;Das Programm ist kompatibel zu Windows XP / 2003 / Vista / 7 / 2008 / 2008R2&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;-------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;netdomJOIN.exe Computer /Domain:Domäne [/OU:OU-Pfad] [/UserD:BenutzerDomäne]&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              [/PasswordD:PasswortDomäne] [/UserO:BenutzerComputer]&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              [/PasswordO:PasswortComputer] [/REBoot[:Sekunden]&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              [/LOG:Pfad_zur_Logdatei]&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; Computer     Name des Computers der in die Zieldomäne aufgenommen werden soll&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              DNS oder NetBIOS Name, LOCALHOST ist ebenfalls erlaubt&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /Domain:     Name der Zieldomäne, folgende Schreibweisen sind möglich: &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              DOMAIN -&amp;gt; NetBIOS Name der Domäne&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              domain.suffix -&amp;gt; DNS-Name der Domäne, empfohlen!&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              domain.suffic\DC.domain.suffix  -&amp;gt; bestimmten Domänencontroller&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;                                                 verwenden&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /OU:         Optional: die OU in der das Computerkonto erstellt werden soll,&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              Beispiel: OU=Test,DC=domain,DC=suffix&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /UserD:      Optional: Benutzername für die Verbindung zur neuen Domäne, z.B.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              DOMAIN\Administrator oder Administrator@domain.suffix&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /PasswordD:  Optional: Passwort des Benutzers für Domänenverbindung&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /UserO:      Optional: Benutzername für die Verbindung zum Computer&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /PasswordO:  Optional: Passwort des Benutzers für Computerverbindung&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /REBoot      Optional: Computer nach erfolgreichen hinzufügen neu starten, z.B.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              /REBoot    -&amp;gt; nach 30 Sekunden neu starten&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              /REBoot:77 -&amp;gt; nach 77 Sekunden neu starten&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; /LOG:        Optional: Pfad zu einer Logdatei. Die Logeinträge werden angehängt.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              /LOG:D:\Logdateien\netdom.txt&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;              /LOG:\\SERVER\LOGS\migration.log&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;-------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;netdomJOIN.exe gibt folgende Fehlercodes zurück die sich in Batchdateien über&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot;die Umgebungsvariable %ERRORLEVEL% abfragen lassen:&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; 0 : Der Befehl wurde erfolgreich ausgeführt&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		&amp;quot; 1 : Es ist ein Fehler aufgetreten&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
		@CRLF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; F U N C T I O N E N / S U B R O U T I N E N&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; _ANSI2OEM löst das Problem mit dem Umlauten und anderen Sonderzeichen. Es wandelt Text so um das er korrekt in der DOS-Box dargestellt wird&lt;br /&gt;
; So können hier im Quellcode auch Umlaute verwendet werden (in den Textausgaben) und diese werden dann korrekt dargestellt&lt;br /&gt;
; Dank an Xenobiologist von AutoIt.de für diese Lösung: http://www.autoit.de/index.php?page=Thread&amp;amp;threadID=9461&amp;amp;highlight=ANSI2OEM&lt;br /&gt;
; #FUNCTION# ======================================================================================&lt;br /&gt;
; Name ..........: _ANSI2OEM($stext)&lt;br /&gt;
; Description ...: Wandelt Text mit Sonderzeichen so um das er in der DOS-Box richtig erscheint,&lt;br /&gt;
;                  z.B. Umlaute etc.&lt;br /&gt;
; Syntax ........: _ANSI2OEM($stext)&lt;br /&gt;
; Parameters ....:&lt;br /&gt;
; Return values .: Der Text im OEM Format&lt;br /&gt;
; Author ........: Xenobiologist&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://www.autoit.de/index.php?page=Thread&amp;amp;threadID=9461&amp;amp;highlight=ANSI2OEM&lt;br /&gt;
; Example .......:&lt;br /&gt;
; =================================================================================================&lt;br /&gt;
Func _ANSI2OEM($stext)&lt;br /&gt;
	$stext = DllCall(&amp;#039;user32.dll&amp;#039;, &amp;#039;Int&amp;#039;, &amp;#039;CharToOem&amp;#039;, &amp;#039;str&amp;#039;, $stext, &amp;#039;str&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	Return $stext[2]&lt;br /&gt;
EndFunc   ;==&amp;gt;_ANSI2OEM&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ======================================================================================&lt;br /&gt;
; Name ..........: _HilfeAusgeben()&lt;br /&gt;
; Description ...: Gibt den Hilfetext aus&lt;br /&gt;
; Syntax ........: _HilfeAusgeben()&lt;br /&gt;
; Parameters ....:&lt;br /&gt;
; Return values .:&lt;br /&gt;
; Author ........: Bernhard Linz / Bernhard@znil.net&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://znil.net&lt;br /&gt;
; Example .......:&lt;br /&gt;
; =================================================================================================&lt;br /&gt;
Func _HilfeAusgeben()&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($sHeader))&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($sHilfeText))&lt;br /&gt;
EndFunc   ;==&amp;gt;_HilfeAusgeben&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ======================================================================================&lt;br /&gt;
; Name ..........: _MeldungAusgebenConsole&lt;br /&gt;
; Description ...: Schreibt eine Zeile in die Console - inklusive Umwandlung mit _ANSI2OEM und @CRLF&lt;br /&gt;
; Syntax ........: _MeldungAusgebenConsole($sMeldungstext)&lt;br /&gt;
; Parameters ....: $sMeldungstext	- Der Text ausgegeben werden soll&lt;br /&gt;
; Return values .:&lt;br /&gt;
; Author ........: Bernhard Linz / Bernhard@znil.net&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://znil.net&lt;br /&gt;
; Example .......:&lt;br /&gt;
; =================================================================================================&lt;br /&gt;
Func _MeldungAusgebenConsole($sMeldungstext)&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($sMeldungstext) &amp;amp; @CRLF)&lt;br /&gt;
EndFunc   ;==&amp;gt;_MeldungAusgebenConsole&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ======================================================================================&lt;br /&gt;
; Name ..........: _LOGMeldung_schreiben()&lt;br /&gt;
; Description ...: Schreibt eine Zeile in die LOG-Datei (wenn $bLogging = True)&lt;br /&gt;
;				   Vor die Zeile wird das Datum und die Uhrzeit eingefügt im Stil von&lt;br /&gt;
;				   2011-11-02 21:05:33 :::: TextTextTextTextTextTextTextTextTextTextTextTextTextText&lt;br /&gt;
; Syntax ........: _LOGMeldung_schreiben($sLogMeldung)&lt;br /&gt;
; Parameters ....: $sLogMeldung 	- Der Text der nach Datum+Uhrzeit erscheinen soll&lt;br /&gt;
; Return values .:&lt;br /&gt;
; Author ........: Bernhard Linz / Bernhard@znil.net&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://znil.net&lt;br /&gt;
; Example .......:&lt;br /&gt;
; =================================================================================================&lt;br /&gt;
Func _LOGMeldung_schreiben($sLogMeldung)&lt;br /&gt;
	If $bLogging = True Then&lt;br /&gt;
		FileWriteLine($sLoggingFile,@YEAR &amp;amp; &amp;quot;-&amp;quot; &amp;amp; @MON &amp;amp; &amp;quot;-&amp;quot; &amp;amp; @MDAY &amp;amp; &amp;quot; &amp;quot; &amp;amp; @HOUR &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @MIN &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @SEC &amp;amp; &amp;quot; ::netdomJoin:: &amp;quot; &amp;amp; $sLogMeldung)&lt;br /&gt;
		;_MeldungAusgebenConsole(_ANSI2OEM(@YEAR &amp;amp; &amp;quot;-&amp;quot; &amp;amp; @MON &amp;amp; &amp;quot;-&amp;quot; &amp;amp; @MDAY &amp;amp; &amp;quot; &amp;quot; &amp;amp; @HOUR &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @MIN &amp;amp; &amp;quot;:&amp;quot; &amp;amp; @SEC &amp;amp; &amp;quot; :::: &amp;quot; &amp;amp; $sLogMeldung) &amp;amp; &amp;quot; Datei:&amp;quot; &amp;amp; $sLoggingFile)&lt;br /&gt;
	EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_MeldungAusgebenConsole&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ======================================================================================&lt;br /&gt;
; Name ..........: _FehlerAusgeben()&lt;br /&gt;
; Description ...: Gibt eine auffällige Fehlermeldung aus mit Überschrift und Fehlertext&lt;br /&gt;
; Syntax ........: _FehlerAusgeben($sFehlerUeberschrift, $sFehlertext)&lt;br /&gt;
; Parameters ....: $sFehlerUeberschrift	-	Die Überschrift zum Fehlertext&lt;br /&gt;
;				   $sFehlertext			-	Die eigentliche Fehlermeldung&lt;br /&gt;
; Return values .:&lt;br /&gt;
; Author ........: Bernhard Linz / Bernhard@znil.net&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://znil.net&lt;br /&gt;
; Example .......:&lt;br /&gt;
; =================================================================================================&lt;br /&gt;
Func _FehlerAusgeben($sFehlerUeberschrift, $sFehlertext)&lt;br /&gt;
	ConsoleWrite(&amp;quot;+----------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;| &amp;quot; &amp;amp; _ANSI2OEM($sFehlerUeberschrift) &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;| &amp;quot; &amp;amp; _ANSI2OEM($sFehlertext) &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FehlerAusgeben&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ======================================================================================&lt;br /&gt;
; Name ..........: MyErrFunc()&lt;br /&gt;
; Description ...: Fängt AutIt Skriptfehler wie z.B. bei Zugriff auf nicht vorhandene COM Objekte ab&lt;br /&gt;
; Syntax ........: MyErrFunc()&lt;br /&gt;
; Parameters ....:&lt;br /&gt;
; Return values .: Meldungstext des Fehlers wie er von Windows übergeben wird&lt;br /&gt;
; Author ........: diverse&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......:&lt;br /&gt;
; Link ..........: http://www.autoit.de&lt;br /&gt;
; Example .......:&lt;br /&gt;
; =================================================================================================&lt;br /&gt;
; COM Fehler abfangen (bei Zugriff auf WMI Schnittstelle)&lt;br /&gt;
Func MyErrFunc()&lt;br /&gt;
	Local $err = $oMyError.number&lt;br /&gt;
	If $err = 0 Then $err = -1&lt;br /&gt;
	$g_eventerror = $err ; Zum Abfragen, nachdem die Funktion beendet ist&lt;br /&gt;
	$sCOM_Fehlermeldung = $oMyError.windescription&lt;br /&gt;
	_FehlerAusgeben(&amp;quot;WMI/COM-Fehler aufgetreten!&amp;quot;,$sCOM_Fehlermeldung)&lt;br /&gt;
	_LOGMeldung_schreiben(&amp;quot;FEHLER - WMI/COM Fehler aufgetreten, breche ab: &amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
	Exit 1&lt;br /&gt;
EndFunc   ;==&amp;gt;MyErrFunc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; H A U P T P R O G R A M M&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$oMyError = ObjEvent(&amp;quot;AutoIt.Error&amp;quot;, &amp;quot;MyErrFunc&amp;quot;) ; COM-Fehlerbehandlung initialisieren&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; H I L F E&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
;testen ob wir überhaupt mit einem Parameter gestartet wurden - sonst Hilfe ausgeben&lt;br /&gt;
If $CmdLine[0] = 0 Then&lt;br /&gt;
	_HilfeAusgeben()&lt;br /&gt;
	Exit&lt;br /&gt;
EndIf&lt;br /&gt;
;testen ob der Parameter 1 ist auf &amp;quot;/?&amp;quot; testen und ebenfalls Hilfe ausgeben&lt;br /&gt;
If $CmdLine[1] = &amp;quot;/?&amp;quot; Then&lt;br /&gt;
	_HilfeAusgeben()&lt;br /&gt;
	Exit&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; / L O G :&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
If StringInStr($CmdLineRaw, &amp;quot;/LOG:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
	;_MeldungAusgebenConsole(&amp;quot;/log gefunden&amp;quot;)&lt;br /&gt;
	For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
		If StringLeft($CmdLine[$i],5) = &amp;quot;/LOG:&amp;quot; Then&lt;br /&gt;
			$sLoggingFile = StringMid($CmdLine[$i],6)&lt;br /&gt;
			$hLoggingFile = FileOpen($sLoggingFile,1)&lt;br /&gt;
			If $hLoggingFile = (-1) Then&lt;br /&gt;
				_FehlerAusgeben(&amp;quot;Fehler Paramter /LOG:&amp;quot;,&amp;quot;Die Logdatei konnte nicht geöffnet / erstellt werden.&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;| Dateipfad: &amp;quot; &amp;amp; $sLoggingFile)&lt;br /&gt;
				Exit 1&lt;br /&gt;
			Else&lt;br /&gt;
				FileClose($hLoggingFile)&lt;br /&gt;
				$bLogging = True&lt;br /&gt;
				;_MeldungAusgebenConsole(&amp;quot;schreibe testmeldung&amp;quot;)&lt;br /&gt;
				;_LOGMeldung_schreiben(&amp;quot;Test&amp;quot;)&lt;br /&gt;
			EndIf&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
Else&lt;br /&gt;
	$bLogging = False&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; C O M P U T E R&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
If $CmdLine[1] = &amp;quot;localhost&amp;quot; Then&lt;br /&gt;
	$sComputername = @ComputerName&lt;br /&gt;
ElseIf StringLeft($CmdLine[1],1) = &amp;quot;/&amp;quot; Then ;an erster Stelle steht ein Parameter - damit können wir nicht um&lt;br /&gt;
	_FehlerAusgeben(&amp;quot;Fehlender Parameter&amp;quot;, &amp;quot;Es wurde kein Computername angegeben&amp;quot;)&lt;br /&gt;
	_LOGMeldung_schreiben(&amp;quot;FEHLER - Es wurde kein Computername angegeben, breche ab: &amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
	Exit 1&lt;br /&gt;
Else&lt;br /&gt;
	If Ping($CmdLine[1],5000) &amp;gt; 0 Then&lt;br /&gt;
		$sComputername = $CmdLine[1]&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;STATUS - Vorgang gestartet für den Computer -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=-&amp;quot;)&lt;br /&gt;
	Else&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;Ping fehlgeschlagen!&amp;quot;,&amp;quot;Der Name kann nicht im Netzwerk erreicht werden:&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;| &amp;quot; &amp;amp; $CmdLine[1])&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;FEHLER - Computer -=&amp;gt; &amp;quot; &amp;amp; $CmdLine[1] &amp;amp; &amp;quot; &amp;lt;=- kann nicht angepingt werden, breche ab: &amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; / D O M A I N :&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
If StringInStr($CmdLineRaw, &amp;quot;/domain:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
	For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
		If StringLeft($CmdLine[$i],8) = &amp;quot;/domain:&amp;quot; Then&lt;br /&gt;
			$sDomain = StringMid($CmdLine[$i],9)&lt;br /&gt;
			;_MeldungAusgebenConsole(&amp;quot;sDomain=&amp;quot; &amp;amp; $sDomain &amp;amp; @CRLF &amp;amp; &amp;quot;StringMid($CmdLine[&amp;quot; &amp;amp; $i &amp;amp; &amp;quot;],9)=&amp;quot; &amp;amp; StringMid($CmdLine[$i],9) &amp;amp; @CRLF &amp;amp; &amp;quot;$CmdLine[&amp;quot; &amp;amp; $i &amp;amp; &amp;quot;]:&amp;quot; &amp;amp; $CmdLine[$i])&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
Else&lt;br /&gt;
	_FehlerAusgeben(&amp;quot;Fehler bei Parametern&amp;quot;,&amp;quot;Es wurde kein &amp;#039;/domain:&amp;#039; angegeben&amp;quot;)&lt;br /&gt;
	_LOGMeldung_schreiben(&amp;quot;FEHLER - Parameter /domain: fehlt, breche ab: &amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
	Exit 1&lt;br /&gt;
EndIf&lt;br /&gt;
If $sDomain = &amp;quot;&amp;quot; Then&lt;br /&gt;
	_FehlerAusgeben(&amp;quot;Fehler bei Parametern&amp;quot;,&amp;quot;Es wurde nichts hinter &amp;#039;/domain:&amp;#039; angegeben&amp;quot;)&lt;br /&gt;
	_LOGMeldung_schreiben(&amp;quot;FEHLER - Parameter /domain: Kein Domänenname hinter dem Parameter &amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
	Exit 1&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; / O U :&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
If StringInStr($CmdLineRaw, &amp;quot;/OU:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
	For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
		If StringLeft($CmdLine[$i],4) = &amp;quot;/OU:&amp;quot; Then&lt;br /&gt;
			$sOU = StringMid($CmdLine[$i],5)&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	If StringInStr($sOU,&amp;quot;DC=&amp;quot;) = 0 Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;Fehler bei &amp;#039;/OU:&amp;#039; gefunden!&amp;quot;,&amp;quot;Die OU Angabe enthält keinen &amp;#039;DC=&amp;#039; Eintrag:&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;| &amp;quot; &amp;amp; $sOU)&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;FEHLER - Parameter /OU: enthält keinen &amp;#039;DC=&amp;#039; Eintrag, breche ab: /OU:&amp;quot; &amp;amp; $sOU)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
	If StringInStr($sOU,&amp;quot;OU=&amp;quot;) = 0 Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;Fehler bei &amp;#039;/OU:&amp;#039; gefunden!&amp;quot;,&amp;quot;Die OU Angabe enthält keinen &amp;#039;OU=&amp;#039; Eintrag:&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;| &amp;quot; &amp;amp; $sOU)&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;FEHLER - Parameter /OU: enthält keinen &amp;#039;OU=&amp;#039; Eintrag, breche ab: /OU:&amp;quot; &amp;amp; $sOU)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
Else&lt;br /&gt;
	$sOU = &amp;quot;&amp;quot;&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; / U S E R D :   -   / P A S S W O R D D : (Domainlogin)&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
If StringInStr($CmdLineRaw, &amp;quot;/UserD:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
	For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
		If StringLeft($CmdLine[$i],7) = &amp;quot;/UserD:&amp;quot; Then&lt;br /&gt;
			$sUserD = StringMid($CmdLine[$i],8)&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	If StringInStr($CmdLineRaw, &amp;quot;/PasswordD:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
		For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
			If StringLeft($CmdLine[$i],11) = &amp;quot;/PasswordD:&amp;quot; Then&lt;br /&gt;
				$sPasswordD = StringMid($CmdLine[$i],12)&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
		$bDomainlogin = True&lt;br /&gt;
	Else&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;Fehler bei /UserD: - Parameter fehlt!&amp;quot;,&amp;quot;Es wurde ein Benutzer, aber kein Passwort angegeben.&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;| UserD: &amp;quot; &amp;amp; $sUserD)&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;FEHLER - Parameter /UserD: Es wurde ein Benutzer aber kein Passwort (Parameter /PasswordD:) angegeben, breche ab:&amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
Else&lt;br /&gt;
	$bDomainlogin = False&lt;br /&gt;
	$sUserD = &amp;quot;&amp;quot;&lt;br /&gt;
	$sPasswordD = &amp;quot;&amp;quot;&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; / U S E R O :   -   / P A S S W O R D O : (Computerlogin)&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
If StringInStr($CmdLineRaw, &amp;quot;/UserO:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
	For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
		If StringLeft($CmdLine[$i],7) = &amp;quot;/UserO:&amp;quot; Then&lt;br /&gt;
			$sUserO = StringMid($CmdLine[$i],8)&lt;br /&gt;
		EndIf&lt;br /&gt;
	Next&lt;br /&gt;
	If StringInStr($CmdLineRaw, &amp;quot;/PasswordO:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
		For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
			If StringLeft($CmdLine[$i],11) = &amp;quot;/PasswordO:&amp;quot; Then&lt;br /&gt;
				$sPasswordO = StringMid($CmdLine[$i],12)&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
		$bComputerlogin = True&lt;br /&gt;
	Else&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;Fehler bei /UserO: - Parameter fehlt!&amp;quot;,&amp;quot;Es wurde ein Benutzer, aber kein Passwort angegeben.&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;| UserO: &amp;quot; &amp;amp; $sUserO)&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;FEHLER - Parameter /UserO: Es wurde ein Benutzer aber kein Passwort (Parameter /PasswordO:) angegeben, breche ab: &amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
Else&lt;br /&gt;
	$bComputerlogin = False&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; / R E B O O T&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
If StringInStr($CmdLineRaw, &amp;quot;/REBoot&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
	If StringInStr($CmdLineRaw, &amp;quot;/REBoot:&amp;quot;) &amp;gt; 0 Then&lt;br /&gt;
		For $i = 1 To $CmdLine[0] Step 1&lt;br /&gt;
			If StringLeft($CmdLine[$i],8) = &amp;quot;/REBoot:&amp;quot; Then&lt;br /&gt;
				$iReboottime = Int(StringMid($CmdLine[$i],9))&lt;br /&gt;
				If $iReboottime &amp;gt; 0 Then&lt;br /&gt;
					$bReboot = True&lt;br /&gt;
				Else&lt;br /&gt;
					_FehlerAusgeben(&amp;quot;Fehler bei /REBoot:&amp;quot;,&amp;quot;Die Zeit hinter /REBoot: wurde nicht erkannt oder ist 0&amp;quot;)&lt;br /&gt;
					_LOGMeldung_schreiben(&amp;quot;FEHLER - Parameter /REBoot: Die Zeit hinter /REBoot: wurde nicht erkannt oder ist 0: &amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
					Exit 1&lt;br /&gt;
				EndIf&lt;br /&gt;
			EndIf&lt;br /&gt;
		Next&lt;br /&gt;
	Else&lt;br /&gt;
		$iReboottime = 30&lt;br /&gt;
		$bReboot = True&lt;br /&gt;
	EndIf&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; D O M Ä N E N B E I T R I T T&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; wenn wir bis hierher gekommen sind haben wir alles um der Domäne beizutreten!&lt;br /&gt;
&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;Bereit für Domänenwechsel!&amp;quot;)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;Computername: &amp;quot; &amp;amp; $sComputername)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;Zieldomäne  : &amp;quot; &amp;amp; $sDomain)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;Ziel OU     : &amp;quot; &amp;amp; $sOU)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;UserD       : &amp;quot; &amp;amp; $sUserD)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;PasswordD   : &amp;quot; &amp;amp; $sPasswordD)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;UserO       : &amp;quot; &amp;amp; $sUserO)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;PasswordO   : &amp;quot; &amp;amp; $sPasswordO)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;Reboot?     : &amp;quot; &amp;amp; $bReboot)&lt;br /&gt;
;~ _MeldungAusgebenConsole(&amp;quot;Reboottime  : &amp;quot; &amp;amp; $iReboottime)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_LOGMeldung_schreiben(&amp;quot;STATUS - Beginne mit der Aufnahme von -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- in die Domäne -=&amp;gt; &amp;quot; &amp;amp; $sDomain &amp;amp; &amp;quot; &amp;lt;=-&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If $bComputerlogin = True Then&lt;br /&gt;
	$objSWbemLocator = ObjCreate(&amp;quot;WbemScripting.SWbemLocator&amp;quot;)&lt;br /&gt;
	If IsObj($objSWbemLocator) = 0 Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;WMI/COM-Fehler aufgetreten!&amp;quot;,&amp;quot;Keine Verbindung zum lokalen WbemScripting.SWbemLocator&amp;quot;)&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;FEHLER - Keine Verbindung zum lokalen WbemScripting.SWbemLocator, breche ab&amp;quot; &amp;amp; $CmdLineRaw)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
	$objSWbemLocator.Security_.AuthenticationLevel = 6&lt;br /&gt;
	$oWMIService = $objSWbemLocator.ConnectServer ($sComputername, &amp;quot;root\CIMV2&amp;quot;, $sUserO, $sPasswordO, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, 128)&lt;br /&gt;
	$objItems = $oWMIService.ExecQuery(&amp;quot;SELECT * FROM Win32_ComputerSystem&amp;quot;)&lt;br /&gt;
	If IsObj($objItems) then&lt;br /&gt;
		For $objItem In $objItems&lt;br /&gt;
			$oComputer = $objItem&lt;br /&gt;
		Next&lt;br /&gt;
	EndIf&lt;br /&gt;
Else&lt;br /&gt;
	$oComputer = ObjGet(&amp;quot;winmgmts:{impersonationLevel=Impersonate}!\\&amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot;\root\cimv2:Win32_ComputerSystem.Name=&amp;#039;&amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot;&amp;#039;&amp;quot;)&lt;br /&gt;
EndIf&lt;br /&gt;
If IsObj($oComputer) = 0 Then&lt;br /&gt;
	_FehlerAusgeben(&amp;quot;WMI/COM-Fehler aufgetreten!&amp;quot;,&amp;quot;Konnte nicht mit WMI am (Remote)Computer verbinden&amp;quot;)&lt;br /&gt;
	_LOGMeldung_schreiben(&amp;quot;FEHLER - Konnte nicht mit WMI am (Remote)Computer verbinden, breche ab&amp;quot;)&lt;br /&gt;
	Exit 1&lt;br /&gt;
EndIf&lt;br /&gt;
; die 35 ist $cJOIN_DOMAIN + $cCREATE_ACCOUNT + $cJOIN_ACCOUNT_REGARDLESS&lt;br /&gt;
_MeldungAusgebenConsole(&amp;quot;Nehme &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; in die Domäne &amp;quot; &amp;amp; $sDomain &amp;amp; &amp;quot; auf ....&amp;quot;)&lt;br /&gt;
_LOGMeldung_schreiben(&amp;quot;STATUS - Verbindung zu WMI Schnittstelle von -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- hergestellt, starte den Beitritt zur Domäne&amp;quot;)&lt;br /&gt;
$iJoinDomainResultNumber = $oComputer.JoinDomainOrWorkGroup($sDomain, $sPasswordD, $sUserD, $sOU, 35)&lt;br /&gt;
$sJoinDomainResultText = &amp;quot;&amp;quot;&lt;br /&gt;
Switch $iJoinDomainResultNumber&lt;br /&gt;
	Case 0&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The domain join completed successfully.&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;ERFOLG - Beitritt von -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- zur Domäne -=&amp;gt; &amp;quot; &amp;amp; $sDomain &amp;amp; &amp;quot; &amp;lt;=- erfolgreich abgeschlossen&amp;quot;&lt;br /&gt;
	Case 5&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The &amp;quot; &amp;amp; $sUserD &amp;amp; &amp;quot; account does not have permissions. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;Most likely this computer was originally joined to the domain with &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;a Account operator account. The account you are using does not have &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;permissions to overwrite the workstation object&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Der Benutzer -=&amp;gt; &amp;quot; &amp;amp; $sUserD &amp;amp; &amp;quot; &amp;lt;=- hat nicht genügend Berechtigungen für die Aufnahme des Computers in die Domäne.&amp;quot;&lt;br /&gt;
	Case 86&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The username or password you specified is incorrect. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;Check the username and password as they appear below. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;If these values are incorrect the image will have to be updated with the current values&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Der Benutzername oder das Passwort stimmen nicht (Benutzer -=&amp;gt; &amp;quot; &amp;amp; $sUserD &amp;amp; &amp;quot; &amp;lt;=-)&amp;quot;&lt;br /&gt;
	Case 87&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The parameter is incorrect&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - JoinDomainOrWorkGroup wurde mit falschen Parametern aufgerufen. Prüfen Sie Ihre Angaben&amp;quot;&lt;br /&gt;
	Case 110&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The system cannot open the specified object&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Das System konnte nicht auf die JoinDomainOrWorkGroup Funktion zugreifen&amp;quot;&lt;br /&gt;
	Case 1323&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;Unable to update the password&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Konnte Passwort für Computerkonto nicht setzen&amp;quot;&lt;br /&gt;
	Case 1326&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;Logon failure: unknown username or bad password&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Anmeldung gescheitert: Unbekannter Benutzername oder Kennwort&amp;quot;&lt;br /&gt;
	Case 1355&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The specified domain either does not exist or could not be contacted&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Die angegebene Domäne existiert nicht oder kann nicht erreicht werden.&amp;quot;&lt;br /&gt;
	Case 1722&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The RPC server is unavailable&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Der RPC Serverdienst konnte nicht erreicht werden&amp;quot;&lt;br /&gt;
	Case 1909&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The &amp;quot; &amp;amp; $sUserD &amp;amp; &amp;quot; account is locked out. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;Most likely someone has tried the password incorrectly too many times. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;The system sometimes will lock the account out if too many simultaneous connection attempts are occuring.&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Das Benutzerkonto -=&amp;gt; &amp;quot; &amp;amp; $sUserD &amp;amp; &amp;quot; &amp;lt;=- ist gesperrt in der Zieldomäne.&amp;quot;&lt;br /&gt;
	Case 2224&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The computer account already exists on the domain and could not be overwritten. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;A workstation object with the same name exists in another OU. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;You will have to have the existing workstation object deleted.&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Es gibt in der Zieldomäne bereits ein Computerkonto mit dem NetBIOS-Namen des Rechners, eventuell in einer anderen OU. Die müssen dieses Konto zuerst löschen.&amp;quot;&lt;br /&gt;
	Case 2453&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;Could not find a domain controller. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;Please make sure all domain controllers are online and that your network access is functional.&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Konnte mich mit keinen Domänenkontroller verbinden. Prüfen Sie die Netzwerkverbindungen.&amp;quot;&lt;br /&gt;
	Case 2102&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The workstation service is not started. Please start this service and try again.&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Der Arbeitstationsdienst ist nicht gestartet - bitte starten und noch einmal versuchen&amp;quot;&lt;br /&gt;
	Case 2691&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;This machine is already joined to a domain. &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;If you wish to join this system to another domain or this domain &amp;quot; &amp;amp; _&lt;br /&gt;
		;						 &amp;quot;again you will first have to unjoin your existing domain.&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Dieser Computer ist bereits Mitglied einer Domäne.&amp;quot;&lt;br /&gt;
	Case 2692&lt;br /&gt;
		;$sJoinDomainResultText = &amp;quot;The machine is not currently joined to a domain.&amp;quot;&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Dieser Computer ist nicht Mitglied einer Domäne.&amp;quot;&lt;br /&gt;
	Case Else&lt;br /&gt;
		$sJoinDomainResultText = &amp;quot;FEHLER - Unbekannter Rückgabewert: &amp;quot; &amp;amp; $iJoinDomainResultNumber&lt;br /&gt;
EndSwitch&lt;br /&gt;
&lt;br /&gt;
_MeldungAusgebenConsole(&amp;quot;Abgeschlossen mit folgendem Ergebnis:&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;Ergebnis: &amp;quot; &amp;amp; $sJoinDomainResultText)&lt;br /&gt;
_LOGMeldung_schreiben($sJoinDomainResultText)&lt;br /&gt;
&lt;br /&gt;
If $iJoinDomainResultNumber = 0 Then&lt;br /&gt;
	If $bReboot = True Then&lt;br /&gt;
		_MeldungAusgebenConsole(&amp;quot;Leite Neustart des Rechners nach &amp;quot; &amp;amp; $iReboottime &amp;amp; &amp;quot; Sekunden ein ...&amp;quot;)&lt;br /&gt;
		_LOGMeldung_schreiben(&amp;quot;STATUS - Computer -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- wird nach &amp;quot; &amp;amp; $iReboottime &amp;amp; &amp;quot; Sekunden neu gestartet.&amp;quot;)&lt;br /&gt;
		If $bComputerlogin = True Then&lt;br /&gt;
			$sTEMP = DriveMapAdd(&amp;quot;&amp;quot;,&amp;quot;\\&amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot;\ADMIN$&amp;quot;, 0, $sUserD, $sPasswordD)&lt;br /&gt;
			If @error &amp;gt; 0 Then&lt;br /&gt;
				_MeldungAusgebenConsole(&amp;quot;Anmeldung am Zielrechner -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- für Neustart gescheitert.&amp;quot;)&lt;br /&gt;
				_LOGMeldung_schreiben(&amp;quot;FEHLER - Anmeldung am Zielrechner -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- für Neustart gescheitert.&amp;quot;)&lt;br /&gt;
				Exit 2&lt;br /&gt;
			EndIf&lt;br /&gt;
		EndIf&lt;br /&gt;
		$sTEMP = RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;shutdown.exe /r /m \\&amp;quot; &amp;amp; $sComputername &amp;amp; &amp;#039; /t &amp;#039; &amp;amp; $iReboottime &amp;amp; &amp;#039; /c &amp;quot;Reboot nach Aufnahme in die Domäne &amp;#039; &amp;amp; $sDomain &amp;amp; &amp;#039;&amp;quot; /f&amp;#039;,&amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
		If $sTEMP &amp;gt; 0 Then&lt;br /&gt;
			_MeldungAusgebenConsole(&amp;quot;shutdown.exe meldet Fehler bei Neustart von -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=-&amp;quot;)&lt;br /&gt;
			_LOGMeldung_schreiben(&amp;quot;FEHLER - shutdown.exe meldet Fehler bei Neustart von -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=-&amp;quot;)&lt;br /&gt;
			Exit 2&lt;br /&gt;
		Else&lt;br /&gt;
			_MeldungAusgebenConsole(&amp;quot;Neustart von -=&amp;gt; &amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- erfolgreich eingeleitet.&amp;quot;)&lt;br /&gt;
			_LOGMeldung_schreiben(&amp;quot;ERFOLG - Neustart von -=&amp;gt;&amp;quot; &amp;amp; $sComputername &amp;amp; &amp;quot; &amp;lt;=- eingeleitet.&amp;quot;)&lt;br /&gt;
		EndIf&lt;br /&gt;
		;DriveMapDel($sTEMP)&lt;br /&gt;
		Exit 0&lt;br /&gt;
	EndIf&lt;br /&gt;
Else&lt;br /&gt;
	Exit 1&lt;br /&gt;
EndIf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--[[Benutzer:BLinz|Bernhard Linz]] ([[Benutzer Diskussion:BLinz|Diskussion]]) 10:24, 15. Jun. 2012 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz2</name></author>
	</entry>
</feed>