Leef vandaag! Wat gisteren gebeurde is voorbij, en wat morgen komt zien we dan wel weer
Systeemspecificaties
Veel eenvoudiger te beheren en onderhouden
Geef even aan over welk OS we hier praten
MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B
We praten hier over Windows 7 clients van een Server 2008 R2 netwerk.Question Mark schreef op maandag 07 november 2011 @ 14:10:
Ik zou compleet afstappen van dergelijke scripts en hiervoor (mits het OS het toelaat) overstappen op Group Policy Preferences om printers te deployen. Via item-level targeting kun je dan bepalen welke computer(naam) welke printer krijgt.
Veel eenvoudiger te beheren en onderhouden
Geef even aan over welk OS we hier praten
Ik heb even gekeken naar de optie 'voorkeuren -> printers' binnen GPMC.
Zoals ik het nu zie zou ik voor iedere printer een GPO moeten maken en die laten toepassen op basis van groepslidmaatschap. Dat zou minder handig zijn dan het huidige systeem. Daarin koppelt het loginscript alle printers op basis van printergroepen die aan een machine hangen.
[ Voor 9% gewijzigd door magic_nl op 07-11-2011 14:56 ]
Leef vandaag! Wat gisteren gebeurde is voorbij, en wat morgen komt zien we dan wel weer
Systeemspecificaties
magic_nl schreef op maandag 07 november 2011 @ 14:54:
[...]
Zoals ik het nu zie zou ik voor iedere printer een GPO moeten maken en die laten toepassen op basis van groepslidmaatschap.
Gewoon een group policy aanmaken, binnen de "preferences / voorkeuren" de printers defineren en dan per printer middels item-level targeting regelen welke werkplek welke printer krijgt. klik voor uitleg klik2
[ Voor 6% gewijzigd door Question Mark op 07-11-2011 15:08 ]
MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B
Hoewel ik het gebruik van Group Policy Preferences (GPP) toejuich, zou ik niet meteen GPP inzetten om alleen die printer te koppelen.
Ik zou een onderzoek doen naar het vervangen van het login script door GPP en bij positief onderzoek resultaat pas alles omzetten. als je Adhoc deze functie met GPP maakt, kan het zomaar zijn dat je voor elke type instelling een nieuwe methode introduceert. (login script, GPP, GPO, wksstartscript etc).
Gebruik het minimale aantal methodes.
[VBS]
Als je een Distinguished Name (DN) van een werkstation uit AD wil, ik zou het volgende doen:
1
2
| Set objSysInfo = CreateObject("ADSystemInfo")
Wscript.Echo objSysInfo.ComputerName |
Deze methode is domein en OU onafhankelijk.
Het stukje code dat je plakt geeft een incomplete DN ( mist "CN=" voor je computernaam.)
verder kan ik niet inschatten hoe je verder die DN gebruikt.
h2h
Sem
De code mist volgens mij niet de CN. Deze wordt ingevuld door de EnvString("COMPUTERNAME") te combineren met de OU informatie.Semt-x schreef op maandag 07 november 2011 @ 15:40:
[GPP]
Hoewel ik het gebruik van Group Policy Preferences (GPP) toejuich, zou ik niet meteen GPP inzetten om alleen die printer te koppelen.
Ik zou een onderzoek doen naar het vervangen van het login script door GPP en bij positief onderzoek resultaat pas alles omzetten. als je Adhoc deze functie met GPP maakt, kan het zomaar zijn dat je voor elke type instelling een nieuwe methode introduceert. (login script, GPP, GPO, wksstartscript etc).
Gebruik het minimale aantal methodes.
[VBS]
Als je een Distinguished Name (DN) van een werkstation uit AD wil, ik zou het volgende doen:
code:
1 2Set objSysInfo = CreateObject("ADSystemInfo") Wscript.Echo objSysInfo.ComputerName
Deze methode is domein en OU onafhankelijk.
Het stukje code dat je plakt geeft een incomplete DN ( mist "CN=" voor je computernaam.)
verder kan ik niet inschatten hoe je verder die DN gebruikt.
h2h
Sem
1
| strDN = EnvString("COMPUTERNAME") & ",OU=OU1,DC=Domain,DC=local" |
Niet optimaal dus.
Resume voor mij de makkelijkste methode zou zijn jouw oplossing gebruiken om de variabele strDN te vullen. Nu nog zien hoe ik dat in mijn sub Mapprinters doe.
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
| Sub MapPrinters()
Const E_ADS_PROPERTY_NOT_FOUND = "8000500D"
strDN = EnvString("COMPUTERNAME") & ",OU=OU1,DC=Domain,DC=local"
strPrintServerName = "Printserver"
arrDefaultPrinters = Array("Printer1","Printer2")
boolDefaultPrinterIsSet = False
Set objComputer = GetObject ("LDAP://CN=" & strDN)
Set WshNetwork = CreateObject("WScript.Network")
arrMemberOf = objComputer.GetEx("memberOf")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
'WScript.Echo "The memberOf attribute is not set."
Else
If NoDefaultPrinterChange(arrMemberOf) = True Then
boolDefaultPrinterIsSet = True
End If
For Each Group In arrMemberOf
strGroupName = CleanUp(Group)
If UCase(Left(strGroupName, 3)) = "PR_" Then
strPrinterName = Right (strGroupName, Len(strGroupName) - 3)
For Each Printer In arrDefaultPrinters
If boolDefaultPrinterIsSet <> True Then
If strPrinterName = Printer Then
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintServerName & "\" & strPrinterName
WshNetwork.SetDefaultPrinter "\\" & strPrintServerName & "\" & strPrinterName
boolDefaultPrinterIsSet = True
Else
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintServerName & "\" & strPrinterName
WshNetwork.SetDefaultPrinter "\\" & strPrintServerName & "\" & strPrinterName
End If
Else
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintServerName & "\" & strPrinterName
End If
Next
End If
Next
End If
End Sub |
Leef vandaag! Wat gisteren gebeurde is voorbij, en wat morgen komt zien we dan wel weer
Systeemspecificaties
(Set objComputer = GetObject ("LDAP://CN=" & strDN).
Hoewel ik erg veel verbeterpunten zie (die code vind ik storend slecht.., advies aan meelezers: gebruik getoonde code NIET!) zal ik me tot het functionele vraagstuk beperken, en alleen code opleveren die niet verstoord wordt door een andere OU structuur.
vervang regel 4 t/m 9 met dit:
1
2
3
4
5
6
| strPrintServerName = "Printserver"
arrDefaultPrinters = Array("Printer1","Printer2")
boolDefaultPrinterIsSet = False
Set objSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject ("LDAP://" & objSysInfo.ComputerName)
Set WshNetwork = CreateObject("WScript.Network") |
Dan is het bepalen van je AD computer object Domein en OU onafhankelijk.
h2h
Sem
Eens en eens.Semt-x schreef op maandag 07 november 2011 @ 15:40:
[GPP]
Ik zou een onderzoek doen naar het vervangen van het login script door GPP en bij positief onderzoek resultaat pas alles omzetten.
....
Gebruik het minimale aantal methodes.
Maar aangezien TS al aangeeft zich inhoudelijk niet echt te kunnen redden met de huidige oplossing en het feit dat de huidige manier toch al aangepast moet gaan worden is dit wel het moment om over te stappen naar een "moderne standaard".
[/offtopic]
MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B
vervang regel 4 t/m 9 met dit:
1
2
3
4
5
6
| strPrintServerName = "Printserver"
arrDefaultPrinters = Array("Printer1","Printer2")
boolDefaultPrinterIsSet = False
Set objSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject ("LDAP://" & objSysInfo.ComputerName)
Set WshNetwork = CreateObject("WScript.Network") |
/quote]
Zojuist het script aangepast en getest op zowel Windows 7 als XP. Werkt in beide gevallen perfect.
Dank voor de hulp.
Leef vandaag! Wat gisteren gebeurde is voorbij, en wat morgen komt zien we dan wel weer
Systeemspecificaties