Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

[PowerShell] IF Abfrage- und While-Schleifenprobleme

$
0
0

Hallo,

Ich möchte in Powershell überprüfen, ob ein dort gestartetes Fenster normal Beendet wurde, einen falschen Wert eingegeben wurde oder ob ein richtiger Wert eingegeben wurde. Bei einem Falschen Wert soll alles wiederholen, beim Beenden halt Beenden und bei einem richtigen Wert solls weitergehen (while beenden).

Hier mal mein Code-Problem (SerialConsole.ps1)

$Help = @"
.\SerialConsole.ps1
***PowerShell Serielle Konsole***
********von Pascal Gesell********
Autor: Pascal Gesell
Setzte die PowerShell execution policy auf 'RemoteSigned' um
dieses Script ausführen zu können.
PS> Set-ExecutionPolicy RemoteSigned"@

$stat = $null
$schleife = $true

function MainGUI
{
	[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
	[Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null
	$frm = New-Object System.Windows.Forms.Form
	$btn1 = New-Object System.Windows.Forms.Button
	$btn2 = New-Object System.Windows.Forms.Button
	$txtbox1 = New-Object System.Windows.Forms.TextBox
	$lbl1 = New-Object System.Windows.Forms.Label
	$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
	$Handler_btn2_Click=
	{
		$stat = "X"
		$frm.close()
	}

	$Handler_btn1_Click=
	{
		If($txtbox1.Text.Contains("COM") -eq $true)
		{
			$stat = "Y"
			$frm.Close()
		}
		else
		{
			[System.Windows.Forms.MessageBox]::Show("Ungültiger Wert","Fehler",[System.Windows.Forms.MessageBoxButtons]::OK,[System.Windows.Forms.MessageBoxIcon]::Exclamation)
			$stat = "N"
			$frm.Close()
		}
	}
	$OnLoadForm_StateCorrection=
	{
		$frm.WindowState = $InitialFormWindowState
	}
	#Size: Weite, Höhe
	$frm.Text = "PE-GUI"
	$frm.Name = "frm"
	$frm.ClientSize = New-Object System.Drawing.Size(200,60)
	$frm.ShowIcon = $false
	$frm.MinimizeBox = $false
	$frm.MaximizeBox = $false
	$frm.CancelButton = $btn1
	$btn1.Name = "btn1"
	$btn1.Size = New-Object System.Drawing.Size(65,20)
	$btn1.Text = "Verbinden"
	$btn1.Location = New-Object System.Drawing.Size(130,30)
	$btn1.add_Click($Handler_btn1_Click)
	$frm.Controls.Add($btn1)
	$btn2.Name = "btn2"
	$btn2.Size = New-Object System.Drawing.Size(65,20)
	$btn2.Text = "Beenden"
	$btn2.Location = New-Object System.Drawing.Size(130,5)
	$btn2.add_Click($Handler_btn2_Click)
	$frm.Controls.Add($btn2)
	$txtbox1.Name = "txtbox1"
	$txtbox1.Size = New-Object System.Drawing.Size(115, 20)
	$txtbox1.Location = New-Object System.Drawing.Size(5, 30)
	$frm.Controls.Add($txtbox1)
	$lbl1.Name = "lbl1"
	$lbl1.Text = "COM-PORT:"
	$lbl1.Size = New-Object System.Drawing.Size(150, 20)
	$lbl1.Location = New-Object System.Drawing.Size(5, 8)
	$frm.Controls.Add($lbl1)
	$InitialFormWindowState = $frm.WindowState
	$frm.add_Load($OnLoadForm_StateCorrection)
	$frm.ShowDialog() | Out-Null
}

If ($Host.Name -match 'ise')
{
	Write-Host "Warnung: Dieses Script muss in der Konsole ausgeführt werden`n`Rechts-Klick auf dem Script und wähle 'Mit PowerShell ausführen'"
	break;
}

while($schleife -eq $true)
{
	MainGUI
	If($stat -eq "N")
	{
		$schleife = $true
	}
	ElseIf($stat -eq "Y")
	{
		$schleife = $false
	}
	ElseIf($stat -eq "X")
	{
		$schleife = $false
		EXIT
		break;
	}
}

break;

Ich wäre sehr dankbar wenn mich jemand in die richtige Richtung schubsen würde, da ich selber neu in der Powershell-Welt bin.

mfg & thx

gfcwfzkm - Pascal


Hoi


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>