PowerShell - Funktionsergebnis in GUI darstellen
Hallo zusammen,
ich habe ein PowerShell Skrip, welches eine GUI erstellt. In dieser GUI möchte ich gerne alle aktiven Netzwerkadapter und ein paar Daten dazu darstellen. Das mache ich über folgende Funktion:
Jetzt möchte ich dieses Ergebnis in einer GUI darstellen, und zwar genau so sauber, als wenn ich den Code direkt in die Console schreibe. In meiner GUI habe ich es mit einem Textfeld probiert, bekomme hier aber Probleme mit den Zeilenumbrüchen, weil er das Ergebnis nicht wie in der Console nach jeder Zeile umbricht.
Das hier ist mein kompletter Code:
ich habe ein PowerShell Skrip, welches eine GUI erstellt. In dieser GUI möchte ich gerne alle aktiven Netzwerkadapter und ein paar Daten dazu darstellen. Das mache ich über folgende Funktion:
$_connected_network_adapter = get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" | select netconnectionid, name, interfaceindex, netconnectionstatus, adaptertype, speed
$_default_routing = get-wmiobject win32_ip4routetable | ? {$_.Destination -eq "0.0.0.0"}
foreach ($entry in $_connected_network_adapter){
foreach ($entry1 in $_default_routing){
If ($entry.interfaceindex -eq $entry1.interfaceindex){
netsh interface ip show config $entry.netconnectionid
}
}
}
Jetzt möchte ich dieses Ergebnis in einer GUI darstellen, und zwar genau so sauber, als wenn ich den Code direkt in die Console schreibe. In meiner GUI habe ich es mit einem Textfeld probiert, bekomme hier aber Probleme mit den Zeilenumbrüchen, weil er das Ergebnis nicht wie in der Console nach jeder Zeile umbricht.
Das hier ist mein kompletter Code:
#-----------------------------------------------------------------------------------
# Main
#-----------------------------------------------------------------------------------
Function Main
{
$vNetzwerk = Get-Netzwerkadapter
GenerateForm
}
#-----------------------------------------------------------------------------------
# Formular Allgemein
#-----------------------------------------------------------------------------------
Function GenerateForm
{
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
$Form = New-Object System.Windows.Forms.Form
$Icon = New-Object System.Drawing.Icon ("C:\Program Files (x86)\PCInfo\PCID.ico")
$LabelNetzwerk = New-Object System.Windows.Forms.Label
$Form.Text = "PC INFO"
$Form.StartPosition = "CenterScreen"
$Form.AutoScroll = $False
$Form.AutoSize = $True
$Form.TopMost = $True
$Form.WindowState = "Normal"
$Form.Icon = $Icon
$Form.ShowInTaskbar = $True
$Form.MaximumSize = New-Object System.Drawing.Size(665,470)
$Form.MinimumSize = New-Object System.Drawing.Size(665,470)
$FontLabel = New-Object System.Drawing.Font("Arial",10,[System.Drawing.FontStyle]::Regular)
# Font Styles: Regular, Bold, Italic, Underline, Strikeout
$Form.Font = $FontLabel
#-----------------------------------------------------------------------------------
# Formular Registersteuerelement
#-----------------------------------------------------------------------------------
$TabControl1 = New-Object System.Windows.Forms.TabControl
$TabControl1.TabIndex = 0
$TabControl1.Size = New-Object System.Drawing.Size(625,410)
$TabControl1.Location = New-Object System.Drawing.Point(10,10)
$TabControl1.DataBindings.DefaultDataSourceUpdateMode = 0
$TabControl1.Name = "TabControl1"
$TabControl1.SelectedIndex = 0
$Form.Controls.Add($TabControl1)
#Auswahlseite "PC Informationen" auf Registersteuerelement binden
$TabPC = New-Object System.Windows.Forms.TabPage
$TabPC.TabIndex = 0
$TabPC.UseVisualStyleBackColor = $False
$TabPC.Text = "PC Informationen"
$TabPC.Name = "PC Informationen"
$TabControl1.Controls.Add($TabPC)
#Auswahlseite "Netzwerkinformationen" auf Registersteuerelement binden
$TabNetwork = New-Object System.Windows.Forms.TabPage
$TabNetwork.TabIndex = 1
$TabNetwork.UseVisualStyleBackColor = $False
$TabNetwork.Text = "Netzwerkinformationen"
$TabNetwork.Name = "Netzwerkinformationen"
$TabControl1.Controls.Add($TabNetwork)
#-----------------------------------------------------------------------------------
# Formular Inhalt - Kategorie Netzwerkinformationen
#-----------------------------------------------------------------------------------
#Labels für Netzwerkinformationen
$LabelNetzwerk.Location = New-Object System.Drawing.Size(10,10)
$LabelNetzwerk.Size = New-Object System.Drawing.Size(300,370)
$LabelNetzwerk.Text = $vNetzwerk
$LabelNetzwerk.Name = "vNetzwerk"
$LabelNetzwerk.Font = $FontLabel
$TabNetwork.Controls.Add($LabelNetzwerk)
#ListBox Netzwerkinformationen
#$ListBoxNetwork = New-Object System.Windows.Forms.ListBox
#$ListBoxNetwork.Location = New-Object System.Drawing.Point(10,10)
#$ListBoxNetwork.Size = New-Object System.Drawing.Size(600,370)
#$TabNetwork.Controls.Add($ListBoxNetwork)
#$Form.Topmost = $true
#-----------------------------------------------------------------------------------
# Formular Anzeigen
#-----------------------------------------------------------------------------------
[void] $Form.ShowDialog()
}
#-----------------------------------------------------------------------------------
# Funktionen
#-----------------------------------------------------------------------------------
Function Get-Netzwerkadapter
{
$_connected_network_adapter = get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" | select netconnectionid, name, interfaceindex, netconnectionstatus, adaptertype, speed
$_default_routing = get-wmiobject win32_ip4routetable | ? {$_.Destination -eq "0.0.0.0"}
foreach ($entry in $_connected_network_adapter){
foreach ($entry1 in $_default_routing){
If ($entry.interfaceindex -eq $entry1.interfaceindex){
$Netzwerk = netsh interface ip show config $entry.netconnectionid
return $Netzwerk
}
}
}
}
# Aufruf der Funktion "Main"
Main
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 535768
Url: https://administrator.de/contentid/535768
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
5 Kommentare
Neuester Kommentar