268 lines
7.5 KiB
PowerShell
268 lines
7.5 KiB
PowerShell
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
|
|
#> |