====== Domainjoin Windows 7 ====== \\ Tip: http://download.uib.de/opsi4.0/products/contribute/full-package/windomain_1.0-2.opsi Method : wmic ===== Domainjoin via add-computer command (Opsi Package) ===== This Script adds a client to a domain using powershell-tool 'add-computer' . Dieses Script fügt einen Client zu einer Domäne hinzu. Genutzt wird dazu das Powershell Tool Add-Computer. You are able to choose the Domain via Product Property by tobias === Properties === Create a OPSI Package with the following product properties: * dom - Domäne /domain * user - Benutzer zum hinzufügen in die Domäne / User with add-domain-rights * password - Passwort des Domänenbenutzers / password of domainadmin === join.ins === [INITIAL] ;Message = "Rechner wird zur Domäne hinzugefügt!" Message = "Join computer to the domain!" [Actions] DefVar $dom$ DefVar $user$ DefVar $password$ set $dom$ = GetProductProperty("dom", " ") set $user$ = GetProductProperty("user", " ") set $password$ = GetProductProperty("password", " ") PatchTextFile_Create_powershell %scriptpath%\join.ps1 ShellBatch_JoinDom [PatchTextFile_Create_powershell] AddLine "$secpasswd = ConvertTo-SecureString '$password$' -AsPlainText -Force" AddLine '$mycreds = New-Object System.Management.Automation.PSCredential ("$user$", $secpasswd)' AddLine 'Add-Computer -DomainName "$dom$" -credential $mycreds' SaveToFile "c:\joinpatched.ps1" [ShellBatch_JoinDom] set-executionpolicy RemoteSigned powershell c:\joinpatched.ps1 del c:\joinpatched.ps1 \\ \\ ===== Domainjoin with an opsi-package ===== This Script will show you how to make a Domainjoin in Windows7 with a selfmade opsi-product. I choose this way because not every auto-installed Client must be a member of the Domain and you are more flexible by installing the Clients. Script by Mike1987 * **Tested with opsi 4.0.1** * **Tested with opsi-winst 4.11.1.6** * **Tested with win7-x64 4.0.1-5 (Windows7-x64 Professional)** **THIS PRODUCT IS ABLE TO BE USED IN WINDOWS 7 32-Bit AND 64-Bit ARCHITECTURES!!!** First of all you have to create a new opsi localboot product (description in Details in the opsi-manual) In this example the name of the opsi-prodcut is windows7-domainjoin Content of **setup.ins** [Initial] Message= Windows7-Domainjoin SetLogLevel=6 ExitOnError=false ScriptErrorMessages=true TraceMode=off if FileExists64("C:\Windows\cmd64.exe") Registry_install /64Bit DosBatch_1 else Registry_install /32Bit DosBatch_1 endif [Registry_install] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] set "AutoAdminLogon" = "1" set "DefaultUsername" = "Administrator" set "DefaultPassword" = "password" [DosBatch_1] %scriptpath%\join.cmd Content of **join.cmd** copy "\\opsiserver\opsi_workbench\windows7-domainjoin\CLIENT_DATA\auto.reg" "C:\tmp\" copy "\\opsiserver\opsi_workbench\windows7-domainjoin\CLIENT_DATA\join.vbs" "C:\tmp\" copy "\\opsiserver\opsi_workbench\windows7-domainjoin\CLIENT_DATA\domainjoin.reg" "C:\Windows\System32\" C:\Windows\system32\regedit.exe /S "C:\Windows\system32\domainjoin.reg" shutdown /r /f /t 0 Content of **join.vbs** Const JOIN_DOMAIN = 1 Const ACCT_CREATE = 2 Const ACCT_DELETE = 4 Const WIN9X_UPGRADE = 16 Const DOMAIN_JOIN_IF_JOINED = 32 Const JOIN_UNSECURE = 64 Const MACHINE_PASSWORD_PASSED = 128 Const DEFERRED_SPN_SET = 256 Const INSTALL_INVOCATION = 262144 strDomain = "DOMAINNAME" ' Windowsdomain strPassword = "DOMAINADMIN" ' Password strUser = "ADMINPASSWORD" ' Domainadmin Set objNetwork = CreateObject("WScript.Network") strComputer = objNetwork.ComputerName Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _ strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _ strComputer & "'") ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _ strPassword, strDomain & "\" & strUser, NULL, _ JOIN_DOMAIN + ACCT_CREATE) Set WSHShell = WScript.CreateObject("WScript.Shell") WshShell.Run "shutdown.exe -r -t 0" Wscript.Quit Content of **domainjoin.reg** Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters] "ServiceDll"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\ 00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\ 77,00,6b,00,73,00,73,00,76,00,63,00,2e,00,64,00,6c,00,6c,00,00,00 "ServiceDllUnloadOnStop"=dword:00000001 "EnablePlainTextPassword"=dword:00000000 "EnableSecuritySignature"=dword:00000001 "RequireSecuritySignature"=dword:00000000 "OtherDomains"=hex(7):00,00 "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] @="C:\\tmp\\join.vbs" Content of **auto.reg** Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "AutoAdminLogon"="1" "DefaultUsername"="Administrator" "DefaultPassword"="password" All these files (a total of 5) have to be copied to the **//windows7-domainjoin/CLIENT_DATA/** directory. The build the product with **opsi-makeproducfile** an install it with **opsi-package-manager -i windows7-domainjoin_1.0-1.opsi** \\ \\ ===== Domainjoin with a Samba PDC ===== by chewbacca tested by: //[[hungerharke@gmx.de|Thomas_H]] 2011/11/21 14:31// Edit the /opt/pcbin/install/win7/custom/unattend.xml (or /opt/pcbin/install/win7-x64/custom/unattend.xml): Const JOIN_DOMAIN = 1 Const ACCT_CREATE = 2 Const ACCT_DELETE = 4 Const WIN9X_UPGRADE = 16 Const DOMAIN_JOIN_IF_JOINED = 32 Const JOIN_UNSECURE = 64 Const MACHINE_PASSWORD_PASSED = 128 Const DEFERRED_SPN_SET = 256 Const INSTALL_INVOCATION = 262144 strDomain = "Windowsdomain" ' hier die Windowsdomain strPassword = "very secret" ' very secret strUser = "Domainadmin" ' Domainadmin Set objNetwork = CreateObject("WScript.Network") strComputer = objNetwork.ComputerName Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _ strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _ strComputer & "'") ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _ strPassword, strDomain & "\" & strUser, NULL, _ JOIN_DOMAIN + ACCT_CREATE) Set WSHShell = WScript.CreateObject("WScript.Shell") WshShell.Run "shutdown.exe -r -f -t 3" set shell = WScript.CreateObject("WScript.Shell") windir = shell.ExpandEnvironmentStrings("%windir%") set filesys = CreateObject ("Scripting.FileSystemObject") set tempFile = filesys.Getfile(windir & "\system32\join.vbs") tempfile.Delete Wscript.Quit and copy it to /opt/pcbin/install/win7/opsi. Create a file name "default.reg" === default.reg === Windows Registry Editor Version 5.00 ;Insert Samba Patch [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters] "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000 ;join Domain at first start [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] "firstrun"="wscript.exe \"join.vbs\"" and copy it to /opt/pcbin/install/win7/opsi. Create a file named "21_reg.cmd" === 21_reg.cmd === rem --- Win7samba Patch and Join Script echo [%date% %time%] copy -s "%script_drive%\opsi\join.vbs" "%SystemRoot%\System32\join.vbs" copy "%script_drive%\opsi\join.vbs" "%SystemRoot%\System32\join.vbs" echo [%date% %time%] Executing: regedit /s "%script_drive%\opsi\default.reg" regedit /s "%script_drive%\opsi\default.reg" and copy it to /opt/pcbin/install/win7/opsi/postinst.d Set the rights of all three files to user opsiconfd:pcpatch ----