Function Main { $Laufwerke = LaufwerkeFinden Gui $Laufwerke #Write-Host "Dateityp nach Übergabe: " $Pfad.GetType() #Write-Host "Datei ausgewählt mit dem Verzeichnis " $Pfad } Function Gui ($Laufwerke) { [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") # Eigenschaften Fenster $Fenster = New-Object System.Windows.Forms.Form $Fenster.Text = "Laufwerke" $Fenster.Size = New-Object System.Drawing.Size(900,600) #Breite, Höhe $Fenster.StartPosition = "CenterScreen" $Fenster.KeyPreview = $true # was macht das? $Fenster.MaximumSize = $Fenster.Size # legt fest, dass Größe des Fensters nicht verändert werden kann $Fenster.MinimumSize = $Fenster.Size # PfadFeld $PfadFeld = New-Object System.Windows.Forms.TextBox $PfadFeld.Location = New-Object System.Drawing.Size(10,10) $PfadFeld.Size = New-Object System.Drawing.Size(860,20) #$PfadFeld.Text = $Pfad #Bringt nur etwas, wenn $Pfad einen Anfangswert hat, da der Text nicht laufend aktualisiert wird $Fenster.Controls.Add($PfadFeld) # ListeOrdnernamen $ListeOrdnernamen = New-Object System.Windows.Forms.ListBox $ListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40) $ListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20) $ListeOrdnernamen.Height = 450 $ListeOrdnernamen.Font = New-Object System.Drawing.Font("Arial",12,[System.Drawing.FontStyle]::Regular) foreach ($Laufwerk in $Laufwerke) { $ListeOrdnernamen.Items.Add($Laufwerk) } <#for ($i = 0; $i -lt 100; $i++) { $ListeOrdnernamen.Items.Add("Wert$i") }#> $Fenster.Controls.Add($ListeOrdnernamen) <# # Beispiel Textfeld $Textfeld1 = New-Object System.Windows.Forms.Label $Textfeld1.Location = New-Object System.Drawing.Size(7,500) $Textfeld1.Size = New-Object System.Drawing.Size(130,15) $Textfeld1.Text = "Beispiel Text" $Fenster.Controls.Add($Textfeld1) #> # AuswählenButton $AuswählenButton = New-Object System.Windows.Forms.Button $AuswählenButton.Location = New-Object System.Drawing.Size(750,500) $AuswählenButton.Size = New-Object System.Drawing.Size(100,30) $AuswählenButton.Text = "Auswählen" $AuswählenButton.Add_MouseClick({ # Aktion bei Klick $Auswahl = $ListeOrdnernamen.SelectedItem Write-Host "Gewählter Ordner/ Datei: " $Auswahl $Pfad = $PfadFeld.Text Write-Host "Vorheriger Pfad: " $Pfad if ($Pfad.length -gt 0) { $Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve } else { $Pfad = $Auswahl } Write-Host "Neuer Pfad: " $Pfad #Erkennen, ob *.txt-Datei gewählt wurde -> ggf. return if ($($Auswahl -match ".txt")) { Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad Write-Host "Dateityp: " $Pfad.GetType() $Fenster.Dispose() $Holder = NachAuswahl $Pfad #return $Pfad[0] } $PfadFeld.Text = $Pfad $Fenster.Text = $Auswahl $ListeOrdnernamen.Items.Clear() Write-Host "Pfadwert vor Übergabe: " $Pfad $Unterorder = UnterOrdnerFinden $Pfad $TxtDateien = TxtDateienFinden $Pfad $Optionen = Optionen $Unterorder $TxtDateien foreach ($Option in $Optionen) { # Write-Host "Option: " $Option if ($Option.length -gt 0) { $ListeOrdnernamen.Items.Add($Option) } } }) $Fenster.Controls.Add($AuswählenButton) # ZurückButton $ZurückButton = New-Object System.Windows.Forms.Button $ZurückButton.Location = New-Object System.Drawing.Size(10,500) $ZurückButton.Size = New-Object System.Drawing.Size(100,30) $ZurückButton.Text = "Zurück" $ZurückButton.Add_MouseClick({ Write-Host "Pfad ausgabe: " $PfadFeld.Text $Pfad = $PfadFeld.Text if ($Pfad.Length -gt 3) { # Weiter mit Ordnern/Dateien Write-Host "Ordner/ Dateien anzeigen" $Pfad = Split-Path $Pfad Write-Host "Neuer Pfad: " $Pfad $PfadFeld.Text = $Pfad $Fenster.Text = $(Split-Path $Pfad) $ListeOrdnernamen.Items.Clear() Write-Host "Pfadwert vor Übergabe: " $Pfad $Unterorder = UnterOrdnerFinden $Pfad $TxtDateien = TxtDateienFinden $Pfad $Optionen = Optionen $Unterorder $TxtDateien foreach ($Option in $Optionen) { # Write-Host "Option: " $Option if ($Option.length -gt 0) { $ListeOrdnernamen.Items.Add($Option) } } } elseif ($Pfad.Length -le 3) { # Weiter mit Laufwerken Write-Host "Laufwerke anzeigen" $Pfad = Split-Path $Pfad Write-Host "Neuer Pfad: " $Pfad $PfadFeld.Text = $Pfad $Fenster.Text = "Laufwerke" $ListeOrdnernamen.Items.Clear() Write-Host "Pfadwert vor Übergabe: " $Pfad $Laufwerke = LaufwerkeFinden $Pfad foreach ($Laufwerk in $Laufwerke) { # Write-Host "Option: " $Option if ($Laufwerk.length -gt 0) { $ListeOrdnernamen.Items.Add($Laufwerk) } } } else { # Fehler/ Nichts tun? } }) $Fenster.Controls.Add($ZurückButton) $Fenster.Add_Shown({$Fenster.Activate()}) [void] $Fenster.ShowDialog() } Function NachAuswahl ($Pfad) { Write-Host "Name in Funktion: " $Pfad Exit } Function UnterOrdnerFinden($Pfad) { #abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung $Ordner = $(Get-Childitem $Pfad -Directory) return $Ordner } Function LaufwerkeFinden() { $Laufwerke = $(Get-PSDrive | where {$_.Free}).Name $i = 0 foreach($Laufwerk in $Laufwerke) { $Laufwerke[$i] = $Laufwerk + ":\" $i++ } return $Laufwerke } Function TxtDateienFinden($Pfad) { $TxtDateien = $(Get-Childitem $Pfad\*.txt) if ($TxtDateien.Length -gt 0) { return $(Split-Path $TxtDateien -Leaf) } else { return } } Function Optionen([System.Object[]]$UnterOrdner, $TxtDateien) { #Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück $Optionen = $UnterOrdner + $TxtDateien return $Optionen } Main <# $mailAddresses = ("sdasd@ddfsf.net","ououoizu@fdssd.com","ssdfdsfds@dsfds.org") function FnShowDialog { [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") #~~< Form1 >~~~~~~~~~~~~~~~~~~~~~~~~~~ $Form1 = New-Object System.Windows.Forms.Form $Form1.ClientSize = "347, 86" $Form1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif", 9.75, [System.Drawing.FontStyle]::Regular, [System.Drawing.GraphicsUnit]::Point, ([System.Byte](0))) $Form1.FormBorderStyle = "FixedToolWindow" $Form1.MaximizeBox = $false $Form1.MinimizeBox = $false $Form1.BackColor = "White" #~~< Label1 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $Label1 = New-Object System.Windows.Forms.Label $Label1.Location = "13, 13" $Label1.Size = "217, 23" $Label1.Text = "Bitte Mailadresse wählen:" #~~< Button1 >~~~~~~~~~~~~~~~~~~~~~~~~~ $Button1 = New-Object System.Windows.Forms.Button $Button1.Location = "259, 41" $Button1.Size = "76, 26" $Button1.Text = "OK" $Button1.add_MouseClick({ $script:selectedMailAdr = $ComboBox1.SelectedItem $Form1.dispose() }) #~~< ComboBox1 >~~~~~~~~~~~~~~~~~~~~~~~~~~ $ComboBox1 = New-Object System.Windows.Forms.ComboBox $ComboBox1.Location = "12, 40" $ComboBox1.SelectedIndex = -1 $ComboBox1.DropDownStyle = "DropDownList" $ComboBox1.Size = "231, 24" $ComboBox1.Items.AddRange($mailAddresses) $Form1.Controls.Add($Label1) $Form1.Controls.Add($Button1) $Form1.Controls.Add($ComboBox1) [System.Windows.Forms.Application]::Run($Form1) } FnShowDialog Write-Host $selectedMailAdr #>