PowerShell Tab Markierung aufheben
Moin,
ich habe mit PowerShell ein GUI-Skript erstellt wo ich mittels einer Listbox, Servernamen aus einer .Json Datei über 2 Tabs auslesen lasse. Wenn man einen Server Auswählt, erstellt man eine Textdatei wo dementsprechend die Server Adresse eingetragen wird.
Mein Problem ist jetzt folgendes: Wenn ich das Skript Starte und z.b. im ersten Tab einen Server Auswähle und dann in ein anderen Tab klicke, bleibt die Auswahl im ersten Tab und dies soll nicht sein, ich beiße mir da echt die Zähne aus.
Ich hoffe mir kann wer helfen
LG AnfaengerIT
Mein Code:
Und einmal die .Json datei, falls die gebraucht wird um zu helfen ;) :
ich habe mit PowerShell ein GUI-Skript erstellt wo ich mittels einer Listbox, Servernamen aus einer .Json Datei über 2 Tabs auslesen lasse. Wenn man einen Server Auswählt, erstellt man eine Textdatei wo dementsprechend die Server Adresse eingetragen wird.
Mein Problem ist jetzt folgendes: Wenn ich das Skript Starte und z.b. im ersten Tab einen Server Auswähle und dann in ein anderen Tab klicke, bleibt die Auswahl im ersten Tab und dies soll nicht sein, ich beiße mir da echt die Zähne aus.
Ich hoffe mir kann wer helfen
LG AnfaengerIT
Mein Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objForm = New-Object System.Windows.Forms.Form
$objForm.StartPosition = "CenterScreen"
$objForm.Size = New-Object System.Drawing.Size(640,480)
$TabForm = New-Object System.Windows.Forms.TabControl
$TabForm.Location = "20,60"
$TabForm.Size = "585,250"
$objForm.Controls.Add($TabForm)
$Tab1 = New-Object System.Windows.Forms.TabPage
$Tab1.Databindings.DefaultDataSourceUpdateMode = 0
$Tab1.UseVisualStyleBackColor = $True
$Tab1.Name = "user1"
$Tab1.Text = "user1"
$TabForm.Controls.Add($Tab1)
$objListBox = New-Object System.Windows.Forms.ListBox
$objListBox.Location = New-Object System.Drawing.Size(20,20)
$objListBox.Size = New-Object System.Drawing.Size(530)
$objListBox.Height = 190
$objListBox.Font = New-Object System.Drawing.Font("Comic Sans MS",12,[System.Drawing.FontStyle]::BOLD)
$Tab1.Controls.Add($objListBox)
$objForm.TopMost = $true
$array = Get-Content -Path "$env:USERPROFILE\Desktop\Server-List\Test-zwecke\server.json" | ConvertFrom-Json
[void] $objListBox.Items.Add($array.user1.Server1.Name)
[void] $objListBox.Items.Add($array.user1.Server2.Name)
$Tab2 = New-object System.Windows.Forms.Tabpage
$Tab2.DataBindings.DefaultDataSourceUpdateMode = 0
$Tab2.UseVisualStyleBackColor = $True
$Tab2.Name = "user2"
$Tab2.Text = "user2”
$TabForm.Controls.Add($Tab2)
$objListBox2 = New-Object System.Windows.Forms.ListBox
$objListBox2.Location = New-Object System.Drawing.Size(20,20)
$objListBox2.Size = New-Object System.Drawing.Size(530)
$objListBox2.Height = 190
$objListBox2.Font = New-Object System.Drawing.Font("Comic Sans MS",12,[System.Drawing.FontStyle]::BOLD)
$Tab2.Controls.Add($objListBox2)
$objForm.TopMost = $true
[void] $objListBox2.Items.Add($array.user2.Server1.Name)
[void] $objListBox2.Items.Add($array.user2.Server2.Name)
[void] $objListBox2.Items.Add($array.user2.Server3.Name)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(340,380)
$CancelButton.Size = New-Object System.Drawing.Size(115,30)
$CancelButton.Font = New-Object System.Drawing.Font("Comic Sans MS",10,[System.Drawing.FontStyle]::Bold)
$CancelButton.Text = "Cancel"
$CancelButton.Name = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
$OpenButton = New-Object System.Windows.Forms.Button
$OpenButton.Location = New-Object System.Drawing.Size(465,380)
$OpenButton.Size = New-Object System.Drawing.Size(115,30)
$OpenButton.Font = New-Object System.Drawing.Font("Comic Sans MS",10,[System.Drawing.FontStyle]::Bold)
$OpenButton.Text = "open"
$OpenButton.Name = "open"
$OpenButton.DialogResult = "ok"
$OpenButton.Add_click({
if($objListBox.SelectedItem -like $array.user1.server1.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user1.server1.Name,"> %USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt" }
if($objListBox.SelectedItem -like $array.user1.server2.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user1.server2.Name,"> %USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt" }
if($objListBox2.SelectedItem -like $array.user2.server1.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user2.server1.Name,"> %USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt" }
if($objListBox2.SelectedItem -like $array.user2.server2.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user2.server2.Name,"> %USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt" }
if($objListBox2.SelectedItem -like $array.user2.server3.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user2.server3.Name,"> %USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt" }
})
$objForm.Controls.Add($OpenButton)
$objForm.Add_Shown({$objForm.Activate()})
[void]$objForm.ShowDialog()
Und einmal die .Json datei, falls die gebraucht wird um zu helfen ;) :
{
"user1": {
"Server1": {
"Name": "Test-Server1",
"Address": "1.2.3.4.5.6"
},
"Server2": {
"Name": "Test-Server2",
"Address": "6.5.4.3.2.1"
}
},
"user2": {
"Server1": {
"Name": "Test-ServerA",
"Address": "10.2.21.12.1234"
},
"Server2": {
"Name": "Test-ServerB",
"Address": "51.65.42.1246"
},
"Server3": {
"Name": "Test-ServerC",
"Address": "1.142.532.1231"
}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4264076907
Url: https://administrator.de/contentid/4264076907
Ausgedruckt am: 21.11.2024 um 19:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
Du willst also erreichen, dass, sobald man auf dem 2. Tab in dessen Listbox einen Eintrag auswählt, dann in der Listbox des 1. Tab die Auswahl aufgehoben wird? Sprich $objListBox.SelectedItem dann leer ist?
Und natürlich auch umgekehrt, wenn man wieder zurück auf den 1. Tab geht und dort in der Listbox auswählt, dass dann die Auswahl des 2. Tab aufgehoben wird?
E.
Du willst also erreichen, dass, sobald man auf dem 2. Tab in dessen Listbox einen Eintrag auswählt, dann in der Listbox des 1. Tab die Auswahl aufgehoben wird? Sprich $objListBox.SelectedItem dann leer ist?
Und natürlich auch umgekehrt, wenn man wieder zurück auf den 1. Tab geht und dort in der Listbox auswählt, dass dann die Auswahl des 2. Tab aufgehoben wird?
E.
Du könntest abfragen, auf welchem Tab Du gerade bist.
If($Tabform.SelectedTab.Name -eq $Tab1.Name) {
if($objListBox.SelectedItem -like $array.user1.server1.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user1.server1.Name,">
%USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt"
}
if($objListBox.SelectedItem -like $array.user1.server2.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user1.server2.Name,">
%USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt"
}
}
If($Tabform.SelectedTab.Name -eq $Tab2.Name) {
if($objListBox2.SelectedItem -like $array.user2.server1.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user2.server1.Name,">
%USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt"
}
if($objListBox2.SelectedItem -like $array.user2.server2.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user2.server2.Name,">
%USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt"
}
if($objListBox2.SelectedItem -like $array.user2.server3.Name){
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo ",$array.user2.server3.Name,">
%USERPROFILE%\Desktop\Server-List\Test-zwecke\server.txt"
}
}