Powershell Schleife

Marco26

Cadet 3rd Year
Registriert
Sep. 2016
Beiträge
37
Hiho ^^

Ich suche schon den ganzen Vormittag nach ner Möglichkeit eine Schleife in diesen Code einzubauen.
Ich poste hier einfach mal den Teil den ich wiederholen will.
Ich hab schon einige Seiten durchgelesen aber konnte irgendwie nichts davon wirklich umsetzten.
Das ganze Programm an sich hat ne GUI und erstellt einen Ordner im Angegebenen Pfad. Dann erstellt er einen Unterordner plus eine AD Gruppe das Vollzugriff auf Ihn hat und deaktiviert die Vererbung in der Gruppe. Einen Share eben ^^ Jetzt soll er den Teil in dem er die Unterordner erstellt so oft wiederholen bis ich auf den Button Ende klicke. Die Abfrage wäre dann wahrscheinlich in die Richtung wenn knopf ja dann wiederholen ansonsten beenden
Hier ist der Teil des Codes der wiederholt werden soll.
Code:
#'Ändert den Text, entfernt und deaktiviert das Textfeld und den Knopf, erstellt den Share
$buttonOK2.add_click({

$label.Text = "Wählen Sie aus oder geben Sie selbst an"

New-Item -Name $textfieldName.text -ItemType directory -Path $textfieldpath.text

$form.Controls.Remove($textfieldName)
$form.Controls.Remove($buttonOK2)

$form.Controls.Add($buttonOK3)
$form.Controls.Add($ComboBox)

})

#ComboBox
$ComboBox = New-Object System.Windows.Forms.ComboBox
$ComboBox.Location = New-Object System.Drawing.Size 50,60
$ComboBox.Size = New-Object System.Drawing.Size 200,30

[void] $ComboBox.Items.Add("Kunden")
[void] $ComboBox.Items.Add("Buchhaltung")
[void] $ComboBox.Items.Add("Finanzen")
[void] $ComboBox.Items.Add("Geschäftsführung")
[void] $ComboBox.Items.Add("Verwaltung")

$ComboBox.Height = 70
$form.TopMost = $true

$form.add_Shown({$form.Activate()})
[void] $form.ShowDialog()

#Textknopf
$buttonOK3 = New-Object Windows.Forms.button
$buttonOK3.Location = New-Object Drawing.Point 50,200
$buttonOK3.Text = "OK"
#Ändert den Text, entfernt und deaktiviert das Textfeld und den Knopf, erstellt den Share
$buttonOK3.add_click({

$form.Controls.Remove($Combobox)
$form.Controls.Remove($buttonOK3)
$form.Controls.Remove($buttonCancel)
$form.Controls.Add($EndButton)

$label.Text = "Möchten Sie einen weiteren Ordner erstellen"

#Erstellt den Unterordner
(New-Item -Path ($textfieldPath.Text + $textfieldName.Text) -Name $Combobox.Text -ItemType directory)

#Erstellt die ADGruppe die später zugriff auf den Unterordner bekommt. Name lautet immer "grp_Share_"Name des Unterordners"
New-ADGroup -GroupScope Global -Name ("grp_Share_" + $Combobox.text) -Description "Zugriffsgruppe für den Ordner $combobox.text im Share $textfieldname"

#Deaktiviert Vererbung
$folder = ($textfieldpath.Text + $textfieldname.Text + $Combobox.text)
$acl2 = Get-Acl -Path $folder
$acl2.SetAccessRuleProtection($True, $True)
set-acl -Path $folder -AclObject $acl2

#Vollzugriff
$Right = "FullControl"
$Path = ($textfieldPath.Text + $textfieldName.Text + $Combobox.Text)
$Principal=("Contoso\grp_Share_" + $Combobox.Text)
$rule=New-Object System.security.AccessControl.FileSystemAccessRule($Principal,$Right,3, 0,"Allow")
$acl = get-acl $Path
$acl.SetAccessRule($rule)
set-acl $Path $acl

})
#Knopf der bei Wiederholung gedrückt werden soll
$JaButton = New-Object Windows.Forms.Button
$JaButton.Location = New.Object Drawing.Point50, 200
$JaButton.Text = "Ja"
$JaButton.Add_Click({
 
Code:
While($true) {
   dein Code...hier
}

Die Frage wäre aber nach dem Usercase..das zu tun bis du stop drücks ist ..komisch.
sollte es nicht sein bis er alle Folder durch hat?
 
Zuletzt bearbeitet: (de)
Und kann ich für $true irgendwie diesen Button Ja einsetzten ?

Naja er sollte es halt machen bis ich auf einen bestimmten Knopf drücke der das ganze beendet.
Vielleicht will man ja nur bestimmte Ordner haben und braucht den Ordner Geschäftsführung bspweise nicht.
Außerdem kannst du ja auch eigene Namen eingeben also theoretisch solange Ordner erstellen bis du eben keinen bock mehr hast ^^
 
Zuletzt bearbeitet:
Zurück
Oben