Jump to content

Powershell GUI - Menu wird nur im ISE angezeigt


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Moin,

ich versuche gerade mich ein wenig in das Thema Powershell einzuarbeiten da ich einige repetitive Aufgaben habe die ich gut so abbilden kann. Hierzu wollte ich mir ein GUI basteln und im Powershell ISE wird das ganze auch korrekt angezeigt. Wenn ich das Script allerdings mit "Rechtsklick "Run with Powershell" starte ist das Menu weg, habe keine Ahnung wieso. Mein Grundscript besteht aus 4 Dateien (bin für eine grundlegende Trennung von Sachen aber vielleicht ist genau das mein Problem) die wie folgt aussehen:

main.ps1 (mit dem Starte ich alles)
 

Add-Type -assembly System.Windows.Forms
# Import GUI settings
. $PSScriptRoot\gui_settings.ps1
# Import GUI menu
. $PSScriptRoot\gui_menu.ps1
# Import GUI specific functions
. $PSScriptRoot\gui_functions.ps1
# Load form
$main_form.ShowDialog()

 

gui_settings.ps1
 

$gui_settings_title ='GUI for Teamcenter / NX / General Administration'
$gui_settings_Width = 1200
$gui_settings_Height = 800
$gui_settings_AutoSize = $false
$gui_settings_Icon = "$PSScriptRoot\images\netfol.ico"
#$gui_settings_Logo = "$PSScriptRoot\images\logo.jpg"
#$img = [System.Drawing.Image]::Fromfile($gui_settings_Logo);

# DO NOT CHANGE ANYTHING BELOW THIS LINE

$main_form = New-Object System.Windows.Forms.Form
$objIcon = New-Object system.drawing.icon ($gui_settings_Icon)
$statusbar = New-Object System.Windows.Forms.StatusBar
#$pictureBox = new-object Windows.Forms.PictureBox
#$pictureBox.Location = New-Object System.Drawing.Size(900,150)
#$pictureBox.Size = New-Object System.Drawing.Size($img.Width,$img.Height)
#$pictureBox.Image = $img



$main_form.StartPosition = "CenterScreen"
$main_form.Text = $gui_settings_title
$main_form.Width = $gui_settings_Width
$main_form.Height = $gui_settings_Height
$main_form.AutoSize = $gui_settings_AutoSize
$main_form.MainMenuStrip = $menuMain
$main_form.Controls.Add($menuMain)
$main_form.Icon = $objIcon
$main_form.BackColor = "white"

#logo


# status bar
$statusbar.Name = "statusBar"
$statusbar.Text = "Ready"

# add controls
[void]$main_Form.Controls.Add($menuMain)
[void]$main_Form.Controls.Add($statusbar)
#[void]$main_Form.Controls.Add($pictureBox)

 

gui_menu.ps1

 

# Define menu objects
$menuMain         = New-Object System.Windows.Forms.MenuStrip
$mainToolStrip    = New-Object System.Windows.Forms.ToolStrip
$menuFile         = New-Object System.Windows.Forms.ToolStripMenuItem
$menuOpen         = New-Object System.Windows.Forms.ToolStripMenuItem
$menuSave         = New-Object System.Windows.Forms.ToolStripMenuItem
$menuExit = New-Object System.Windows.Forms.ToolStripMenuItem
$menuHelp         = New-Object System.Windows.Forms.ToolStripMenuItem
$menuAbout        = New-Object System.Windows.Forms.ToolStripMenuItem
$toolStripOpen    = New-Object System.Windows.Forms.ToolStripButton
$toolStripSave    = New-Object System.Windows.Forms.ToolStripButton
$toolStripExit = New-Object System.Windows.Forms.ToolStripButton
$toolStripAbout = New-Object System.Windows.Forms.ToolStripButton

# Menu: File
$menuFile.Text = "File"
[void]$menuMain.Items.Add($menuFile)
# Menu: File -> Open
$menuOpen.Text = "Open"
$menuOpen.Add_Click({OpenFile})
[void]$menuFile.DropDownItems.Add($menuOpen)
# Menu: File -> Save
$menuSave.Text         = "Save"
$menuSave.Add_Click({SaveFile})
[void]$menuFile.DropDownItems.Add($menuSave)
# Menu: File -> Exit
$menuExit.Text         = "Exit"
$menuExit.Add_Click({$main_Form.Close()})
[void]$menuFile.DropDownItems.Add($menuExit)
# Menu: Help
$menuHelp.Text = "Help"
[void]$menuMain.Items.Add($menuHelp)
# Menu: Help -> About
$menuAbout.Text = "About"
$menuAbout.Add_Click({ShowAbout})
[void]$menuHelp.DropDownItems.Add($menuAbout)

 

gui_functions.ps1

 

function ShowAbout {
[void] [System.Windows.MessageBox]::Show( "This is just for testing purpose only! DON'T USE IT IN A LIVE ENVIRONMENT!" )
}

 

Vielleicht kann mich jemand erleuchten, vielen Dank im Vorraus :) 

Link zu diesem Kommentar

Willkommen im MCSEboard.

 

vor einer Stunde schrieb MoritzJ:

ich versuche gerade mich ein wenig in das Thema Powershell einzuarbeiten da ich einige repetitive Aufgaben habe die ich gut so abbilden kann.

 

vor einer Stunde schrieb MoritzJ:

Vielleicht kann mich jemand erleuchten, vielen Dank im Vorraus :) 

 

Die Antwort mag bei Deiner gestellten Frage ketzerisch klingeln, aber wenn es Dir um Automatisierung geht - lass die GUI weg. ;-) 

Link zu diesem Kommentar
  • 1 Monat später...

Die PowerShell ist für Scripts gedacht und das Einbinden von Winforms ist ein Gebastel aus meiner Sicht. Visual Studio ist kostenlos, damit kann man komfortabel GUIs designen, Windows Forms oder sogar WPF (wobei das die Komplexität erhöht) und wenn man die Anwendung für .NET Framework 4.x kompiliert, läuft sie auf jedem einigermassen modernen Windows ohne zusätzliche Komponenten. C# ist nicht so schwer zu erlernen, zumindest nicht für einfachere Sachen.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...