Hi, ich bin immer noch ein meinem VPN Tool. Das Netzlaufwerke verbinden läuft alles über ein Script das die AD Gruppe abfragt und dementsprechen die Laufwerke verbindet.
Das alle ssieht so aus:
Spoiler anzeigen
Func _MapDrives()
_AD_Open()
$aUser = _AD_GetUserGroups(@UserName)
_AD_Close()
If WinActive ("Connect") Then
ControlSetText("Connect","",5,@CRLF & @CRLF & "Ihre Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Bitte gedulden Sie sich einen Moment.")
EndIf
;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;Laufwerke G:\ und H:\ für User mappen
;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_ArraySearch($aUser, "CN=Mitarbeiter" , 0, 0, 0, 1)
If Not @error Then
DriveMapDel("G:")
_WriteLogData("Laufwerk G:\ getrennt.")
DriveMapDel("H:")
_WriteLogData("Laufwerk H:\ getrennt.")
$count =0
$Laufwerk = "G:\"
Do
DriveMapAdd("G:", $G_CPP)
If WinActive ("Connect") Then
ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
Sleep(250)
_WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
ElseIf WinActive ("VPN Verbindungsstatus") Then
ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
Sleep(250)
_WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
EndIf
$Error = @error
If @error Then
$count +=1
_WriteLogData("Laufwerk G:\ nicht verbunden. Fehlversuch:" & $count)
Else
ExitLoop
EndIf
Until $count >= 3
[/autoit] [autoit][/autoit] [autoit]If $count >=3 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_ErrorLog($Error, $Laufwerk)
MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: " & $Laufwerk & " konnte nicht verbunden werden." & @CR & _
"Bitte wenden Sie sich an den IT Support.")
Else
[/autoit] [autoit][/autoit] [autoit]$Error = ""
$Laufwerk = ""
If WinActive ("Connect") Then
ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk G:\ erfolgreich verbunden.")
Sleep(250)
_WriteLogData("Laufwerk G:\ verbunden.")
ElseIf WinActive ("VPN Verbindungsstatus") Then
ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk G:\ verbunden.")
Sleep(250)
_WriteLogData("Laufwerk G:\ aus Childform verbunden.")
EndIf
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$count =0
Do
DriveMapAdd("H:", $H_CPP)
$Laufwerk = "H:\"
If WinActive ("Connect") Then
ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
Sleep(250)
_WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
ElseIf WinActive ("VPN Verbindungsstatus") Then
ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk "&$Laufwerk&" wird verbunden.")
Sleep(250)
_WriteLogData("Laufwerk " &$Laufwerk&" wird verbunden.")
EndIf
$Error = @error
[/autoit] [autoit][/autoit] [autoit]If @error Then
$count +=1
_WriteLogData("Laufwerk H:\ nicht verbunden. Fehlversuch:" & $count)
Else
ExitLoop
EndIf
Until $count >= 3
[/autoit] [autoit][/autoit] [autoit]If $count >=3 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_ErrorLog($Error, $Laufwerk)
MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: "& $Laufwerk & " konnte nicht verbunden werden." & @CR & _
"Bitte wenden Sie sich an den IT Support.")
Else
[/autoit] [autoit][/autoit] [autoit]$Error = ""
$Laufwerk = ""
If WinActive ("Connect") Then
ControlSetText("Connect","",5,@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk H:\ erfolgreich verbunden.")
Sleep(250)
_WriteLogData("Laufwerk H:\ verbunden.")
ElseIf WinActive ("VPN Verbindungsstatus") Then
ControlSetText("VPN Verbindungsstatus","",7, "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk H:\ verbunden.")
Sleep(250)
_WriteLogData("Laufwerk H:\ aus Childform verbunden.")
EndIf
EndIf
EndIf
[/autoit]Das ganze wiederholt sich noch ein paar mal je nach Gruppenzugehörigkeit.
So jetzt stelle ich beim testen fest dass die exe manchmal scheinbar hängt nach der Meldung Laufwerk XY erfolgreich verbunden.
Der Efffekt ist dann dass das Laufwerk schlicht und einfach nicht verbunden wurde. Im Log steht aber das es verbunden wurde.
Also hab ich wahrscheinlich einen Fehler eingebaut den ich aber nicht finde. Sieht ihn einer von euch? Oder hat jemand eine andere Erklärung? Wir haben immer wieder mal das Phänomen dass einzelne Laufwerke nicht verbunden werden. Ob nun per Autoit, Batch, oder vbs Script.
Unsere Theorie ist dass die Netzwerkverbindung (u.U. UMTS) einfach zu langsam ist und das alles in einen Timeout läuft.
Gibt es noch andere Möglichkeiten die hier nur keiner kennt oder die keinem einfallen?
Das wollte ich mit meinem Script eigentlich abfangen, aber besonders erfolgreich war es nicht
Hier mal ohne die Ausgaben in der GUI ist etwas übersichtlicher:
Spoiler anzeigen
Func _MapDrives()
_AD_Open()
$aUser = _AD_GetUserGroups(@UserName)
_AD_Close()
If WinActive ("Connect") Then
ControlSetText("Connect","",5,@CRLF & @CRLF & "Ihre Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Bitte gedulden Sie sich einen Moment.")
EndIf
;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;Laufwerke G:\ und H:\ für User mappen
;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_ArraySearch($aUser, "CN=Mitarbeiter" , 0, 0, 0, 1)
If Not @error Then
DriveMapDel("G:")
_WriteLogData("Laufwerk G:\ getrennt.")
DriveMapDel("H:")
_WriteLogData("Laufwerk H:\ getrennt.")
$count =0
$Laufwerk = "G:\"
Do
DriveMapAdd("G:", $G_CPP)
$Error = @error
If @error Then
$count +=1
_WriteLogData("Laufwerk G:\ nicht verbunden. Fehlversuch:" & $count)
Else
ExitLoop
EndIf
Until $count >= 3
[/autoit] [autoit][/autoit] [autoit]If $count >=3 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_ErrorLog($Error, $Laufwerk)
MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: " & $Laufwerk & " konnte nicht verbunden werden." & @CR & _
"Bitte wenden Sie sich an den IT Support.")
Else
[/autoit] [autoit][/autoit] [autoit]$Error = ""
$Laufwerk = ""
EndIf
$count =0
Do
DriveMapAdd("H:", $H_CPP)
$Laufwerk = "H:\"
$Error = @error
[/autoit] [autoit][/autoit] [autoit]If @error Then
$count +=1
_WriteLogData("Laufwerk H:\ nicht verbunden. Fehlversuch:" & $count)
Else
ExitLoop
EndIf
Until $count >= 3
[/autoit] [autoit][/autoit] [autoit]If $count >=3 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_ErrorLog($Error, $Laufwerk)
MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: "& $Laufwerk & " konnte nicht verbunden werden." & @CR & _
"Bitte wenden Sie sich an den IT Support.")
Else
[/autoit] [autoit][/autoit] [autoit]$Error = ""
$Laufwerk = ""
EndIf
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit]EDIT: Also ich bin das gerade am testen. Ich hab nach jedem DriveMapadd noch ein Sleep(1000) eingebaut. Ab und an bekomme ich von dem Programm keine Rückmeldung. Dann wird in dem Besipiel7 jetzt laufwerk H übersprungen. Im Log steht dann Laufwerk H getrennt un d es geht mit dem nächsten weiter.
Kann ich das "Keine Rückmeldung" irgendwie abfangen?