Voor een client migratie (Windows XP SP2/3 naar Windows 7 SP1) heb ik een WDS (Windows Deployment Services) omgeving opgezet met MDT2010. Image gemaakt en drivers geimporteerd. Kan met succes een client voorzien van een nieuwe Windows 7 installatie.
Voor het toevoegen van een client aan het domein, gebruik ik een script wat aan het einde van de sequence draait:
Nu is dit een script wat zijn werk doet
Nu zou ik willen toevoegen dat het script op basis van de hostname bepaald in welke OU de client terecht komt met een soort van "IF + DO + OR" functie (Gaat om 4 verschillende OU's: 2 bedrijven met een Desktop en een Notebook OU).
Bijvoorbeeld:
IF Hostname: 1234AA***** DO OU: 1234AA
IF Hostname: 1234AB***** DO OU: 1234AB
enz.
(De ***** is een reeks getallen van de client zelf, die is uniek voor elke client. Alleen de eerste 6 characters zijn een vast gegeven)
Voor het resolven van de hostname, heb ik dit script gevonden:
Is er een idee hoe dit het mooiste opgelost kan worden?
Voor het toevoegen van een client aan het domein, gebruik ik een script wat aan het einde van de sequence draait:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| On Error Resume Next ' This script joins the current computer to a domain, using specified user and placing it in specified OU ' Created by Sole Viktor - sole@sole.dk ' Set these variables strDomain = "DOMEIN" ' Domain to logon strPassword = "WACHTWOORD" ' Service account logon password strUser = "GEBRUIKERSNAAM" ' Service account strOU = "COMPUTEROU" ' OU to place computer in ' Constants to choose from when joining 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 Set objNetwork = CreateObject("WScript.Network") strComputer = objNetwork.ComputerName ' Join Domain Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _ strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _ strComputer & "'") ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _ strPassword, strDomain & "\" & strUser, strOU, _ JOIN_DOMAIN + ACCT_CREATE + DOMAIN_JOIN_IF_JOINED) Select Case ReturnValue Case 0 Status = "Success" Case 2 Status = "Missing OU" Case 5 Status = "Access denied" Case 53 Status = "Network path not found" Case 87 Status = "Parameter incorrect" Case 1326 Status = "Logon failure, user or pass" Case 1355 Status = "Domain can not be contacted" Case 1909 Status = "User account locked out" Case 2224 Status = "Computer Account allready exists" Case 2691 Status = "Allready joined" Case Else Status = "UNKNOWN ERROR " & ReturnValue ' Show Status WScript.Echo "Join domain status: " & Status End Select |
Nu is dit een script wat zijn werk doet
Nu zou ik willen toevoegen dat het script op basis van de hostname bepaald in welke OU de client terecht komt met een soort van "IF + DO + OR" functie (Gaat om 4 verschillende OU's: 2 bedrijven met een Desktop en een Notebook OU).
Bijvoorbeeld:
IF Hostname: 1234AA***** DO OU: 1234AA
IF Hostname: 1234AB***** DO OU: 1234AB
enz.
(De ***** is een reeks getallen van de client zelf, die is uniek voor elke client. Alleen de eerste 6 characters zijn een vast gegeven)
Voor het resolven van de hostname, heb ik dit script gevonden:
code:
1
2
3
4
| Set wshShell = CreateObject( "WScript.Shell" ) strRegValue = "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Hostname" strHostName = wshShell.RegRead( strRegValue ) WScript.Echo "Host Name: " & strHostName |
Is er een idee hoe dit het mooiste opgelost kan worden?