Remote Info vom Rechner und angemeldeten Benutzer

  • Hi

    das Proggy liest diverse Informationen vom (Remote-) Rechner aus und ermittelt den angemeldeten Benutzer.
    Für Ergänzungen und Wünsche bin ich offen.

    Grüße
    Guido

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; ===========================================================================================
    ;
    ; Script Information
    ;
    ; Title: Remote - Informationen
    ; Author: Guido Eink
    ; Description: Informationen zu Remote-Rechner und angemeldeten Benutzer
    ;
    ; ===========================================================================================

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

    ;Konstanten und Variablen für die GUI
    #include < GUIConstants.au3 >

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

    ;Fenster erstellen
    GUICreate("Remote Info 1.0", 650, 300)
    GUISetBkColor("0xFFFFCA")
    GUISetFont(9, 400, 0, "Arial")

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

    Global $rechnerinput

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

    GUICtrlCreateLabel("Rechner:", 10, 10)
    GUICtrlSetFont(-1, 10, 800)
    $rechner_input = GUICtrlCreateInput("", 100, 10, 140, 20)
    $btn_rechnerinput = GUICtrlCreateButton("Suchen", 270, 10, 60, 20)

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

    ;Rechner-Info
    GUICtrlCreateLabel("Hersteller:", 10, 60)
    GUICtrlSetFont(-1, 10, 800)
    $hersteller = GUICtrlCreateLabel("", 110, 60,150,20)
    GUICtrlCreateLabel("Modell:", 10, 80)
    GUICtrlSetFont(-1, 10, 800)
    $modell = GUICtrlCreateLabel("", 110, 80,300,20)

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

    GUICtrlCreateLabel("IP-Adresse:", 10, 110)
    GUICtrlSetFont(-1, 10, 800)
    $ipadresse = GUICtrlCreateLabel("", 110, 110,300,20)

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

    GUICtrlCreateLabel("Subnet-Maske:", 10, 130)
    GUICtrlSetFont(-1, 10, 800)
    $subnetmaske = GUICtrlCreateLabel("", 110, 130,300,20)

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

    GUICtrlCreateLabel("Gateway:", 10, 150)
    GUICtrlSetFont(-1, 10, 800)
    $gateway = GUICtrlCreateLabel("", 110, 150,300,20)

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

    GUICtrlCreateLabel("DNSServer:", 10, 170)
    GUICtrlSetFont(-1, 10, 800)
    $dnsserver = GUICtrlCreateLabel("", 110, 170,300,40)

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

    GUICtrlCreateLabel("MAC-Adresse:", 10, 210)
    GUICtrlSetFont(-1, 10, 800)
    $macadresse = GUICtrlCreateLabel("", 110, 210,300,20)

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

    GUICtrlCreateLabel("DHCP-Server:", 10, 230)
    GUICtrlSetFont(-1, 10, 800)
    $dhcpserver = GUICtrlCreateLabel("", 110, 230,300,20)

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

    ;User-Info
    GUICtrlCreateLabel("Angemeldet:", 340, 60)
    GUICtrlSetFont(-1, 10, 800)
    $username = GUICtrlCreateLabel("", 450, 60,150,20)

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

    ;Laufwerke
    GUICtrlCreateLabel("Laufwerk C:",340,90,100,20)
    GUICtrlSetFont(-1, 10, 800)
    GUICtrlCreateLabel("gesamt:",340,110)
    GUICtrlCreateLabel("frei:",340,130)
    $gesamtspace = GUICtrlCreateLabel("", 450, 110,100,20)
    $freespace = GUICtrlCreateLabel("", 450, 130,100,20)

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

    ;Betriebssystem
    GUICtrlCreateLabel("Betriebssystem:",340,160,100,20)
    GUICtrlSetFont(-1, 10, 800)
    $betriebssystem = GUICtrlCreateLabel("", 450, 160,200,20)
    GUICtrlCreateLabel("Service Pack:",340,180,100,20)
    $servicepack = GUICtrlCreateLabel("", 450, 180,200,20)

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

    func _Info()
    Local $rechner
    Local $wmiRoot
    Local $wmiColl
    Local $ip, $gw

    $rechner = GUICtrlRead($rechner_input)
    $wmiRoot = ObjGet("winmgmts:\\" & $rechner & "\root\CIMV2")
    if @error then
    MsgBox(48,"Fehler", "Rechner existiert nicht oder Firewall aktiv!")
    Return 0
    EndIf

    $wmiColl= $wmiRoot.ExecQuery("Select * FROM Win32_ComputerSystem ")
    For $wmiObj In $wmiColl
    GUICtrlSetData($username,String($wmiObj.UserName))
    GUICtrlSetData($hersteller,String($wmiObj.Manufacturer))
    GUICtrlSetData($modell,String($wmiObj.Model))
    Next
    $wmiColl = 0

    $wmiColl= $wmiRoot.ExecQuery("Select * FROM Win32_NetworkAdapterConfiguration ")
    For $wmiObj In $wmiColl
    $ip = StringSplit(String($wmiObj.IPAddress (0)),".")
    $gw = StringSplit(String($wmiObj.DefaultIPGateway (0)),".")
    if StringUpper($wmiObj.DNSHostName) == StringUpper($rechner) and $ip[0] == $gw[0] then
    GUICtrlSetData($ipadresse,String($wmiObj.IPAddress (0) & @crlf))
    GUICtrlSetData($subnetmaske,String($wmiObj.IPSubnet (0) & @crlf))
    GUICtrlSetData($gateway,String($wmiObj.DefaultIPGateway (0) & @crlf))
    GUICtrlSetData($dnsserver,String($wmiObj.DNSServerSearchOrder (0) & @crlf) & String($wmiObj.DNSServerSearchOrder (1) & @crlf))
    GUICtrlSetData($macadresse,String($wmiObj.MACAddress (0) & @crlf))
    if String($wmiObj.DHCPServer (0)) == "" Then
    GUICtrlSetData($dhcpserver,"Nein")
    Else
    GUICtrlSetData($dhcpserver,String($wmiObj.DHCPServer (0) & @crlf))
    EndIf
    EndIf
    Next
    $wmiColl = 0

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

    $wmiColl = $wmiRoot.ExecQuery("SELECT * FROM Win32_LogicalDisk")
    For $wmiObj In $wmiColl
    if $wmiObj.Caption == "C:" Then
    GUICtrlSetData($freespace,string(Round($wmiObj.FreeSpace/1024/1024/1024,1) & " GB" & @crlf))
    GUICtrlSetData($gesamtspace,string(Round($wmiObj.Size/1024/1024/1024,1) & " GB" & @crlf))
    EndIf
    Next
    $wmiColl = 0

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

    $wmiColl = $wmiRoot.ExecQuery("SELECT * FROM Win32_OperatingSystem")
    For $wmiObj In $wmiColl
    GUICtrlSetData($betriebssystem,string($wmiObj.Caption & @crlf))
    GUICtrlSetData($servicepack,string($wmiObj.CSDVersion & @crlf))
    Next
    $wmiColl = 0

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

    EndFunc

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

    ;Fenster aufrufen
    GUISetState(@SW_SHOW)
    $msg = 0
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $btn_rechnerinput
    _Info()
    EndSelect
    WEnd

    [/autoit]
  • Die Netzwerk Informationen bleiben bei mir leer!

    Du musst das Array (z.B. $wmiObj.IPAddress) vollständig auslesen (bei mehrere Netzwerkadapter)

    z.B.:

    [autoit]


    For $x = 0 To UBound($wmiObj.IPAddress) - 1
    $IP &= $wmiObj.IPAddress($x) & ", "
    Next

    [/autoit]

    Ferner benutze ich noch dies, um nur die IP's zu bekommen, die auch aktiv sind:

    [autoit]


    $wmiColl= $wmiRoot.ExecQuery("SELECT DHCPServer, Description, WINSPrimaryServer, WINSSecondaryServer, MACAddress, DefaultIPGateway, IPAddress, IPSubnet, DNSServerSearchOrder, DNSDomainSuffixSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", "WQL", 0x30)

    [/autoit]

    Habe u.a. auch die Infos in SIC2 ausgelesen. Kannst ja mal dort unter Func Network($srv) nachschauen.

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    4 Mal editiert, zuletzt von UEZ (6. Oktober 2009 um 16:40)

  • Hi,
    ist das normal das bei Angabe der IP die Netzwerkinfos leer bleiben, aber bei Verwendung des Namens angezeigt werden?
    ciao
    Andy

  • Andy
    Bei Eingabe der IP-Adresse habe ich noch nicht ausprobiert gehabt, werde ich morgen überprüfen und nachbessern.

    UEZ
    Ich habe mit Absicht nur die erste NIC ausgelesen, da nicht unbedingt die virtuellen NICs angezeigt werden sollen.
    Ich schaue es mir mal bei Dir an und mache mir Gedanken über die Darstellung von mehreren NICs, evtl. über ein Listfeld und mit TAB´s (für verschiedene Bereiche) damit es leichter ausbaufähig ist.

    Danke für Eure Hinweise

  • Ich habe Eure Anregungen aufgegriffen und auf TAB umgestellt.
    Nun bekommt man auch Remote-Angaben, wenn man die IP-Adresse eintippt.
    Wenn das Programm bei Euch so funktioniert, werde ich es weiter ausbauen.
    Danke schon mal für Euer Feedback.

    Grüße
    Guido

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; ===========================================================================================
    ;
    ; Script Information
    ;
    ; Title: Remote - Informationen
    ; Author: Guido Eink
    ; Description: Informationen zu Remote-Rechner und angemeldeten Benutzer
    ; Version: 0.2
    ; Änderung: Umstellung auf TAB´s
    ; ===========================================================================================

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

    ;Konstanten und Variablen für die GUI
    #include < GUIConstants.au3 >
    ;Textarea (Edit) Feld
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    ;ListView
    #include <GuiListView.au3>

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

    ;Fenster erstellen
    GUICreate("Remote Info 0.2", 650, 400)
    GUISetBkColor("0xFFFFCA")
    GUISetFont(9, 400, 0, "Arial")

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

    Global $rechnerinput, $rechner
    Global $nicedit
    Global $list_System

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

    GUICtrlCreateLabel("Rechner:", 10, 10)
    GUICtrlSetFont(-1, 10, 800)
    $rechner_input = GUICtrlCreateInput("", 100, 10, 140, 20)
    $btn_rechnerinput = GUICtrlCreateButton("Suchen", 270, 10, 60, 20)

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

    ;TAB´s
    $tab = GUICtrlCreateTab(10, 50, 500, 300)
    ;TAB Hardware
    $tabHardware = GUICtrlCreateTabItem("Hardware")
    GUICtrlCreateLabel("Hersteller:", 20, 90)
    GUICtrlSetFont(-1, 10, 800)
    $hersteller = GUICtrlCreateLabel("", 110, 90,150,20)
    GUICtrlCreateLabel("Modell:", 20, 110)
    GUICtrlSetFont(-1, 10, 800)
    $modell = GUICtrlCreateLabel("", 110, 110,300,20)

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

    ;TAB NIC
    $tabNic = GUICtrlCreateTabItem("NIC")
    $nicedit = GUICtrlCreateEdit("", 20, 90, 340, 250, $ES_AUTOVSCROLL + $WS_VSCROLL)

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

    ;TAB User
    $tabUser = GUICtrlCreateTabItem("User")
    GUICtrlCreateLabel("Angemeldet:", 20, 90)
    GUICtrlSetFont(-1, 10, 800)
    $username = GUICtrlCreateLabel("", 110, 90,150,20)

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

    ;TAB System
    $tabSystem = GUICtrlCreateTabItem("System")
    $list_System = GUICtrlCreateListView("Art | Laufwerk | insgesamt | frei ", 10, 80, 490, 100);,$LVS_SORTDESCENDING)
    _GUICtrlListView_SetColumnWidth($list_System, 0, 120)
    _GUICtrlListView_SetColumnWidth($list_System, 1, 90)
    _GUICtrlListView_SetColumnWidth($list_System, 2, 90)
    _GUICtrlListView_SetColumnWidth($list_System, 3, 90)

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

    ;Fenster aufrufen
    GUISetState(@SW_SHOW)
    $msg = 0
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $btn_rechnerinput
    $rechner = GUICtrlRead($rechner_input)
    _Info()
    EndSelect
    WEnd

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

    Func _info()
    Local $wmiRoot

    $wmiRoot = ObjGet("winmgmts:\\" & $rechner & "\root\CIMV2")
    if @error then
    MsgBox(48,"Fehler", "Rechner existiert nicht oder Firewall aktiv!")
    Return 0
    EndIf
    _hardware()
    _nic()
    _system()
    EndFunc

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

    ;Hardware
    func _hardware()
    Local $wmiRoot
    Local $wmiColl

    $wmiRoot = ObjGet("winmgmts:\\" & $rechner & "\root\CIMV2")
    if @error then
    MsgBox(48,"Fehler", "Rechner existiert nicht oder Firewall aktiv!")
    Return 0
    EndIf

    $wmiColl= $wmiRoot.ExecQuery("Select * FROM Win32_ComputerSystem ")
    For $wmiObj In $wmiColl
    GUICtrlSetData($username,String($wmiObj.UserName))
    GUICtrlSetData($hersteller,String($wmiObj.Manufacturer))
    GUICtrlSetData($modell,String($wmiObj.Model))
    Next
    $wmiColl = 0
    EndFunc

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

    ;NIC
    Func _nic()
    Local $wmiRoot
    Local $wmiColl
    Local $ip, $subnet, $gw, $dns1, $dns2, $mac, $dhcp, $beschreibung

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

    GUICtrlSetData($nicedit,"")
    $wmiRoot = ObjGet("winmgmts:\\" & $rechner & "\root\CIMV2")
    $wmiColl= $wmiRoot.ExecQuery("SELECT DHCPServer, Caption, Description, MACAddress, DefaultIPGateway, IPAddress, IPSubnet, DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", "WQL", 0x30)

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

    For $wmiObj In $wmiColl
    $beschreibung = StringSplit(String($wmiObj.Description),"-")
    $beschreibung = $beschreibung[1]
    $ip = "IP-Adresse" & @TAB & String($wmiObj.IPAddress (0))
    $subnet = "Subnetmaske:" & @TAB & String($wmiObj.IPSubnet (0))
    $gw = "Gateway:" & @TAB & @TAB & String($wmiObj.DefaultIPGateway (0))
    $dns1 = "1. DNS-Server:" & @TAB & String($wmiObj.DNSServerSearchOrder (0))
    $dns2 = "2. DNS-Server: " & @TAB & String($wmiObj.DNSServerSearchOrder (1))
    $mac = "MAC-Adresse:" & @TAB & String($wmiObj.MACAddress (0))
    if String($wmiObj.DHCPServer (0)) == "" Then
    $dhcp = "DHCP-Server:" & @TAB & "Nein"
    Else
    $dhcp = "DHCP-Server:" & @TAB & String($wmiObj.DHCPServer (0))
    EndIf
    GUICtrlSetData($nicedit, $beschreibung & @CRLF & $ip & @crlf & $subnet & @crlf & $gw & @crlf & $dns1 & @crlf & $dns2 & @crlf & $mac & @crlf & $dhcp & @CRLF & @CRLF, 1)
    Next
    $wmiColl = 0
    EndFunc

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

    ;User
    func _user()
    Local $wmiRoot
    Local $wmiColl

    $wmiRoot = ObjGet("winmgmts:\\" & $rechner & "\root\CIMV2")
    $wmiColl= $wmiRoot.ExecQuery("Select * FROM Win32_ComputerSystem ")

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

    For $wmiObj In $wmiColl
    GUICtrlSetData($username,String($wmiObj.UserName))
    GUICtrlSetData($hersteller,String($wmiObj.Manufacturer))
    GUICtrlSetData($modell,String($wmiObj.Model))
    Next
    $wmiColl = 0
    EndFunc

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

    ;System
    Func _system()
    Local $wmiRoot
    Local $wmiColl
    Local $lw, $free, $insgesamt, $art

    $wmiRoot = ObjGet("winmgmts:\\" & $rechner & "\root\CIMV2")
    $wmiColl = $wmiRoot.ExecQuery("SELECT * FROM Win32_LogicalDisk")
    _GUICtrlListView_DeleteAllItems($list_System)

    For $wmiObj In $wmiColl
    if (string($wmiObj.Description) == "Netzwerkverbindung") Then
    $art = string($wmiObj.ProviderName)
    Else
    $art = string($wmiObj.Description)
    EndIf
    $lw = string($wmiObj.Caption)
    $free = string(Round($wmiObj.FreeSpace/1024/1024/1024,1) & " GB")
    $insgesamt = string(Round($wmiObj.Size/1024/1024/1024,1) & " GB")
    GUICtrlCreateListViewItem($art & "|" & $lw & "|" & $insgesamt & "|" & $free, $list_System)
    Next
    $wmiColl = 0
    EndFunc

    [/autoit]