Bonjour,
Le script suivant cherche les lecteurs à mapper selon mon OU et mappe les lecteurs à l'ouverture de session
Donc avec mon script
j'ai mes lecteurs qui sont bien mappé mais mon soucis c'est que j'ai ce message qui arrive quand je me reloge
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
61
62
63
64
65
66 Dim WshShell Dim objNet Dim objRootDSE Dim Tab Dim DN Dim i Dim strComputer DN = "" Set WshShell = WScript.CreateObject("WScript.Shell") Set objNet = WScript.CreateObject("WScript.Network")' create network object for vars Set objRootDSE = GetObject("LDAP://rootDSE")' bind to the rootDSE for portability strADsConfPath = "LDAP://" & objRootDSE.Get("configurationNamingContext")' bind to configuration to get Domain Controllers later strRootDSE = objRootDSE.Get("defaultNamingContext")' bind to the defaultContext for portability strUserName = UCase(objNet.UserName)' pull user name from environment variable Tab = Split(GetDNUser(strUserName,"person"),",") For i=1 to UBound(Tab) If i = Ubound(Tab) Then DN = DN + Tab(i) Else DN = DN + Tab(i) + "," End If Next 'MsgBox DN Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.CommandText = "Select Name, unCName, ManagedBy from " _ & "'LDAP://"&DN&"' where objectClass='volume'" objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF 'Wscript.Echo "Share Name: " & objRecordSet.Fields("Name").Value msgbox objRecordSet.Fields("Name").Value msgbox objRecordSet.Fields("uNCName").Value Dim oNet Set oNet = CreateObject("Wscript.Network") oNet.MapNetworkDrive objRecordSet.Fields("Name").Value, objRecordSet.Fields("uNCName").Value objRecordSet.MoveNext Loop Function GetDNUser(param1,param2) Set objDSE = GetObject("LDAP://rootDSE") ON ERROR RESUME NEXT Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection objCommand.CommandText = "SELECT distinguishedName, Sn " & "FROM 'LDAP://" & objDSE.Get("defaultNamingContext") & "' " & "WHERE objectCategory='" & param2 & "' AND sAMAccountName='" & param1 & "' " & "ORDER BY sAMAccountName" Set objRecordSet = objCommand.Execute GetDNUser = objRecordSet.Fields("distinguishedName") objConnection.Close if err.number <> 0 then msgbox "ERREUR: le nom renseigné n'existe pas dans l'AD.",16,Wscript.ScriptName & " " & version ERR.CLEAR wscript.quit end if End Function MsgBox "Mappage effectué"
( windows script host):
Script: \\chemin de mon script
Line:36
Char:1
Error: Either BOF or EOF is true, or the current record has been deleted.request operation requires a current record.
Code: 800A0BCD
Source: ADODB.Recordest
Je suis nulle en vbscript, ce n'est pas moi qui l'ai fait mais on m'a dit que je peux oté les msgbox j'en ai oté et depuis j'ai ce message à l'ouverture de session.
( windows script host):
Script: \\chemin de mon script
Line: 41
Char:1
Error: the local device name is already in use
Code: 80070055
Source: WSHNetwork.MapNetworkDrive
et voici le nouveau script qui me donne le message d'erreur ci dessus:
Je souhaiterai enlever toutes les msgbox, puisque le script fonctionne tous mes lecteurs sont mappés et j'y ai accès correctement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
61
62 Dim WshShell Dim objNet Dim objRootDSE Dim Tab Dim DN Dim i Dim strComputer DN = "" Set WshShell = WScript.CreateObject("WScript.Shell") Set objNet = WScript.CreateObject("WScript.Network")' create network object for vars Set objRootDSE = GetObject("LDAP://rootDSE")' bind to the rootDSE for portability strADsConfPath = "LDAP://" & objRootDSE.Get("configurationNamingContext")' bind to configuration to get Domain Controllers later strRootDSE = objRootDSE.Get("defaultNamingContext")' bind to the defaultContext for portability strUserName = UCase(objNet.UserName)' pull user name from environment variable Tab = Split(GetDNUser(strUserName,"person"),",") For i=1 to UBound(Tab) If i = Ubound(Tab) Then DN = DN + Tab(i) Else DN = DN + Tab(i) + "," End If Next Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.CommandText = "Select Name, unCName, ManagedBy from " _ & "'LDAP://"&DN&"' where objectClass='volume'" objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF Dim oNet Set oNet = CreateObject("Wscript.Network") oNet.MapNetworkDrive objRecordSet.Fields("Name").Value, objRecordSet.Fields("uNCName").Value objRecordSet.MoveNext Loop Function GetDNUser(param1,param2) Set objDSE = GetObject("LDAP://rootDSE") ON ERROR RESUME NEXT Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection objCommand.CommandText = "SELECT distinguishedName, Sn " & "FROM 'LDAP://" & objDSE.Get("defaultNamingContext") & "' " & "WHERE objectCategory='" & param2 & "' AND sAMAccountName='" & param1 & "' " & "ORDER BY sAMAccountName" Set objRecordSet = objCommand.Execute GetDNUser = objRecordSet.Fields("distinguishedName") objConnection.Close if err.number <> 0 then msgbox "ERREUR: le nom renseigné n'existe pas dans l'AD.",16,Wscript.ScriptName & " " & version ERR.CLEAR wscript.quit end if End Function
Partager