Hab es mit der 1.4.6.0 probiert
Beiträge von Camulus
-
-
Danke euch, ich hab es gerade auch mit blat.exe gelöst.
Ist sogar noch etwas kompfortabler für unsere Kollegen;)Aber vielleicht bau ich es nochmal um
-
C
Alles anzeigenGlobal $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") #include <_INetSmtpMailCom.au3> ;################################## ; Variables ;################################## $SmtpServer = "mail.gmx.net" ; address for the smtp-server to use - REQUIRED $FromName = "****" ; name from who the email was sent $FromAddress = "***" ; address from where the mail should come $ToAddress = "***" ; destination address of the email - REQUIRED $Subject = "Userinfo" ; subject from the email - can be anything you want it to be $Body = "Test" ; the messagebody from the mail - can be left blank but then you get a blank mail $AttachFiles = "" ; the file you want to attach- leave blank if not needed $CcAddress = "" ; address for cc - leave blank if not needed $BccAddress = "" ; address for bcc - leave blank if not needed $Importance = "Normal" ; Send message priority: "High", "Normal", "Low" $Username = "***" ; username for the account used from where the mail gets sent - REQUIRED $Password = "***" ; password for the account used from where the mail gets sent - REQUIRED $IPPort = 25 ; port used for sending the mail normaly 25 $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS ;~ $IPPort=465 ; GMAIL port used for sending the mail ;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS ;################################## ; Script ;################################## $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl) If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc) EndIf
und das _INetSmtpMailCom.au3
Code
Alles anzeigen;################################## ; Include ;################################## #Include<file.au3> ;http://www.autoitscript.com/forum/index.php?showtopic=23860&view=findpost&p=166575 ; The UDF Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then $objEmail.AddAttachment ($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 then $IPPort = 25 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $s_Username <> "" Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "High" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High" Case "Normal" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal" Case "Low" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low" EndSwitch $objEmail.Fields.Update ; Sent the Message $objEmail.Send If @error Then SetError(2) Return $oMyRet[1] EndIf $objEmail="" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func MyErrFunc() $HexNumber = Hex($oMyError.number, 8) $oMyRet[0] = $HexNumber $oMyRet[1] = StringStripWS($oMyError.description, 3) ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF) SetError(1); something to check for when this function returns Return EndFunc
-
Da bekomm ich den gleichen Fehler.
$objEmail.To = $s_ToAddress
_INetSmtpMailCom.au3"(10,15) : error: missing separator character before keyword.Oder stell ich mich nur zu blöd?
-
Wenn ich _INetSmtpMail nutze bekomme ich Error 50.
Der heißt dann: 5x - Cannot open SMTP session. x indicates the index number of last command issued to the SMTP server. ?!?
Hab das jetzt mit einem GMX Account versucht.
Muss ich da nicht irgendwie eine Authetifizierung mit geben? -
Es nimmt vorm an und gefällt mir bisher gut.
Einen kleinen Schönheitsfehler hab ich aber meiner Meinung nach noch,
zu diesem Timer hab ich schonmal einen Thread eröffnet und Dank eurer Hilfe ging es dann auch:
https://autoit.de/index.php/Thre…4999#post364999Aber ich hab es nie wirklich verstanden und es ist auch zu lange her.
Spoiler anzeigen
Code
Alles anzeigen#include <Array.au3> #include <ad.au3> #include <MsgBoxConstants.au3> #include <WriteLogData.au3> Global $StartFlag, $traygpupdate,$traymapping,$traycapture,$trayteamviewer, $trayticket,$traypassword, $is_member Global $aArray = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", "Groups") ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Header in die Log Datei schreiben ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- _WriteLogData("######################################################################################################################") _WriteLogData("") _WriteLogData("") _WriteLogData("-----------------------------------------------neue Verbindung--------------------------------------------------------") _WriteLogData("") _WriteLogData("") _WriteLogData("----------------------------------------------------------------------------------------------------------------------") _WriteLogData("Programm : " & @ScriptName & ". Version=" & FileGetVersion(@ScriptName) & " mit Datum=" & FileGetTime(@ScriptName, 1, 1)) _WriteLogData("Benutzer : " & @UserName) _WriteLogData("LogonServer : " & @LogonServer) _WriteLogData("LogonDomain : " & @LogonDomain) _WriteLogData("LogonDNSDomain : " & @LogonDNSDomain) _WriteLogData("Computername : " & @ComputerName ) _WriteLogData("IP : " & @IPAddress1 & ", " &@IPAddress2& ", " &@IPAddress3& ", " & @IPAddress4) _WriteLogData("----------------------------------------------------------------------------------------------------------------------") ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Programmstart ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ $Updateflag = False _TrayMenue() $StartFlag = False Global $iTimer = TimerInit(), $iTimerDiff = 0 Global $aFunktions[2][3] = [['_VerbindungsStatus', 20000, 1], [ '_FuncDrives', 25000, 1]] HotKeySet("+!e", "_QuitConnect") ; Shift-Alt-e beendet die Connect _AD_Open() For $i = 1 To $aArray[0][0] $is_member = 0 $is_member = _AD_IsMemberOf($aArray[$i][1], @UserName) If $is_member = 1 Then $aArray_MAPDRIVE = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", $aArray[$i][1]) ;~ _ArrayDisplay ($aArray_MAPDRIVE) EndIf Next _AD_Close() While Sleep(100) ;~ $tray= _GetTrayMessage();Warte auf Dienste verbunden Traytip If ($StartFlag = FALSE) then _VerbindungsStatus() _FuncDrives() ;~ MsgBox(0,"Start","Laufwerke verbinden") $StartFlag = TRUE EndIf $msgtray = TrayGetMsg() Select Case $msgtray=$traymapping ;~ _FuncDrives() Case $msgtray= $traycapture Run("Capture.exe") Case $msgtray= $trayteamviewer Run("C:\IT\TeamviewerQS_de.exe") Case $msgtray= $trayticket ShellExecute("http://it-support." & @LogonDNSDomain) Case $msgtray= $traygpupdate $gpupdate = Run("gpupdate", "", @SW_HIDE) If $gpupdate > 0 Then TrayTip("Bitte warten", "gpupdate wird ausgeführt.",1,1) Sleep(2000) TrayTip("Fertig", "gpupdate wurde ausgeführt.",1,1) Endif Case $msgtray= $traypassword _password() EndSelect $iTimerDiff = TimerDiff($iTimer) For $i = 0 To UBound($aFunktions) - 1 ; hier werden alle Funktionen aus dem Array überprüft If $iTimerDiff / $aFunktions[$i][1] > $aFunktions[$i][2] Then ; ist die TimerDifferenz geteilt durch die Millisekunden größer als der Counter, dann... ;~ ConsoleWrite(StringFormat('+> Zeit: %i Sek., Aufruf Nr.: %i, Starte Funktion: "%s"\n', Int($iTimerDiff / 1000), $aFunktions[$i][2], $aFunktions[$i][0])) $aFunktions[$i][2] += 1 ; den Counter erhöhen Call($aFunktions[$i][0]) ; und die Funktion aufrufen EndIf Next WEnd ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Tray Menü ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _TrayMenue() Opt("TrayMenuMode", 3) ; Default tray menu items (Script Paused/Exit) will not be shown. TraySetIcon(@ScriptDir& "\Data\x.ico") ;~ $trayinfo = TrayCreateItem("Computerinformationen anzeigen") ;~ TrayCreateItem("") $traygpupdate = TrayCreateItem("gpupdate ausführen") TrayItemSetState($traygpupdate,128) TrayCreateItem("") $traymapping = TrayCreateItem("Laufwerke verbinden") TrayItemSetState($traymapping,128) TrayCreateItem("") $traycapture = TrayCreateItem("Screenshot an IT senden.") TrayItemSetState($traycapture,128) TrayCreateItem("") $trayteamviewer = TrayCreateItem("Teamviewer starten.") TrayCreateItem("") $trayticket = TrayCreateItem("Ticketsystem starten.") TrayItemSetState($trayticket,128) TrayCreateItem("") $traypassword = TrayCreateItem("Wann läuft mein Passwort ab?") TrayItemSetState($traypassword,128) TrayCreateItem("") TrayCreateItem("Connect Version 3.0") TrayItemSetState(-1,128) EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; GetTrayMessage ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _GetTrayMessage() Local $wl, $List, $LastList = '' $List = '' $wl = WinList("[class:tooltips_class32]") For $n = 1 To $wl[0][0] If BitAND(WinGetState($wl[$n][1]), 2) Then $List &= WinGetTitle($wl[$n][1]) EndIf Next If $List = ("Dienste verbunden") Then Return 1 EndIf EndFunc ;==>_GetTrayMessage ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Verbindungsstatus ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _VerbindungsStatus() ;~ MsgBox(0,"","VPNStatus",1) ;~ VPN und Netzwerkgeschwindigkeit ermitteln und Trayicon ensprechend einfärben local $Testserver = @LogonDNSDomain $Connection = Ping($Testserver, 5000) $internetconnection= "www.google.de" ;~ ConsoleWrite("Speed "& $Connection & @CR) If $internetconnection <= 0 Then ;~ wird nur gemacht wenn eine Internetverbindung besteht TraySetIcon(@ScriptDir& "\Data\x.ico") TraySetToolTip("Keine Verbindung zum Internet." & @CRLF & "Stellen Sie bitte eine verbindung zum Internet her.") If $Connection = 0 Then TraySetIcon(@ScriptDir& "\Data\x.ico") ;~ _WriteLogData("Fehler bei ping auf LogondnsDomaiun " & @error) TraySetToolTip("Keine Verbidnung zu COO." & @CRLF & "Bauen Sie die Verbindung bitte mit dem Palo Alto Client auf.") EndIf If $Connection > 0 Then ;~ TrayItems aktivieren wenn verbindung zum COO besteht. Sonst funktioniert das eh alles nicht TrayItemSetState($traygpupdate,64) TrayItemSetState($trayticket, 64) TrayItemSetState($traymapping,64) TrayItemSetState($traycapture,64) TrayItemSetState($traypassword,64) TraySetIcon(@ScriptDir& "\Data\green.ico") EndIf EndIf $Connection="" $netlogon="" $Testserver="" EndFunc ;~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _FuncDrives() _CheckDrives($aArray_MAPDRIVE) EndFunc ;~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _checkDrives($aArray_MAPDRIVE) ;~ Laufwerke checken ;~ MsgBox(0,"_checkDrives","",1) ;~ _ArrayDisplay($aArray_MAPDRIVE) $Testserver = @LogonDNSDomain $Ping = Ping($Testserver,1000) For $x = 1 To $aArray_MAPDRIVE[0][0] ;MsgBox(0,$is_member, $aArray_MAPDRIVE[$i][1]) $map_details = StringSplit($aArray_MAPDRIVE[$x][1],"|") $map_details[1] = StringReplace($map_details[1], "*USER*", @username) $Laufwerk =($map_details[2] & ":") ;~ MsgBox(0,"Laufwerk", $Laufwerk,1) $Pfad =($map_details[1]) ;~ MsgBox(0,"Pfad ", $Pfad,1) If $Ping > 0 Then $Status=DriveStatus($Laufwerk) ;~ MsgBox(0,"",$Status & " " & $Laufwerk,1) If $Status = "INVALID" Then $count =0 Do _MapDrives($Laufwerk,$Pfad) Sleep(1000) If @error Then $Error = @error MsgBox(0,"",$Error) $count +=1 _WriteLogData("Laufwerk " & $Laufwerk &" nicht neu verbunden. Fehlversuch:" & $count) Else ExitLoop EndIf Until $count >= 3 If $count >=3 Then $Error = @error ;~ _ErrorLog($Error, $Laufwerk) Else $Error = "" EndIf EndIf $Status = "" $Laufwerk = "" $count= 0 $Drive="" EndIf Next EndFunc ;~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _MapDrives ($Laufwerk,$Pfad) ;~ Laufwerke verbinden DriveMapAdd($Laufwerk, $Pfad) EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ Func _Laufwerk_trennen($Laufwerk) ;~ $Status=DriveStatus($Laufwerk) ;~ If $Status <> "INVALID" Then ;MsgBox(0,"",$Status) ; TrayTip("Verbindung beendet","Ihre Netzlaufwerke werden getrennt",1) ;~ DriveMapDel($Laufwerk) ;~ _WriteLogData("Laufwerk " & $Laufwerk & " getrennt.") ;~ EndIf ;~ $Laufwerk = "" ;~ $Status = "" ;~ $Drive = "" ;~ Sleep(500) ;~ EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _password() ;~ Benutzeraten aus Abfragen, wichtig für "Passwort läuft ab" Anzeigen Global $UserAccountControl, $samAccountName,$FirstName, $LastName, $title, $PasswordLastChanged, $IsAccountLocked, $DaysLeft,$msg,$icon ,$AnzeigeDatPwdExpires, $Counter, $baseStr Local $Found = 0 $AnmeldeUser = @UserName $LogonServer = @LogonDomain $serverName = $LogonServer $filterStr = "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=" & @UserName & "))" $ado = ObjCreate("ADODB.Connection") ; erstellt eine Instanz des Objektes ADODB.Connection $ado.Provider = "ADSDSOObject" $ado.Open ("ADS-Search" ) $adoCmd = ObjCreate("ADODB.Command") $adoCmd.ActiveConnection = $ado $adoCmd.Properties("Page Size") = 1000 $adoCmd.Properties("Cache Results") = 1 $adoCmd.CommandText = "<LDAP://" & $serverName & "/" & $baseStr & ">;" & $filterStr & ";ADsPath;subtree" _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & StringReplace($LogonServer,"\","")) ;~ _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & $LogonServer) ;~ _WriteLogData("Funktionsaufruf lautet : " & $adoCmd & " ") $objectList = $adoCmd.Execute $Counter = 1 While Not $objectList.EOF() $user = ObjGet($objectList.Fields("ADsPath").value) $samAccountName = $User.samAccountName If stringlower($samAccountName) = StringLower($AnmeldeUser) Then $UserAccountControl = $user.UserAccountControl $FirstName = $User.FirstName $LastName = $User.LastName $title = $User.title $PasswordLastChanged = $User.PasswordLastChanged ;pwdLastSet $IsAccountLocked = $User.IsAccountLocked _WriteLogData("Benutzereintrag für " & $FirstName & " " & $LastName & " wurde gefunden. Accountcontrol = " & $UserAccountControl) $DaysLeft = _DatumBerechnen($PasswordLastChanged) If $DaysLeft <= 10 Then Switch $DaysLeft Case 1 MsgBox (16, "Achtung","Ihr Passwort läuft heute ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort umgehend!") Case 2 MsgBox (48, "Achtung","Ihr Passwort läuft morgen ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort!") Case Else MsgBox(64,"Achtung","Ihr Passwort läuft in " & $DaysLeft & " Tagen, am " & $AnzeigeDatPwdExpires & ", ab." & @CRLF & @CRLF & "Bitte ändern Sie das Passwort bei der nächsten Gelegenheit!") EndSwitch EndIf EndIf $objectList.MoveNext() $Counter += 1 Wend $UserAccountControl="" $samAccountName="" $FirstName="" $LastName="" $title="" $PasswordLastChanged="" $IsAccountLocked="" $DaysLeft="" $msg="" $icon="" $AnzeigeDatPwdExpires="" $Counter="" EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Kennwort "Lebensdauer" berechnen ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _DatumBerechnen($ChangedDate) ;~ wird von _GetUserAD gebraucht local $AnzeigeDatPwdChanged, $Day2Change, $Date2Change local $HeuteJMT = _NowCalcDate() local $DatChangedJMT = StringMid( $ChangedDate, 1, 4) & "/" & StringMid( $ChangedDate, 5, 2) & "/" & StringMid( $ChangedDate, 7, 2) $Date2Change = _DateAdd('d',90,$DatChangedJMT) $Day2Change = _DateDiff( 'd',_NowCalc(),$Date2Change) $AnzeigeDatPwdExpires = StringMid( $Date2Change, 9, 2) & "." & StringMid( $Date2Change, 6, 2) & "." & StringMid( $Date2Change, 1, 4) Return $Day2Change _WriteLogData("Passwort Ablaufdatum emittelt") $AnzeigeDatPwdChanged="" $Day2Change="" $Date2Change="" $HeuteJMT="" $ChangedDate="" $DatChangedJMT="" EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _QuitConnect() TrayTip("Connect beenden", "Connect wird beendet.",2,2) Sleep(2000) Exit EndFunc
So ieht das ganze Teil aus, wenn es noch wer brauchen kann bedient euch
Was mir nicht gefällt ist das hier:
Eine Funktion aufzurufen um eine Funktion aufzurufen ist irgendwieWenn ich
_CheckDrives($aArray_MAPDRIVE)mit hierein schreibe geht es natürlich nicht
Global $aFunktions[2][3] = [['_VerbindungsStatus', 20000, 1], [ '_CheckDrives($aArray_MAPDRIVE)', 25000, 1]]
Zumindest nicht wenn ich das Array mit übergeben will.
Also wenn jemand Lust und Muße hat sich das anzusehen und mir zu zeigen wie es wesentlich eleganter geht nehme ich diese positive Kritik gerne an.
Anderweitige Verbesserungsvorschläge natürlich auch
Für dieses etwas klobige Passwort berechnen hab ich diesen Thread:
https://autoit.de/index.php/Thre…6927#post676927
Wenn ich den gelöscht bekomme häng ich ihn hier ran, oder einer der Admins?
Wenn nicht bitte ich um nachsicht für dieses Halb-X-Posting. -
Hi,
ich hab diesen Beitrag gefunden:
https://autoit.de/index.php/Thre…daten-abfragen/
beim testen hab ich allerdings ein kleines Problem weil mein Passwort nicht abläuft, also ist das Ablaufdatum in der Vergangenheit und das wird nicht angezeigt
Etwas ähnliches hab ich hie geerbt, keine Ahnung woher das stammt.
Code
Alles anzeigenGlobal $UserAccountControl, $samAccountName,$FirstName, $LastName, $title, $PasswordLastChanged, $IsAccountLocked, $DaysLeft,$msg,$icon ,$AnzeigeDatPwdExpires, $Counter, $baseStr Local $Found = 0 $AnmeldeUser = @UserName $LogonServer = @LogonDomain $serverName = $LogonServer $filterStr = "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=" & @UserName & "))" $ado = ObjCreate("ADODB.Connection") ; erstellt eine Instanz des Objektes ADODB.Connection $ado.Provider = "ADSDSOObject" $ado.Open ("ADS-Search" ) $adoCmd = ObjCreate("ADODB.Command") $adoCmd.ActiveConnection = $ado $adoCmd.Properties("Page Size") = 1000 $adoCmd.Properties("Cache Results") = 1 $adoCmd.CommandText = "<LDAP://" & $serverName & "/" & $baseStr & ">;" & $filterStr & ";ADsPath;subtree" _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & StringReplace($LogonServer,"\","")) ;~ _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & $LogonServer) ;~ _WriteLogData("Funktionsaufruf lautet : " & $adoCmd & " ") $objectList = $adoCmd.Execute $Counter = 1 While Not $objectList.EOF() $user = ObjGet($objectList.Fields("ADsPath").value) $samAccountName = $User.samAccountName If stringlower($samAccountName) = StringLower($AnmeldeUser) Then $UserAccountControl = $user.UserAccountControl $FirstName = $User.FirstName $LastName = $User.LastName $title = $User.title $PasswordLastChanged = $User.PasswordLastChanged ;pwdLastSet $IsAccountLocked = $User.IsAccountLocked _WriteLogData("Benutzereintrag für " & $FirstName & " " & $LastName & " wurde gefunden. Accountcontrol = " & $UserAccountControl) $DaysLeft = _DatumBerechnen($PasswordLastChanged) If $DaysLeft <= 10 Then Switch $DaysLeft Case 1 MsgBox (16, "Achtung","Ihr Passwort läuft heute ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort umgehend!") Case 2 MsgBox (48, "Achtung","Ihr Passwort läuft morgen ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort!") Case Else MsgBox(64,"Achtung","Ihr Passwort läuft in " & $DaysLeft & " Tagen, am " & $AnzeigeDatPwdExpires & ", ab." & @CRLF & @CRLF & "Bitte ändern Sie das Passwort bei der nächsten Gelegenheit!") EndSwitch EndIf EndIf $objectList.MoveNext() $Counter += 1 Wend $UserAccountControl="" $samAccountName="" $FirstName="" $LastName="" $title="" $PasswordLastChanged="" $IsAccountLocked="" $DaysLeft="" $msg="" $icon="" $AnzeigeDatPwdExpires="" $Counter="" EndFunc
Ich hätte es gerne etwas schlanker, weil jemand wie ich auch negative Werte bei waters Script angezeigt bekomme?
Ist nur ein Schönheitsfehler aber ich würde es gerne verstehen, vielleichrt auch ein "Ihr Passwort läuft nicht ab" -
ich will doch nur einen Screenshot versenden
ich hab reingeguckt und es brummt immer noch etwas in meinem Kopf
Danke dir ich versuch mich da mal reinzufinden, es sei denn jemand hat was einfacheres.
Ich glaub das sprengt meinen AutoIT Horizont
-
Hallo,
ich hab vor langer Zeit mal hieraus eine exe kompiliert:
Code
Alles anzeigenLocal $olMailItem = 0 Local $olFormatRichText = 3 Local $olImportanceNormal = 1 $oOApp = ObjCreate("Outlook.Application") $oOMail = $oOApp.CreateItem($olMailItem) With $oOMail .To = ("it-support@xyz-it.de") .Subject ="Screenshot von: " & @UserName .Body = ("Screenshot von " & @UserName & " im Anhang." & @CRLF & "Erstellt: " & @MDAY&"."& @MON &"."& @YEAR &" " & @HOUR &":"& @MIN &":"& @SEC & @CRLF & "Rechnername: " & @ComputerName) .Attachments.Add ("C:\Temp\Screenshot.jpg") .Importance = $olImportanceNormal .Display EndWith
Das funktioniert aber nicht mehr
: error: missing separator character before keyword.ich hab da schonmal recherchiert und irgendwas gefunden dass dieses To in der neueren Version zum Schlüsselwort wurde oder so ähnlich.
Also lange Rede kurzer Sinn, gibt es was ähnliches was funktioniert?
-
Oh mann... ich sollte das viel öfter machen
Danke
Jetzt versuche ich das mal in den rest zu integrieren.
-
ich nehme alles zurück und behaupte das gegenteil
Man muss schon die ini richtig bauen, da war ein \ zu viel.Aaaaaber ich hab ein anderes Prolem:
Unsere Home Laufwerke sehen so aus:\\coo.local\dfs\Home$\%sername%
Das $ scheint aber dafür zu sorgen dass das Laufwerk übergangen wird und die Variable %sername% finktionioert so auch nicht.
Die Idee die ich hab ist abzufangen ob der Laufwerksbuchstabe H oder W ist, sind beide als Homelaufwerke festgelegt hier (mehrer Domänen).Oder gibt es was schlaueres was ich nicht weiß?
So hab ich es gelöst:
CodeIf $map_details[2] = "H" Then $homelaufwerk= ($map_details[1] & "\Home$\"& @UserName) ;~ MsgBox(0,"Homelaufwerk",$homelaufwerk ) ;~ MsgBox(0,"pfad",$map_details[2] & ":", & $homelaufwerk ) DriveMapAdd($map_details[2] & ":", $homelaufwerk ) EndIf
funktioniert, wenn jemand eine bessere Idee hat nehm ich die auch gerne
-
Aloha,
ich nochmal.Mir ist nicht so ganz klar was heute Nacht passiert ist...heute geht es nicht mehr.
Ich hab extra nochmal den Codeschnipsel oben raus kopiert aber dei Laufwerke werden nicht mehr verbunden.Ich hab mich mal rangetastet.
Code
Alles anzeigen#include <Array.au3> #include <ad.au3> #include <MsgBoxConstants.au3> local $is_member Local $aArray = IniReadSection(@ScriptDir & "\Map.ini", "Groups") ;~ _ArrayDisplay ($aArray) ;~ Check if an error occurred. ;~ If Not @error Then ;~ ; Enumerate through the array displaying the keys and their respective values. ;~ For $i = 1 To $aArray[0][0] ;~ MsgBox(0, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1]) ;~ Next ;~ EndIf _AD_Open() For $i = 1 To $aArray[0][0] $is_member = 0 $is_member = _AD_IsMemberOf($aArray[$i][1], @UserName) If $is_member = 1 Then Local $aArray_MAPDRIVE = IniReadSection(@ScriptDir &"\Map.ini", $aArray[$i][1]) ;~ _ArrayDisplay ($aArray_MAPDRIVE) For $x = 1 To $aArray_MAPDRIVE[0][0] ;~ MsgBox(0,$is_member, $aArray_MAPDRIVE[$i][1]) $map_details = StringSplit($aArray_MAPDRIVE[$x][1],"|") ;~ _ArrayDisplay ($map_details) $Str =('"' & $map_details[2] &":" &'"' & "," & '"' &$map_details[1] & '"') $Buchstabe=('"' & $map_details[2] &":" &'"') $Pfad=('"' &$map_details[1] & '"') MsgBox(0,"Buchstabe", $Buchstabe) MsgBox(0,"Pfad", $Pfad) $m=DriveMapAdd($Buchstabe, $Pfad) MsgBox(0,"",$M &" " & @error) MsgBox(0,"Fertig","Laufwerk sollte da sein.") ;~ DriveMapAdd('"' & $map_details[2] :'"', '"'$map_details[1]'"') Next EndIf Next _AD_Close()
Fehler 4 wenn ich das richtig gemacht habe meint der Device Name wäre ungültigini:
Code
Alles anzeigen[Groups] 1=GRP_Abteilung_IT 2=Alle_XYZ 3=AbteilungABC 4=AbteilungABCZentrale 5=Mitarbeiter_DEF [GRP_Abteilung_IT] 1=\\coo.local\dfs\software\|S [Alle_XYZ] 1=\\abc.intern\dfs\Gruppen_Koeln|V 2=\\abc.intern\dfs\Benutzer_Koeln\|W [AbteilungABC] 1=\\abc.intern\dfs\ABC|Q [AbteilungABCZentrale] 1=\\abc.intern\dfs\ABC|Q [Mitarbeiter_CPP] 1=\\DEF.local\dfs\Abteilung|G
kann mich da nochmal jemand erleuchten? -
Danke läuft.Bis zur nächsten Frage;)
Wenn du mal ins Oberbergische kommst sag Bescheid, ich mach den Smoker an
-
Code
Alles anzeigen#include <Array.au3> #include <ad.au3> #include <MsgBoxConstants.au3> Local $aArray = IniReadSection(@ScriptDir &"\Map.ini", "Groups") Local $is_member ;_ArrayDisplay ($aArray) ; Check if an error occurred. ;~ If Not @error Then ;~ ; Enumerate through the array displaying the keys and their respective values. ;~ For $i = 1 To $aArray[0][0] ;~ MsgBox(0, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1]) ;~ Next ;~ EndIf _AD_Open() For $i = 1 To $aArray[0][0] $is_member = _AD_IsMemberOf($aArray[$i][1], @UserName) If $is_member = 1 Then Local $aArray_MAPDRIVE = IniReadSection(@ScriptDir &"\Map.ini", $aArray[$i][1]) ;~ _ArrayDisplay ($aArray_MAPDRIVE) For $i = 1 To $aArray_MAPDRIVE[0][0] ;MsgBox(0,$is_member, $aArray_MAPDRIVE[$i][1]) $map_details = StringSplit($aArray_MAPDRIVE[$i][1],"|") ;_ArrayDisplay ($map_details) DriveMapAdd($map_details[2] & ":", $map_details[1]) Next EndIf Next _AD_Close()
So meinst du oder?
Fehler:
24) : ==> Subscript used on non-accessible variable.:
For $i = 1 To $aArray_MAPDRIVE[0][0]
For $i = 1 To $aArray_MAPDRIVE^ ERRORWenn ich in keiner der beiden Gruppen bin
-
Eine Frage noch hinterher,
angenommen der User ist in keiner der angegebenen Gruppen kommt scheinbar dieser Fehler
(23) : ==> Subscript used on non-accessible variable.:
For $i = 1 To $aArray_MAPDRIVE[0][0]
For $i = 1 To $aArray_MAPDRIVE^ ERRORIch habe es mit einer Gruppe getestet in der ich bin funktioniert Super,
wenn ich die Gruppe in der ini umbenenne und ich dann in keiner mehr bin kommt dieser FehlerZwei Fragen:
Wenn ich in mehreren Gruppen bin scheint es auch nicht zu gehenini:
Code
Alles anzeigen[Groups] 1=GRP_Abteilung_IT 2=GRP_COO_IT [GRP_Abteilung_IT] 1=\\coo.local\dfs\software|X 2=\\coo.local\dfs\software|Y [GRP_COO_IT] 1=\\coo.local\dfs\software|Z
Am Rest hab ich nichts geändert, aber mein User ist in beiden Gruppen.
fehler kommt keiner aber Z: wird nicht verbunden -
Genau sowas
Danke!
Und ja es war furchtbar kompliziert
Ich versuche es jetzt zu verstehen und baue es um. -
Ich bin noch etwas verwirrt wegeen dem Array bzw den Arrays und wie ich die Laufwerksbuchstaben verwurste.
Die Idee ist die Ini dann so aufzubauen
[Groups]
1=GRP_Abteilung_IT
[GRP_Abteilung_IT]
LW1="X:"
Pfad1="\\xyz.local\dfs\software"Code
Alles anzeigenFor $i = 1 To $aArray[0][0] $is_member = _AD_IsMemberOf($aArray[$i][1], @UserName) If $is_member = 1 Then $drive = $aArray[$i][1] $path = $aArray[$i+1][1] ;~ MsgBox("","Array", $group) ;~ Local $aDrive =iniReadSection(@ScriptDir &"\Map.ini", $aArray[$i][1] ) Local $aDrive =iniReadSection(@ScriptDir &"\Map.ini", $drive ) Local $aPath = iniReadSection(@ScriptDir &"\Map.ini", $path ) ;~ _ArrayDisplay ($aDrive) ;~ _ArrayDisplay ($aPath) MsgBox("","Drive:" ,$aDrive [$i][1]) MsgBox("","Drive:" ,$aPath [$i+1][1]) ;lese die entsprechende InISection und verarbeite die MAPDrive Anweisung ... das muss noch ergänzt werden :) EndIf Next
Nur da hab ich dir richtige Kombination noch nicht;)
Oder ist die Idee Qutasch?
-
Wir kommen der Sache näher.
C
Alles anzeigen#include <AD.au3> #include <Array.au3> #include <MsgBoxConstants.au3> Local $aArray = IniReadSection(@ScriptDir &"\Map.ini", "Groups") _ArrayDisplay ($aArray) ; Check if an error occurred. ;~ If Not @error Then ;~ ; Enumerate through the array displaying the keys and their respective values. ;~ For $i = 1 To $aArray[0][0] ;~ MsgBox(0, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1]) ;~ Next ;~ EndIf _AD_Open() For $i = 1 To $aArray[0][0] $is_member = _AD_IsMemberOf($aArray[$i][1], @UserName) If $is_member = 1 Then $group = $aArray[$i][1] MsgBox("","Array", $group) Local $aDrive =iniReadSection(@ScriptDir &"\Map.ini", $aArray[$i][1] ) _ArrayDisplay ($aDrive) MsgBox("","Drive:" ,$aDrive [$i][1]) ;lese die entsprechende InISection und verarbeite die MAPDrive Anweisung ... das muss noch ergänzt werden :) EndIf Next
Aber jetzt hab ich ein Problem mit den Laufwerksbuchstaben.
Due Idee war DriveMapAdd mit $aDrive zu füllen ,aber das geht natürlich nichtDie Buchstben unterscheiden sich natürlich nach Gruoppen;)
Hat da noch jemand eine zündende Idee?
-
Ich glaub ich hab es...
oder hab ich jetzt Bockmist gebaut?C
Alles anzeigen#include <AD.au3> #include <Array.au3> #include <MsgBoxConstants.au3> Local $aArray = IniReadSection(@ScriptDir &"\Map.ini", "Groups") _ArrayDisplay ($aArray) ; Check if an error occurred. ;~ If Not @error Then ;~ ; Enumerate through the array displaying the keys and their respective values. ;~ For $i = 1 To $aArray[0][0] ;~ MsgBox(0, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1]) ;~ Next ;~ EndIf _AD_Open() For $i = 1 To $aArray[0][0] $is_member = _AD_IsMemberOf($aArray[$i][1], @UserName) If $is_member = 1 Then MsgBox(0,"",$is_member & $aArray[$i][1]) ;lese die entsprechende InISection und verarbeite die MAPDrive Anweisung ... das muss noch ergänzt werden :) EndIf Next
-
Ok, das ist eigentlich das was ich wollte...allerdings sind Arrays böhmiche Dörfer bei mir... das vergisst man immer alles wieder:
So sieht es momentan aus:
C
Alles anzeigen#include <AD.au3> #include <Array.au3> Local $aArray = IniReadSection(@ScriptDir &"\Map.ini", "Groups") _ArrayDisplay ($aArray) ;~ ; Check if an error occurred. ;~ If Not @error Then ;~ ; Enumerate through the array displaying the keys and their respective values. ;~ For $i = 1 To $aArray[0][0] ;~ MsgBox(0, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1]) ;~ Next ;~ EndIf For $i = 1 To $aArray[0] $is_member = _AD_IsMemberOf($aArray[$i], @UserName) If $is_member = 1 Then MsgBox(0,"",$is_member & $aArray[$i]) ;lese die entsprechende InISection und verarbeite die MAPDrive Anweisung ... das muss noch ergänzt werden :) EndIf Next
Und ich bekomme diesen Fehler:
(14) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:Kann mir da noch jemand auf die Sprünge helfen?