Ik ben druk bezig met het maken van een loginscript in VBScript. Hierin worden meerdere drivemapping gemaakt, etc.
Voor bepaalde functies heb ik een verbinding nodig naar het User Object. Deze connect ik op de volgende manier:
Helaas levert dit soms (vooral bij netwerkdrukte) nog weleens een fout op. De fout is dan "The network path was not found". Nou heb ik hiervoor een functie geschreven, om te zorgen dat gebruikers deze foutmelding niet te zien krijgen, maar het script gewoon stopt, namelijk onderstaande:
Na veel zoekwerk op Google en de MSDN pagina's van Microsoft blijkt deze functie de beste oplossing. Echter, ik vind deze oplossing niet de mooiste. Het zou niet nodig moeten zijn om een dergelijke functie te schrijven.
Tijdens mijn zoektochten heb ik op veel pagina's met script voorbeelden gezien dat heel veel mensen op deze manier het User Object benaderen, dus het moet haast wel ergens anders liggen (buiten een scriptfout)
Het script werkt met deze functie naar behoren en vaak komt de fout niet voor, maar ik ben toch benieuwd of iemand van jullie mij kan helpen in deze. Wellicht het aanpassen van instellingen (ik denk daarbij aan een time-out setting) in de Active Directory of een aanpassing aan het script.
Enkele oplossingen die ik gevonden heb leken te werken, waaronder andere manieren van error handling. Niets kwam in de buurt van de oplossing die ik heb gevonden, helaas. Maar ondanks deze oplossing zie ik liever dat het altijd goed zal werken zonder deze functie.
Heeft iemand ideën?
Voor bepaalde functies heb ik een verbinding nodig naar het User Object. Deze connect ik op de volgende manier:
code:
1
| Set oUser = GetObject("WinNT://" & sAdsPathUser & ",user") |
Helaas levert dit soms (vooral bij netwerkdrukte) nog weleens een fout op. De fout is dan "The network path was not found". Nou heb ik hiervoor een functie geschreven, om te zorgen dat gebruikers deze foutmelding niet te zien krijgen, maar het script gewoon stopt, namelijk onderstaande:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| Function oUser() On Error Resume Next Dim iRetry LogFile = "loginerrors.log" iRetry = 0 Set oUser = GetObject("WinNT://" & sAdsPathUser & ",user") Do While Err.Number <> 0 Err.Clear Set oUser = GetObject("WinNT://" & sAdsPathUser & ",user") iRetry = iRetry + 1 If iRetry = 50 Then WriteLog sAdsPathUser & " | " & "Reached 50 reties on the oUser function. Script has exited!" Err.Clear WScript.Quit End If Err.Clear Loop End Function |
Na veel zoekwerk op Google en de MSDN pagina's van Microsoft blijkt deze functie de beste oplossing. Echter, ik vind deze oplossing niet de mooiste. Het zou niet nodig moeten zijn om een dergelijke functie te schrijven.
Tijdens mijn zoektochten heb ik op veel pagina's met script voorbeelden gezien dat heel veel mensen op deze manier het User Object benaderen, dus het moet haast wel ergens anders liggen (buiten een scriptfout)
Het script werkt met deze functie naar behoren en vaak komt de fout niet voor, maar ik ben toch benieuwd of iemand van jullie mij kan helpen in deze. Wellicht het aanpassen van instellingen (ik denk daarbij aan een time-out setting) in de Active Directory of een aanpassing aan het script.
Enkele oplossingen die ik gevonden heb leken te werken, waaronder andere manieren van error handling. Niets kwam in de buurt van de oplossing die ik heb gevonden, helaas. Maar ondanks deze oplossing zie ik liever dat het altijd goed zal werken zonder deze functie.
Heeft iemand ideën?