mstsc / rdp tool

  • Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version...: 3.3.8.1
    Author...........: ich
    Version..........: 0.2
    Datum............: 2012-09-19
    Script Function..: Remotedesktop starten...

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    #include <ComboConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; ##############################################################################
    ; SCRIPT START
    ; ##############################################################################
    Global $hFile = FileOpen("Z:\irgendwo\rdp\log\rdp.log", 1)
    Global $sStartDatei

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICreate(".rdp", 250, 200)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Benutzername:", 20, 10)
    Global $cInput_1 = GUICtrlCreateInput("", 20, 25, 200, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Server:", 20, 60)
    Global $cProgram = GUICtrlCreateCombo("", 20, 75, 200, 20, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Test1|Test2|Test3")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Grund:", 20, 110)
    Global $cInput_3 = GUICtrlCreateInput("", 20, 125, 200, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Global $cSave = GUICtrlCreateButton("Starten", 20, 160, 80, 25)

    [/autoit] [autoit][/autoit] [autoit]

    Global $cExit = GUICtrlCreateButton("Beenden", 140, 160, 80, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    If GUICtrlRead($cInput_1) <> "" And GUICtrlRead($cProgram) <> "" And GUICtrlRead($cInput_3) <> "" Then
    If BitAND(GUICtrlGetState($cSave), $GUI_DISABLE) Then GUICtrlSetState($cSave, $GUI_ENABLE)
    Else
    If BitAND(GUICtrlGetState($cSave), $GUI_ENABLE) Then GUICtrlSetState($cSave, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    FileClose($hFile)
    Exit
    Case $cSave
    $sTime = @YEAR & "-" & @MON & "-" & @MDAY & "/" & @HOUR & ":" & @MIN & ":" & @SEC
    FileWriteLine($hFile, $sTime & ":" & @TAB & GUICtrlRead($cInput_1) & @TAB & GUICtrlRead($cProgram) & @TAB & GUICtrlRead($cInput_3))
    Run ($sStartDatei)
    Case $cProgram
    Switch GUICtrlRead($cProgram)
    Case "Test1"
    $sStartDatei = "mstsc.exe Z:\irgendwo\rdp\test1.rdp"
    Case "Test2"
    $sStartDatei = "mstsc.exe Z:\irgendwo\rdp\test2.rdp"
    Case "Test3"
    $sStartDatei = "mstsc.exe Z:\irgendwo\rdp\test3.rdp"
    EndSwitch
    Case $cExit
    FileClose($hFile)
    Exit
    EndSwitch
    WEnd

    [/autoit]


    da ich das script ja als exe compiliere und es abunan neue rdp's hinzukommen, wie kann ich den ordner auslesen wo die rdp's sind, sodass er die selbständig zur Combobox hinzufügt
    sodass ich dann wie hier

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("RDP Session", 222, 116, 212, 116)
    $Combo1 = GUICtrlCreateCombo("", 24, 24, 145, 25)
    $Button1 = GUICtrlCreateButton("Start", 24, 72, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Cancel", 120, 72, 75, 25, 0)
    GUICtrlSetData ($Combo1, "Server1|Server2|Server3", "Server1")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Run ("%SystemRoot%\system32\mstsc.exe /v:" & GUICtrlRead ($Combo1))
    Exit
    Case $Button2
    Exit
    EndSwitch
    WEnd

    [/autoit]


    mir die "run" einträge einzeln sparen kann

  • hallo jNizM,

    folgend mal ein script, welches die server dynamisch aus dem Active Directory ausliest und dann dem RDP Tool hinzufügt! in meinem beispiel nur die aus einer bestimmten OU!

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #include <AD.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $avArray [1], $sString

    [/autoit] [autoit][/autoit] [autoit]

    TrayTip("", "Search for Server", 5, 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _AD_Open()

    [/autoit] [autoit][/autoit] [autoit]

    $sOU = "OU=standort1,DC=domäne,DC=int"

    [/autoit] [autoit][/autoit] [autoit]

    $aObjects = _AD_GetObjectsInOU($sOU, "(objectcategory=Computer)", 2, "cn,operatingsystem")

    [/autoit] [autoit][/autoit] [autoit]

    If @error > 0 Then
    MsgBox(64, "", "Nichts gefunden")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aObjects[0][0]
    ;MsgBox(0,"", $aObjects[$i][1])
    $server = StringLeft ($aObjects[$i][1],14)
    ;MsgBox(0,"",$server)
    IF $server = "Windows Server" Then
    ;MsgBox(0,"",$aObjects[$i][0])
    _ArrayAdd($avArray, $aObjects[$i][0])
    _ArraySort($avArray)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next
    ;_ArrayDisplay($avArray)
    ;MsgBox(0,'Max Index String value', _ArrayMaxIndex($avArray, 0, 1))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;_ArrayDisplay($aObjects)
    EndIf
    _AD_Close()

    [/autoit] [autoit][/autoit] [autoit]

    ;TrayTip("", "", 5, 1)
    TrayTip("clears any tray tip","",0)

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $GUI = GUICreate("RDP Tool 1.0", 190, 439, 235, 163)
    ;$ServerList = GUICtrlCreateList("", 20, 20, 150, 383)
    $ServerList = _GUICtrlListBox_Create($GUI,"", 20, 20, 150, 383)
    ;GUICtrlSetData($ServerList, $sString)
    $Connect = GUICtrlCreateButton("Connect", 30, 402, 60, 20) ;Button Connect
    $Checkbox1 = GUICtrlCreateCheckbox("Console", 105, 412, 193, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Admin", 105, 396, 193, 17)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To _ArrayMaxIndex($avArray, 0, 1)
    ;MsgBox(0,"",$avArray[$i])
    ;$sString &= $avArray[$i] & "|"
    ; --- Add files---
    _GUICtrlListBox_BeginUpdate($ServerList)
    _GUICtrlListBox_InsertString($ServerList, $avArray[$i],0)
    _GUICtrlListBox_EndUpdate($ServerList)
    _GUICtrlListBox_Sort($ServerList)
    ;-----------------
    Next

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Connect

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;$Server = GUICtrlRead($ServerList)
    $Selected = _GUICtrlListBox_GetCurSel($ServerList)
    $Server = _GUICtrlListBox_GetText($ServerList, $Selected)

    [/autoit] [autoit][/autoit] [autoit]

    IF $Selected = -1 Then
    MsgBox(64,"", "please, select server!")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    $console = GUICtrlRead($Checkbox1) ;connect as console yes/now
    ;MsgBox(0, "gewählt", $console)
    $admin = GUICtrlRead($Checkbox2) ;connect as console yes/now
    ;MsgBox(0, "gewählt", $admin)

    [/autoit] [autoit][/autoit] [autoit]

    If $console = 4 Or $admin = 4 Then
    Run ("mstsc.exe /v:" & $Server)
    Else
    If $console = 1 Then
    ;%SystemRoot%\system32\mstsc.exe /console
    Run ("mstsc.exe /Console /v:" & $Server)
    Else
    If $admin = 1 Then
    ;%SystemRoot%\system32\mstsc.exe /admin
    Run ("mstsc.exe /Admin /v:" & $Server)
    EndIf
    EndIf
    EndIf
    ;-----------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Case $Checkbox1

    [/autoit] [autoit][/autoit] [autoit]

    ;checkbox überprüfen und anhand des rückgabewertes sms freischalten oder auch nicht
    If GUICtrlRead($Checkbox1, $GUI_CHECKED)= $GUI_CHECKED Then
    $cb1 = GUICtrlRead($Checkbox1, $GUI_CHECKED)
    ;$cb2 = GUICtrlRead($Checkbox2, $GUI_UNCHECKED)
    ;GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
    Else
    $cb1 = GUICtrlRead($Checkbox1, $GUI_UNCHECKED)= $GUI_UNCHECKED
    ;$cb2 = GUICtrlRead($Checkbox2, $GUI_UNCHECKED)
    GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
    EndIf
    Case $Checkbox2

    [/autoit] [autoit][/autoit] [autoit]

    ;checkbox überprüfen und anhand des rückgabewertes sms freischalten oder auch nicht
    If GUICtrlRead($Checkbox2, $GUI_CHECKED)= $GUI_CHECKED Then
    $cb2 = GUICtrlRead($Checkbox2, $GUI_CHECKED)
    ;$cb2 = GUICtrlRead($Checkbox2, $GUI_UNCHECKED)
    ;GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
    Else
    $cb2 = GUICtrlRead($Checkbox2, $GUI_UNCHECKED)= $GUI_UNCHECKED
    ;$cb2 = GUICtrlRead($Checkbox2, $GUI_UNCHECKED)
    GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    gruß gmmg

  • Unter der Annahme, dass du alle RDP Dateien am selben Ort speicherst:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    #include <file.au3>
    #include <ComboConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $rdpDirectory = @ScriptDir & "\"
    $aServerFiles = _FileListToArray($rdpDirectory,"*.rdp",1)
    _ArrayDisplay($aServerFiles) ; zum debugen...

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("RDP Session", 222, 116, 212, 116)
    $Combo1 = GUICtrlCreateCombo("", 24, 24, 145, 25)
    if $aServerFiles <> 0 Then
    $sData = ""
    For $i=1 To $aServerFiles[0]
    $sData &= $aServerFiles[$i] & "|"
    Next
    GUICtrlSetData($Combo1,StringTrimRight($sData,1),$aServerFiles[1])
    EndIf
    $Button1 = GUICtrlCreateButton("Start", 24, 72, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Cancel", 120, 72, 75, 25, 0)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Run ("%SystemRoot%\system32\mstsc.exe /v:" & $rdpDirectory & GUICtrlRead ($Combo1)) ; hier solltest du denke ich noch Pfade in Anführungszeichen setzen, da es sonst bei Leerzeichen im Pfad probs geben wird... '"c:\...."'
    Exit
    Case $Button2
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • @jNizM
    damit kannst du auch alle clients auslesen!
    ist ja nur ein filter den man anpassen oder hinzufügen muss!

    ich weiß ja nicht ob ihr das active directory benutzt!
    theoretisch kannst du das so dynamisch auch mit gruppen steuern!
    alle clients in einen gruppe, diese auslesen und dann hast du deine auflistung :)

    oder die server oder pc namen in eine datei speichern, und diese auslesen, da ist es überflüssig, da für jede verbindung eine eigene rdp datei zu speichern! die parameter kannst du auch übergeben!

    gruß gmmg

  • jup.. habs jez so gelöst:

    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/20120921091epc4dlgzsk.jpg]

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version...: 3.3.8.1
    Author...........: jNizM
    Version..........: 1.0
    Datum............: 2012-09-19
    Script Function..: Remotedesktop starten...

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    #include <array.au3>
    #include <file.au3>
    #include <ComboConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; ##############################################################################
    ; SCRIPT START
    ; ##############################################################################

    [/autoit] [autoit][/autoit] [autoit]

    Global $hFile = FileOpen("Z:\irgendwo\rdp\rdp.log", 1)
    Global $sStartDatei
    Global $rdpDirectory = "Z:\irgendwo\rdp\"
    Global $aServerFiles = _FileListToArray($rdpDirectory,"*.rdp",1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICreate(".rdp", 250, 200)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Benutzername:", 20, 10)
    Global $cInput_1 = GUICtrlCreateInput("", 20, 25, 200, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Server:", 20, 60)
    $cProgram = GUICtrlCreateCombo("", 20, 75, 200, 20, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    If $aServerFiles <> 0 Then
    $sData = ""
    For $i=1 To $aServerFiles[0]
    $sData &= $aServerFiles[$i] & "|"
    Next
    GUICtrlSetData($cProgram,StringTrimRight($sData,1),$aServerFiles[1])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Grund:", 20, 110)
    Global $cInput_3 = GUICtrlCreateInput("", 20, 125, 200, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Global $cSave = GUICtrlCreateButton("Starten", 20, 160, 80, 25)
    Global $cExit = GUICtrlCreateButton("Beenden", 140, 160, 80, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    If GUICtrlRead($cInput_1) <> "" And GUICtrlRead($cProgram) <> "" And GUICtrlRead($cInput_3) <> "" Then
    If BitAND(GUICtrlGetState($cSave), $GUI_DISABLE) Then GUICtrlSetState($cSave, $GUI_ENABLE)
    Else
    If BitAND(GUICtrlGetState($cSave), $GUI_ENABLE) Then GUICtrlSetState($cSave, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    FileClose($hFile)
    Exit
    Case $cSave
    $sTime = @YEAR & "-" & @MON & "-" & @MDAY & "/" & @HOUR & ":" & @MIN & ":" & @SEC
    FileWriteLine($hFile, $sTime & ":" & @TAB & GUICtrlRead($cInput_1) & @TAB & GUICtrlRead($cProgram) & @TAB & GUICtrlRead($cInput_3))
    Run ("mstsc.exe " & $rdpDirectory & GUICtrlRead ($cProgram))
    Case $cExit
    FileClose($hFile)
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Alle rdp dateien liegen in einem Ordner, der von der Combobox ausgelesen wird.
    Starten lässt sich das ganze nur wenn alle Felder ausgefüllt sind.
    Ebenfalls werden alle Felder incl Datum mitgeloggt.

    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/20120921092rqmhbx1ta4.jpg]

    danke an alle helfer