springstil
Goto Top

Powershell Werte aus numericupdown abfragen

Hallo zusammen,

ich versuche mich gerade ein wenig in PowerShell. Allerdings lerne ich es besser wenn ich einfach drauf Los mache und ein wenig Google face-smile

Viele Skripte habe ich auch selbst schon hinbekommen. Nun dachte ich mir aber es wäre mal an der zeit für meine Kollegen das ganze mal mit einem GUI zu versehen. Das GUI bekomme ich auch soweit erstellt.. Nun aber zu meiner Frage.

Mein Skript soll eine Email Versenden. Vorher soll man einen Wert in Zahlen angeben den ich dann einfach als Variable in den Text einfüge. Ich Frage die zahlen mit numericupdown ab. Beim "$buttonDachserSenden_Click" soll er dann die Email Versenden mit der Anzahl die in numericupdown drin steht. Allerdings würde ich vorher abfragen wollen ob der wert größer als 0 ist. Das würde ich mit If else lösen.

Nur mein Problem ist das ich es nicht raffe wie ich den Wert aus numericupdown auslese... Vielleicht kann mir das mal eine Plausibel erklären denn aus den Dokumenten von MS werde ich nicht so recht schlau face-smile

$buttonDPDSenden_Click={
	#TODO: Place custom script here

	}


$buttonDachserSenden_Click={
	#TODO: Place custom script here
	
}

$DPD_Anzahl_ValueChanged={
	#TODO: Place custom script here
	
}

$Dachser_anzahl_ValueChanged={
	#TODO: Place custom script here
	
}

$labelDPDPaletten_Click={
	#TODO: Place custom script here

}

$buttonSchließen_Click={
	#TODO: Place custom script here
	$form1.Close()
}

Das wäre zumindest der Teil des Codes für die button und Zähler. Ich benutze einen PowerShell Editor dafür. Allerdings nutze ich den auch nur weil es einfacher ist das GUI zu erstellen. Hab es schon von Hand gemacht finde es aber aufwändig face-smile

Danke schon mal für eure Hilfe face-smile

Content-ID: 1759188884

Url: https://administrator.de/contentid/1759188884

Ausgedruckt am: 21.11.2024 um 20:11 Uhr

colinardo
Lösung colinardo 25.01.2022 aktualisiert um 10:14:11 Uhr
Goto Top
Servus @Springstil,
also erst mal generell wie man sich solches Wissen selbst erarbeitet:
Du arbeitest hier ja mit Windows Forms-Controls, diese sind Teil des .NET Framework wie Powershell selbst auch und damit gilt ebenfalls die Dokumentation des .NET Framework und dessen Klassen. Also schlägt man den Klassennamen des Controls in der Doku hier nach
https://docs.microsoft.com/de-de/dotnet/api/?view=netframework-4.8&t ...
Dort schlägst du dann die Eigenschaften des Controls nach
https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.numeric ...
Und findest dort dann die Eigenschaft Value
https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.numeric ...
Und dort steht dann auch in der Beschreibung
Ruft den dem Drehfeld (auch als Auf-Ab-Steuerelement bezeichnet) zugewiesenen Wert ab oder legt diesen fest.

Heißt für dich dann in deinem Beispiel für die Variable $DPD_Anzahl das du mit
$DPD_Anzahl.Value
bzw.
$Dachser_anzahl.Value
an die Werte der Controls kommst

Um dann auf den Wert zu prüfen nimmst du dann bspw. eine IF-Abfrage
if ($DPD_Anzahl.Value -gt 0){
    # ....
}

Des weiteren bietet heutzutage jeder halbwegs aktuelle Editor eine Intellisense diesbezüglich an mit der du ohne viel nachzuschlagen auch schon einen Eindruck bekommst was ein Objekt an Eigenschaften und Methoden besitzt.

screenshot

Und war das jetzt so schmerzvoll in die Doku zu schauen? face-smile. Das ist Regel Nr. 1 für einen angehenden Programmierer! Nur mit Googlen bist du auf ewig abhängig, und das kann es ja ehrlich gesagt nicht sein.

Wie immer sehr hilfreich für den Beginn mit der Powershell:
Powershell Leitfaden für Anfänger

Grüße Uwe
Springstil
Springstil 25.01.2022 um 10:48:39 Uhr
Goto Top
Oh man eigendlich schon peinlich.. Ich hab meinen Fehler gefunden dank dir face-smile Ich war auf dem richtigen weg.

Vielen lieben dank!

Zitat von @colinardo:

Und war das jetzt so schmerzvoll in die Doku zu schauen? face-smile face-smile. Das ist Regel Nr. 1 für einen angehenden >Programmierer! Nur mit Googlen bist du auf ewig abhängig, und das kann es ja ehrlich gesagt nicht sein.



Grundsätzlich hast du da recht, ich versuche mir nur so das wissen anzueignen face-smile Ich komme mit Trockener Theorie nicht so klar, daher versuche ich mich einfach dran es umzusetzen und nutze dann Google oder Anleitungen um was zu verstehen. Und danke für den Leitfaden, das wird in der Pause beim Essen meine Lektüre zum lesen.
colinardo
colinardo 25.01.2022 aktualisiert um 11:00:14 Uhr
Goto Top
Mit Beispielen arbeiten ist grundsätzlich in Ordnung, aber bei Powershell gibt es viele kleine Stolperfallen die man nur versteht wenn man den Hintergrund dazu kennt (wie Beispielsweise den Variable-Scope). Denn diese kosten einen ehrlich gesagt zu viele Nerven wenn man Stundenlang nur rum probiert und dann im schlimmsten Fall den Spaß verliert.
Ich selbst habe mir damals die Grundlagen-Kapitel damals einfach als erstes einmal durchgelesen und für das Verständnis kleine eigene Beispiele programmiert bis diese so verfestigt waren das man nicht mehr nachschlagen musste. Das gibt einem erst mal eine gute Basis. Natürlich ist es von Vorteil wenn man schon mal mit anderen Programmiersprachen in Kontakt gekommen ist. Vor allem die .NET Derivate wie c#/vb.net & co. und mit dem .NET Framework vertraut ist, dann geht das Einarbeiten natürlich erheblich schneller.

Viel Erfolg und vor allem Spaß weiterhin.
Springstil
Springstil 25.01.2022 um 11:32:09 Uhr
Goto Top
Zitat von @colinardo:

Mit Beispielen arbeiten ist grundsätzlich in Ordnung, aber bei Powershell gibt es viele kleine Stolperfallen die man >nur versteht wenn man den Hintergrund dazu kennt (wie Beispielsweise den Variable-Scope). Denn diese kosten >einen ehrlich gesagt zu viele Nerven wenn man Stundenlang nur rum probiert und dann im schlimmsten Fall den >Spaß verliert.

Ja das hatte ich schon einige male solche Probleme, aber mich spornt sowas meinst dann doch mehr an als es mich abschreckt :D Manchmal schlafe ich auch 1 oder 2 tage drüber und dann komme ich weiter. Oder ich frage einfach nach. Aber du hast schon recht das ich mir die Basics mal besser anschauen sollte.


Viel Erfolg und vor allem Spaß weiterhin.

Danke hab ich sogar schon face-smile

$buttonDPDSenden_Click={

	if ($DPD_Anzahl.Value -le 0)
	{ [System.Windows.Forms.MessageBox]::Show("Anzahl der Paletten darf nicht 0 sein!", "DPD Fehler", 0) }  
	else
	{
		(write-host $DPD_Anzahl.Value)
		$DPD_Anzahl.Value = 0 }
}



$buttonDachserSenden_Click={

	if ($Dachser_Anzahl.Value -le 0)
	{ [System.Windows.Forms.MessageBox]::Show("Anzahl der Paletten darf nicht 0 sein!", "Dachser Fehler", 0) }  
	else
	{
		(write-host $Dachser_Anzahl.Value)
	$Dachser_Anzahl.Value = 0
		}
}


$buttonSchließen_Click={

	$form1.Close()
}

Nun brauch ich nur noch die den Mailcode mit einfügen und testen dann hab ich das erste schon mal vergrafischt :P
colinardo
colinardo 25.01.2022 aktualisiert um 11:36:07 Uhr
Goto Top
vergrafischt
Na dann Petri Heil face-big-smile.