Oberflächengestaltung zur Aufführung einfachster Befehle

wasd123

Lt. Commander
Registriert
März 2017
Beiträge
1.067
Moin!

Ich bin Servicetechniker für ein kleines IT-Unternehmen. Über die Jahre hinweg habe ich mir so einige Sachen gebastelt um mir meinen Alltag zu erleichtern.
Dabei handelt es sich zumeist um irgendwelche Batchdateien... zB für die Ordnersyncronisation, diverse Prozesse beenden und neustarten, Windowseinstellungen abändern (Firewall, oder vorbestimmte IP-Adressen verwenden), usw usw...

Nun würde ich mir gerne dafür eine kleines Programm basteln, welches zB als Exe ausgeführt wird und eine simple Oberfläche mit diversen Buttons hat, die dann einfach nur die entsprechenden Batches ausführt.

Leider habe ich mit sowas jedoch noch nie Kontakt gehabt, würde mir dies aber gerne aneignen wollen.
Nun die Frage an euch: welche Sprache ist hierfür am besten geeignet? Ich habe schon öfter mal gelesen, dass eventuell Java oder .NET dafür geeignet sein sollen und auch einen guten Einstieg als Anfänger bietet. Teilt ihr diese Meinung?

Gibt es für sowas vielleicht auch irgendwelche Vorlagen, die man entsprechend anpassen kann?
 
QT kann man auch nehmen. Dürfte nicht allzu schwer sein, auch ohne Vorkenntnisse.
 
Es ginge für sowas auch eine Hta-Anwendung. Also eine Html-Anwendung, die standalone durch den Windows Anwendungshost ausgeführt wird und auf Mausklick Scriptanweisungen ausführt. Machbar ist da so ziemlich alles an Scriptsprachen und auch Batchbefehle sind nutzbar. Bei den Scriptsprachen ist eben darauf zu achten, dass welche genutzt werden die auf den Systemen, auf denen die Hta-Anwendung ausgeführt werden soll, sicher vorhanden sind. Mit Vbs und Javascript ist man eigentlich immer auf der sicheren Seite.
 
wasd123 schrieb:
Ich habe schon öfter mal gelesen, dass eventuell Java oder .NET dafür geeignet sein sollen und auch einen guten Einstieg als Anfänger bietet.
Java ist aber relativ unhandlich für solche Sachen und .NET ist keine Sprache, sondern eine Plattform die man mit verschiedenen Sprachen programmieren kann wie z.B. C# oder Visual Basic.NET.

Wobei jetzt Deine Anforderung ja auch nicht so kompliziert ist. Im Prinzip bräuchtest Du was, wo man mit der Maus eine GUI erzeugen kann und Button-Klicks lediglich mit dem Aufruf einer Batch-Datei verbindet.
Früher war für solche Sachen Visual Basic prädestiniert. Wie es heute mit Visual Basic.NET aussieht, kann ich aber nicht sagen. Vermutlich recht ähnlich.

Ich würde mal Ausschau halten nach Visual Basic .NET und Windows Forms.
Zum Beispiel findet sich da auch auf der Microsoft-Seite Einiges:
https://docs.microsoft.com/en-us/visualstudio/ide/create-a-visual-basic-winform-in-visual-studio
https://msdn.microsoft.com/de-de/library/dd492132.aspx

Das benötigte Visual Studio gibts auch als Community-Version kostenlos:
https://visualstudio.microsoft.com/de/vs/community/
 
.NET ist ziemlich einfach. Erstelle ein neues Windows Forms Projekt (C# oder VB), ziehe einen Button in die Oberfläche. Doppelklicke auf den Button und füge den Code ein wie in diesem Beispiel: http://net-informations.com/q/faq/batfile.html
 
Laufen auf allen Servern nur Windows, oder hast du auch Linux/BSD Server zu warten?
 
es handelt sich eher um Clients, aber ja, da läuft zu 99% Windows drauf
 
ich lese mich derzeit übrigens in ein c# Tutorial ein, mit anschließender Einführung in .NET. Mal schauen. Vieles davon kommt mir schon bekannt vor, ich hoffe ich blick da später durch ;o)
 
Schlage mal AutoIT vor. Da ist die GUI-Erstellung allerdings Katastrophe. Daher wie folgt vorgehen:

1) GUI mit dem 'Koda Form Designer' erstellen
2) Extras > Erzeuge Dialog Code > Code kopieren
3) Quellcode in eine neue .au3 Datei kopieren
4) den Switch-Teil um die jeweiligen Befehle erweitern (Case $Button1 usw.). Beispielhaft:
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Programme", 211, 458, 192, 367)

$Button1 = GUICtrlCreateButton("Notepad", 16, 8, 177, 81, $BS_ICON)

$Button2 = GUICtrlCreateButton("PUTTY", 16, 96, 177, 81)

$Button3 = GUICtrlCreateButton("GERÄTEMANAGER", 16, 184, 177, 81)

$Button4 = GUICtrlCreateButton("DNS leeren", 16, 272, 177, 81)

$Button5 = GUICtrlCreateButton("RechnerInfos", 16, 360, 177, 81)

GUISetState(@SW_SHOW)


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

;Hier die Aktionen der Buttons einfügen

Case $Button1
    ShellExecute("notepad.exe")

Case $Button2
	   ShellExecute("C:\Program Files\PuTTY\putty.exe")

Case $Button3
	   ShellExecute("devmgmt.msc")

Case $Button4
$CMD = "ipconfig /flushdns"
;so, wenn es ein Fenster anzeigen soll
RunWait(@ComSpec & " /k " & $CMD )
;so, wenn das Fenster automatisch geschlossen werden soll
;RunWait(@ComSpec & " /c " & $CMD )

Case $Button5
  FileDelete(@TempDir &"\RECHNERINFOS.vbs")
$Text = "On Error Resume Next" & @CRLF & "strComputer = "".""" & @CRLF & "Dim Client" & @CRLF & "Dim Client2" & @CRLF & "Dim Clientname" & @CRLF & "Dim Idtag" & @CRLF & "Dim WindowsVersion" & @CRLF & "Dim WSHEnvOS" & @CRLF & "Dim WSHEnvPrg" & @CRLF & "Dim fs" & @CRLF & "Dim fso" & @CRLF & "Dim Rechnername" & @CRLF & "Set WSHShell = WScript.CreateObject(""WScript.Shell"")" & @CRLF & "Set WSHEnvOS = WSHShell.Environment(""Process"")" & @CRLF & "Set WSHEnvPrg = WSHShell.Environment(""Process"")" & @CRLF & "set fs = CreateObject (""Scripting.FileSystemObject"")" & @CRLF & "Set objNTInfo = CreateObject(""WinNTSystemInfo"")" & @CRLF & "GetComputerName = lcase(objNTInfo.ComputerName)" & @CRLF & "Rechnername=  ""HOSTNAME : "" & vbTab & GetComputerName" & @CRLF & "strcomputer = "".""" & @CRLF & "Set objWMIService = GetObject(""winmgmts:"" _" & @CRLF & "& ""{impersonationLevel=impersonate}!\\"" & strComputer & ""\root\cimv2"")" & @CRLF & "Set colItems = objWMIService.ExecQuery _" & @CRLF & "(""Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True"")" & @CRLF & "for each objitem in colitems" & @CRLF & "strIPAddress = Join(objitem.IPAddress, "" "")" & @CRLF & "test = Split(strIPAddress, "" "")" & @CRLF & "IP = test(0)" & @CRLF & "Adresse =""IP-ADRESSE : ""  & vbTab & IP " & @CRLF & "next" & @CRLF & "Set IPConfigSet = GetObject(""winmgmts://."").ExecQuery(""select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE"")" & @CRLF & "For Each IPConfig In IPConfigSet" & @CRLF & "If Not IsNull(IPConfig.IPAddress) Then" & @CRLF & "For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)" & @CRLF & "macadresse=""MAC-ADRESSE : ""  & vbTab & IPConfig.MACAddress" & @CRLF & "Next" & @CRLF & "End If" & @CRLF & "Next" & @CRLF & "Set objWMIService = GetObject(""winmgmts://localhost/root/cimv2"")" & @CRLF & "Set colItems = objWMIService.ExecQuery(""Select * from Win32_ComputerSystemProduct"",,48)" & @CRLF & "For Each objItem in colItems" & @CRLF & "modell=""MODELL :  ""  & vbTab & objItem.Name" & @CRLF & "Next" & @CRLF & "Set objWMIService = GetObject(""winmgmts://localhost/root/cimv2"")" & @CRLF & "Set colBIOS = objWMIService.ExecQuery(""Select * from Win32_BIOS"")" & @CRLF & "For each objBIOS in colBIOS" & @CRLF & "Idtag=""ID-Tag / SN : "" & vbTab & objBIOS.SerialNumber" & @CRLF & "Next" & @CRLF & "Set objWMIService = GetObject(""winmgmts://localhost/root/cimv2"")" & @CRLF & "Set colBIOS = objWMIService.ExecQuery(""Select * from Win32_BIOS"")" & @CRLF & "For each objBIOS in colBIOS" & @CRLF & "Biosversion=""BIOS-Version : ""  & vbTab & objBIOS.SMBIOSBIOSVersion" & @CRLF & "Next" & @CRLF & "MsgBox Rechnername + vbnewline + Adresse + vbnewline + macadresse + vbnewline + modell + vbnewline + Idtag + vbnewline + Biosversion, vbOKOnly + vbInformation, ""Rechnerinfos"""

FileWrite(@TempDir &"\RECHNERINFOS.vbs", $Text)
ShellExecute(@TempDir &"\RECHNERINFOS.vbs")

Winwaitclose("RECHNERINFOS")
FileDelete(@TempDir &"\RECHNERINFOS.vbs")

	EndSwitch
WEnd
 
danke ryan, für die sehr ausführliche hilfestellung
 

Ähnliche Themen

Zurück
Oben