cosmo87 0 Geschrieben 21. September 2021 Melden Teilen Geschrieben 21. September 2021 Hallo zusammen, ich beiß mir momentan die Zähne aus beim Erstellen eines kleinen Monitoring-Tools für meine "weniger technisch begabten Kollegen" . Die Idee: alle 43 Standorte die jeweiligen Geräte mittels "Test-Connection" abfragen. Dies sind je Standort 1-3 Systeme + Router. Jetzt wollte ich mit Hilfe einer GUI den Online Status mit einem grünen Button darstellen. Beim Klick auf dem Button soll eine eine neues Fenster erscheinen mit den jeweiligen Befehlen. Beispiel von mir aus Visual Studio: Versucht hätte ich es mit folgenden: Mit XML: Stackpanel, Dockpanel, Grid (nur mit XML finde ich es noch verwirrender. Wobei wenn nötig würde ich mich hier weiter rein kämpfen.) ohne XML: GridView, DataGridView, ListView Am besten klappte es, für mich persönlich, bisher mit "DataGridView": $Standort = @("001","002","003","004","005") function Add-Server{ Param ( $Standort = "", $SystemXY1 = "", $SystemXY2 = "", $SystemXY3 = "", $Router = "" ) $DataGridView_ServerName.Rows.Add($Standort, $SystemXY1, $SystemXY2, $SystemXY3, $Router) } #Load the GDI+ and WinForms Assemblies [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") #Define Form $form1 = New-Object System.Windows.Forms.Form $form1.Text = "" $form1.Name = "form1" $form1.DataBindings.DefaultDataSourceUpdateMode = 0 $form1.Location = New-Object System.Drawing.Point(10, 10) $form1.AutoSize = $true $form1.WindowState = "Normal" $form1.StartPosition = "CenterScreen" #Definine DataGridView $DataGridView_ServerName = New-Object System.Windows.Forms.DataGridView $DataGridView_ServerName.AllowUserToAddRows = $false $DataGridView_ServerName.AllowUserToDeleteRows = $false $DataGridView_ServerName.Top = 10 $DataGridView_ServerName.Left = 10 $DataGridView_ServerName.AutoSize = $true $DataGridView_ServerName.ColumnHeadersVisible = $true $DataGridView_ServerName.ColumnHeadersHeight = 20 $DataGridView_ServerName.Enabled = $true #Add Columns $Column = New-Object System.Windows.Forms.DataGridViewTextBoxColumn $Column.Width = 80 $Column.Name = 'Standort XY' $DataGridView_ServerName.Columns.Add($Column) | Out-Null $Column1 = New-Object System.Windows.Forms.DataGridViewButtonColumn $Column1.Width = 70 $Column1.Name = 'System XY1' $Column1.Text = 'Online!' $DataGridView_ServerName.columns.Add($Column1) | Out-Null $Column2 = New-Object System.Windows.Forms.DataGridViewButtonColumn $Column2.Width = 70 $Column2.Name = 'System XY2' $DataGridView_ServerName.Columns.Add($Column2) | Out-Null $Column3 = New-Object System.Windows.Forms.DataGridViewButtonColumn $Column3.Width = 70 $Column3.Name = 'System XY3' $DataGridView_ServerName.Columns.Add($Column3) | Out-Null $Column4 = New-Object System.Windows.Forms.DataGridViewButtonColumn $Column4.Width = 70 $Column4.Name = 'Router' $DataGridView_ServerName.Columns.Add($Column4) | Out-Null $form1.Controls.AddRange(($DataGridView_ServerName)) #Add Rows for([int]$i=0;$i -lt $Standort.count; $i++ ){ Add-Server $Standort[$i] "Check1" "Check2" "Check3" $Router } $form1.Add_Shown({$form1.Activate()}) $form1.ShowDialog() Meine Frage nun: Wie bekomme ich einen Farbwechsel hin wenn ein System zB offline geht? Ich dachte zuerst ich könnte den Background des Buttons ändern aber bei "New-Object System.Windows.Forms.DataGridViewButtonColumn" lässt sich das nicht einstallen und bei "System.Windows.Forms.Button" kann ich es nicht in "DataGridView" hinzufügen. Ich hoffe hier könnt mir helfen :) Zitieren Link zu diesem Kommentar
MurdocX 950 Geschrieben 21. September 2021 Melden Teilen Geschrieben 21. September 2021 Hallo cosmo87, mein Vorschlag wird dir nicht direkt bei deinem Powershell-Problem helfen, sollte aber die Anforderung insgesamt vereinfachen. Für solche Tasks gibt es effektivere und kostenlose Tools. Ein Vorschlag ist hierbei PRTG Network Monitor » Netzwerküberwachung all in one (paessler.com). Dort sind 100 Sensoren kostenfrei einsetzbar. Damit kann die Anforderung auch für deine Kollegen einfach umgesetzt werden. Das Tool hat eine einfache Bedienung für die die damit nicht so oft arbeiten. # Update Die Powershell ist keine einfache Sprache für eine GUI Entwicklung. Nächster Vorschlag: Schnapp Dir eine Visual Studio CommunityEdition. Pack dort die .Net-Formen rein und kompiliere eine Exe dafür. C# ist ähnlich zur Powershell und sollte umsetzbar sein. In beiden Sprachen werden die .NET-Frameworks verwendet. Zitieren Link zu diesem Kommentar
cosmo87 0 Geschrieben 21. September 2021 Autor Melden Teilen Geschrieben 21. September 2021 vor 33 Minuten schrieb MurdocX: Dort sind 100 Sensoren kostenfrei einsetzbar. Das ist schon das erste Problem... vor 34 Minuten schrieb MurdocX: Die Powershell ist keine einfache Sprache für eine GUI Entwicklung. Ich habe bzw, ich musste mich bewusst für Powershell entscheiden. Es steht soweit schon alles. Mir fehlt nur noch diese GUI... Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 21. September 2021 Melden Teilen Geschrieben 21. September 2021 Hi, vor 3 Stunden schrieb cosmo87: Das ist schon das erste Problem... dann guck dir bspw. Zabbix an. Das dürfte unterm Strich deutlich effektiver sein. In der Regel bekommt man ja beim Essen Hunger. Gruß Jan 1 Zitieren Link zu diesem Kommentar
cj_berlin 1.315 Geschrieben 21. September 2021 Melden Teilen Geschrieben 21. September 2021 Zabbix ist eines der drei wirklich wertvollen Beiträge meines Geburtslandes zu der IT-Welt Die anderen beiden sind mikroTik und Vadims Podans (@crypt32). Zitieren Link zu diesem Kommentar
Squire 261 Geschrieben 22. September 2021 Melden Teilen Geschrieben 22. September 2021 oder check_mk gibt es als kostenlose Variante ... Zitieren Link zu diesem Kommentar
Nobbyaushb 1.471 Geschrieben 22. September 2021 Melden Teilen Geschrieben 22. September 2021 PRTG ist bis 100 Sensoren auch kostenlos Zitieren Link zu diesem Kommentar
Squire 261 Geschrieben 22. September 2021 Melden Teilen Geschrieben 22. September 2021 @Nobbyaushb - die reichen ihm nicht (hat er oben als Antwort geschrieben) Zitieren Link zu diesem Kommentar
cosmo87 0 Geschrieben 22. September 2021 Autor Melden Teilen Geschrieben 22. September 2021 vor 17 Stunden schrieb testperson: dann guck dir bspw. Zabbix an. Das dürfte unterm Strich deutlich effektiver sein. In der Regel bekommt man ja beim Essen Hunger. Das sieht ja mal auch sehr gut aus. Wird, wenn mal Zeit dafür ist.... , nochmal genauer begutachtet! Danke dafür! BTT: Ich stelle meine Frage mal einfacher: Kann ich das Object "System.Windows.Forms.Button" den "BackgroundColor" ändern mit Hilfe einem Timers ".add_tick(if/else)"? Bzw. das Ergebnis von if/else als button.text anzeigen lassen? Zitieren Link zu diesem Kommentar
MurdocX 950 Geschrieben 22. September 2021 Melden Teilen Geschrieben 22. September 2021 Am 21.9.2021 um 14:48 schrieb cosmo87: Meine Frage nun: Wie bekomme ich einen Farbwechsel hin wenn ein System zB offline geht? Ich dachte zuerst ich könnte den Background des Buttons ändern aber bei "New-Object System.Windows.Forms.DataGridViewButtonColumn" lässt sich das nicht einstallen und bei "System.Windows.Forms.Button" kann ich es nicht in "DataGridView" hinzufügen. Ich hoffe hier könnt mir helfen :) Ja Hier wurde deine Frage beantwortet: c# - Change color of Button in DataGridView - Stack Overflow 2 Zitieren Link zu diesem Kommentar
cosmo87 0 Geschrieben 23. September 2021 Autor Melden Teilen Geschrieben 23. September 2021 vor 20 Stunden schrieb MurdocX: Ja Hier wurde deine Frage beantwortet: c# - Change color of Button in DataGridView - Stack Overflow Danke dafür. Das hat mir etwas weiter geholfen Jetzt überlege ich noch ob ich die Abfragen mit runspace laufen lassen in einer while-schleife laufen lassen kann und davon den rückgabewerte auslese. Sozusagen: .BackgrundColor = (if{runspaceXY}{red}else{red}) runspace deswegen weil es 75 Verbindungen sind und die zB. 1x alle 10 min abgefragt werden soll. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.