Fehler in der If Schleife

Marco26

Cadet 3rd Year
Registriert
Sep. 2016
Beiträge
37
Hey zusammen,

Bei meinem Programm das einen Share erstellen soll.

Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

#Fenster
$form = New-Object Windows.Forms.Form
$form.text = "Share erstellen"

#Label
$label = New-Object Windows.Forms.Label
$label.Location = New-Object Drawing.Point 50,30
$label.Size = New-Object Drawing.Point 200, 15
$label.Text = "Geben Sie den Pfad an"
$form.Controls.Add($label)

#Textbar für den Pfad
$textPath = New-Object Windows.Forms.Textbox
$textPath.Location = New-Object Drawing.Point 50,60
$textPath.Size = New-Object Drawing.Point 200,30
$textPath.Text = "E:\"
$form.Controls.Add($textPath)

#Textbar für den Namen
$textName = New-Object Windows.Forms.Textbox
$textName.Location = New-Object Drawing.Point 50,60
$textName.Size = New-Object Drawing.Point 200, 30
$textName.Text = "Sharename"

#EndeKnopf
$ButtonEnd = New-Object Windows.Forms.Button
$ButtonEnd.Location = New-Object Drawing.Point 150,200
$ButtonEnd.Text = "Ende"

#Cancelknopf
$ButtonCancel = New-Object Windows.Forms.Button
$ButtonCancel.Location = New-Object Drawing.Point 150,200
$ButtonCancel.Text = "Cancel"
$ButtonCancel.Add_Click({$form.Close()})
$form.Controls.Add($ButtonCancel)

#WeiterButton Nr2
$WeiterButton2 = New-Object Windows.Forms.Button
$WeiterButton2.Location = New-Object Drawing.Point 50,200
$WeiterButton2.Text = "Weiter"

#WeiterButton Nr.1
$WeiterButton1 = New-Object Windows.Forms.Button
$WeiterButton1.Location = New-Object Drawing.Point 50,200
$WeiterButton1.Text = "Weiter"
$form.Controls.Add($WeiterButton1)
$WeiterButton1.Add_Click({

if (Test-Path $textPath.Text)  {

$label.Text = "Geben Sie den Sharename ein"
$form.Controls.Remove($textPath)
$form.Controls.Remove($WeiterButton1)

$form.Controls.Add($textName)
$form.Controls.Add($WeiterButton2)
}
Else {

$label.Text = ("Der Pfad" + $textPath.Text + "konnte nicht gefunden werden")
}
})

$WeiterButton2.Add_Click({

if (Test-Path $textPath.Text$textName.Text) {

$label.Text = "Der Ordner existiert bereits"
}

Else {

New-Item -Name $textName.Text -ItemType directory -Path $textPath.Text

$form.Controls.Remove($textName)
$form.Controls.Remove($WeiterButton2)
}

})

$form.ShowDialog()

Bei der ersten If Schleife macht er genau was er tun soll, bei zweiten bekomme ich jedoch diesen Fehler:
Unbenannt.PNG

Wundert mich doch sehr da er bei der ersten If Schleife keine Probleme hatte.
Er sollte eigentlich Nachschauen ob der Pfad existiert, und wenn er dies tut dann soll er den Text der GUI zu "Der Ordner existiert bereits" ändern, wenn aber nicht dann soll er einen Neuen Ordner mit genau diesem Namen im Angegebenen Pfad erstellen. danach entfernt er den Weiter Button und das Textfeld.

Ihr ne Idee wo ich mich da verhaspelt habe ?
 
IF-SCHLEIFE ?? Dein Ernst ?? :mad:

(saubere Einrückungen bei den Klammern wäre ziemlich hilfreich für die Lesbarkeit)
 
Kommt da noch was ?
Beziehungsweise was Hilfreiches...
 
Wäre schön, wenn du sagen würdest, welche Sprache das ist. In allen Sprachen in denen ich bisher gearbeitet habe, ist das Backslash das Zeichen für die Escapesequence, daher musst du eventuell das Escapezeichen escapen.

PS: Es heißt If-Anweisung oder If-Block. Eine Schleife ist etwas, dass mehrfach (auch keinmal) durchlaufen werden kann(while, do/while, for).
 
PS trift es ganz gut, ist nämlich in PowerShell geschrieben. Ich hab gesagt "If-Schleife" da mir aufgefallen ist das wenn ich bei der ersten einen nicht existenten Pfad angebe, das ich dann so lange auf Weiter klicken kann bis ein richtiger Pfad angegeben wird. (schleife ist es nicht stimmt schon) ^^

Ich würd den Namen des Themas ja ändern aber das scheint nicht zu gehen ^^
 
In PowerShell ist das Backslash kein Escapezeichen, aber nach einer google Suche funktioniert die Stringverkettung mit einem "+" und nicht einfach hintereinander wegschreiben. Zumindest finde ich die Notation

$textPath.Text$textName.Text

nicht.
 
Zuletzt bearbeitet:
Ich hab jetzt ne Variable definiert

$Pfath = ($textPath.text + $textName.Text)

Die erkennt er auch jedoch funktioniert die Abfrage noch immer nicht ganz.

Wenn ich jetzt starte frägt er wieder den Namen für den Ordner ab, wenn der nicht existiert erstellt er ihn ohne Probleme,
wenn er aber schon existiert dann zeigt er mir nichts an. Nur unten in der Konsole sehe ich das der Ordner schon vorhanden ist und deshalb nicht erstellt werden kann.
 
Code:
$WeiterButton1.Add_Click({
if (Test-Path $textPath.Text)  {
		$label.Text = "Geben Sie den Sharename ein"
		$form.Controls.Remove($textPath)
		$form.Controls.Remove($WeiterButton1)
		
		$form.Controls.Add($textName)
		$form.Controls.Add($WeiterButton2)
	} Else {
		$label.Text = ("Der Pfad " + $textPath.Text + " konnte nicht gefunden werden") # Leerzeichen erweitert
	}
})
 
$WeiterButton2.Add_Click({
	$temp = $textPath.Text + $textName.Text
	# Write-Host $temp # Debugausgabe
	if (Test-Path $temp) {
		$label.Text = "Der Ordner existiert bereits"
	} Else {
		New-Item -Name $textName.Text -ItemType directory -Path $textPath.Text
		$form.Controls.Remove($textName)
		$form.Controls.Remove($WeiterButton2)
	}
})

Dass ist das, was ich bei mir lokal ändern musste, damit es funktioniert.
 
@Paccoderpster Haha perfekt jetzt läuft es wie geschmiert ^^ Erstmal dickes Dank an dich, du hast mir bisher so gut geholfen ^^ (die anderen natürlich auch ;D)
Ich werd jetzt innerhalb der nächsten 1 2 Stunden noch den dritten und wahrscheinlich kompliziertesten Part machen, in dem er einen Unterordner erstellt und eine AD Gruppe dazu die dann vollzugriff hat. Das ganze ist wieder ne if Anweisung und da muss dann auch noch ein Loop rein. Wie es ungefähr aussehen wird weiß ich schon ich werds hier einfach nochmal reinschreiben. Bei so nem Loop mit if Klause drinnen häng ich dochh ein wenig ^^
Ergänzung ()

Hat sich erledigt habe den Teil selber hinbekommen ^^

Thema is /closed ^^
 

Ähnliche Themen

Zurück
Oben