none
Werte in Variable schreiben RRS feed

  • Frage

  • Hallo,über diese Abfrage bekomme ich eine Anzahl X von Namen angezeigt:

    Get-Content $LogFile2 | ForEach-Object { (($_ -split '=')[1]).Trim() } | Sort-Object -Unique

    Computer1

    Computer2

    Computer3

    Computer4

    Dieses Ergebnis möchte ich dem Benutzer zur Auswahl stellen. Das erstellen des Menüs ist schon fertig. Ich frage mich nur wie ich jetzt die Werte (Computer1-4) einzeln in eine Variable bekomme damit der Benutzer sich dann für eines entscheiden kann. Hat da jemand eine Idee?


    IT Berater

    Donnerstag, 7. März 2013 15:17

Antworten

  • Hallo NBC2009

    Hier im Forum gibt es die Möglichkeit Code auch als Code zu Posten. Bitte nutze diese dann ist der Code Leichter lesbar.
    Immer wenn du mehrere gleiche sachen abarbeiten willst brauchst du eine Schleife For , While, Do while oder ForEach.

    Hier kannst du ForEach nutzen:

    $LogFile2 = 'C:\Temp\computer.txt'
    
    
    $x = $nul
    $objForm = New-Object System.Windows.Forms.Form
    $objForm.Text = "Verfügbare Datensicherungen"
    $objForm.Size = New-Object System.Drawing.Size(300,200)
    $objForm.StartPosition = "CenterScreen"
    
    $objForm.KeyPreview = $True
    
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
         {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
         }
        })
    
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
         {$objForm.Close()}})
    
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(75,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"
    
    $OKButton.Add_Click(
        {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
        })
    
    $objForm.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(150,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.Add_Click({$objForm.Close()})
    $objForm.Controls.Add($CancelButton)
    
    $objLabel = New-Object System.Windows.Forms.Label
    $objLabel.Location = New-Object System.Drawing.Size(10,20)
    $objLabel.Size = New-Object System.Drawing.Size(280,20)
    $objLabel.Text = "Treffen Sie bitte eine Auswahl:"
    $objForm.Controls.Add($objLabel)
    
    $objCombobox = New-Object System.Windows.Forms.Combobox
    $objCombobox.Location = New-Object System.Drawing.Size(10,40)
    $objCombobox.Size = New-Object System.Drawing.Size(260,20)
    
    $Computers = Get-Content $LogFile2 | ForEach-Object { (($_ -split '=')[1]).Trim() } | Sort-Object -Unique
    
    ForEach($Computer in $Computers){
    	$objCombobox.Items.Add($Computer)
    }
    
    $objCombobox.Height = 70
    $objForm.Controls.Add($objCombobox)
    $objForm.Topmost = $True
    
    $objForm.Add_Shown({$objForm.Activate()})
    [void] $objForm.ShowDialog()
    $x


    Windows Forms sind NICHT PowerShell! Diese werden ja hauptsächlich in der Programmierung verwendet!
    Deswegen sollte man sich in den .NET Programmierbüchern schlau machen!
    Die Besten .NET Bücher die ich je gelesen haben sind sogar öffentlich und kostenlos (sogar zum Download!):
    http://openbook.galileocomputing.de/visual_csharp/

    Lies dort bitte die Kapitel:
    13 Grundlagen zum Erstellen einer Windows-Anwendung
    14 Die wichtigsten Steuerelemente
    15 Tastatur- und Mausereignisse


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort vorgeschlagen Livio von Büren Freitag, 8. März 2013 12:11
    • Als Antwort markiert NBC2009 Montag, 11. März 2013 11:49
    Freitag, 8. März 2013 09:19

Alle Antworten

  • Ich weiss leider nicht was du mit "einzeln in eine Variable" meinst. Beschreibe bitte mal genau wie du dir das Endergebnis vorstellst und poste was du schon hast ("Menü ist fast fertig"). So kann man leider nur rumrätseln...

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".


    Donnerstag, 7. März 2013 15:52
    Moderator
  • Meine erste Zeile gibt eine Anzahl X von Computern aus. Diese möchte ich gerne in dem folgenden Script als "Item 1,2,3,4..." anbieten:

    $x = $nul
    $objForm = New-Object System.Windows.Forms.Form
    $objForm.Text = "Verfügbare Datensicherungen"
    $objForm.Size = New-Object System.Drawing.Size(300,200)
    $objForm.StartPosition = "CenterScreen"

    $objForm.KeyPreview = $True

    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
         {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
         }
        })

    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
         {$objForm.Close()}})

    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(75,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"

    $OKButton.Add_Click(
        {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
        })

    $objForm.Controls.Add($OKButton)

    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(150,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.Add_Click({$objForm.Close()})
    $objForm.Controls.Add($CancelButton)

    $objLabel = New-Object System.Windows.Forms.Label
    $objLabel.Location = New-Object System.Drawing.Size(10,20)
    $objLabel.Size = New-Object System.Drawing.Size(280,20)
    $objLabel.Text = "Treffen Sie bitte eine Auswahl:"
    $objForm.Controls.Add($objLabel)

    $objCombobox = New-Object System.Windows.Forms.Combobox
    $objCombobox.Location = New-Object System.Drawing.Size(10,40)
    $objCombobox.Size = New-Object System.Drawing.Size(260,20)

    [void] $objCombobox.Items.Add("Item 1")
    [void] $objCombobox.Items.Add("Item 2")
    [void] $objCombobox.Items.Add("Item 3")
    [void] $objCombobox.Items.Add("Item 4")
    [void] $objCombobox.Items.Add("Item 5")

    $objCombobox.Height = 70
    $objForm.Controls.Add($objCombobox)
    $objForm.Topmost = $True

    $objForm.Add_Shown({$objForm.Activate()})
    [void] $objForm.ShowDialog()

    $x


    IT Berater

    Freitag, 8. März 2013 07:50
  • Hallo NBC2009

    Hier im Forum gibt es die Möglichkeit Code auch als Code zu Posten. Bitte nutze diese dann ist der Code Leichter lesbar.
    Immer wenn du mehrere gleiche sachen abarbeiten willst brauchst du eine Schleife For , While, Do while oder ForEach.

    Hier kannst du ForEach nutzen:

    $LogFile2 = 'C:\Temp\computer.txt'
    
    
    $x = $nul
    $objForm = New-Object System.Windows.Forms.Form
    $objForm.Text = "Verfügbare Datensicherungen"
    $objForm.Size = New-Object System.Drawing.Size(300,200)
    $objForm.StartPosition = "CenterScreen"
    
    $objForm.KeyPreview = $True
    
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
         {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
         }
        })
    
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
         {$objForm.Close()}})
    
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(75,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"
    
    $OKButton.Add_Click(
        {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
        })
    
    $objForm.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(150,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.Add_Click({$objForm.Close()})
    $objForm.Controls.Add($CancelButton)
    
    $objLabel = New-Object System.Windows.Forms.Label
    $objLabel.Location = New-Object System.Drawing.Size(10,20)
    $objLabel.Size = New-Object System.Drawing.Size(280,20)
    $objLabel.Text = "Treffen Sie bitte eine Auswahl:"
    $objForm.Controls.Add($objLabel)
    
    $objCombobox = New-Object System.Windows.Forms.Combobox
    $objCombobox.Location = New-Object System.Drawing.Size(10,40)
    $objCombobox.Size = New-Object System.Drawing.Size(260,20)
    
    $Computers = Get-Content $LogFile2 | ForEach-Object { (($_ -split '=')[1]).Trim() } | Sort-Object -Unique
    
    ForEach($Computer in $Computers){
    	$objCombobox.Items.Add($Computer)
    }
    
    $objCombobox.Height = 70
    $objForm.Controls.Add($objCombobox)
    $objForm.Topmost = $True
    
    $objForm.Add_Shown({$objForm.Activate()})
    [void] $objForm.ShowDialog()
    $x


    Windows Forms sind NICHT PowerShell! Diese werden ja hauptsächlich in der Programmierung verwendet!
    Deswegen sollte man sich in den .NET Programmierbüchern schlau machen!
    Die Besten .NET Bücher die ich je gelesen haben sind sogar öffentlich und kostenlos (sogar zum Download!):
    http://openbook.galileocomputing.de/visual_csharp/

    Lies dort bitte die Kapitel:
    13 Grundlagen zum Erstellen einer Windows-Anwendung
    14 Die wichtigsten Steuerelemente
    15 Tastatur- und Mausereignisse


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort vorgeschlagen Livio von Büren Freitag, 8. März 2013 12:11
    • Als Antwort markiert NBC2009 Montag, 11. März 2013 11:49
    Freitag, 8. März 2013 09:19
  • wie kann ich den diese Zeile ändern, so das alle gelesenden Werte in eine eigene Variable geschrieben werden:

    Get-Content $LogFile2 | ForEach-Object { (($_ -split '=')[1]).Trim() } | Sort-Object -Unique

    IT Berater

    Freitag, 8. März 2013 10:05
  • Das steht doch schon oben in dem Code !
    $Computers = Get-Content $LogFile2 | ForEach-Object { (($_ -split '=')[1]).Trim() } | Sort-Object -Unique



    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Freitag, 8. März 2013 10:58
  • @NBC2009
    Eventuell solltest du Peter's Posts etwas genauer lesen. Wenn er einen Code posted, ist es meistens schon die gesammte Lösung, und nicht nur ein Teil

    @Peter Kriegel
    Bist du mit "New-ProxyCommand" vertraut? Ich sitze da drum etwas fest und die Leute im englischen Abteil brauchen heute etwas länger.


    The following is my signature:

    Powershell Programmer & Advanced Lua Programmer

    Location: Switzerland

    Beside that, whenever you see a reply, you think is helpful, click "Vote As Helpful"! And whenever you see a reply being an answer to the main question of the thread, click "Mark As Answer" (if you opened the thread).

    I published the URL's for the icons in my signature.

    Please contact me, before reporting me, thank you.

    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('577076797174-87661607769657424-8687168065964').substring(($_*2),2))})-replace' '

    Freitag, 8. März 2013 12:15
  • Livio du kennst die Regeln!
    Mach bitte eine neue Frage auf! Wir wollen dem OP nicht seinen Thread versauen!
    Und Proxy Commands kenne ich! Ja!

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Freitag, 8. März 2013 13:49
  • Hallo NBC2009

    Hier im Forum gibt es die Möglichkeit Code auch als Code zu Posten. Bitte nutze diese dann ist der Code Leichter lesbar.
    Immer wenn du mehrere gleiche sachen abarbeiten willst brauchst du eine Schleife For , While, Do while oder ForEach.

    Hier kannst du ForEach nutzen:

    $LogFile2 = 'C:\Temp\computer.txt'
    
    
    $x = $nul
    $objForm = New-Object System.Windows.Forms.Form
    $objForm.Text = "Verfügbare Datensicherungen"
    $objForm.Size = New-Object System.Drawing.Size(300,200)
    $objForm.StartPosition = "CenterScreen"
    
    $objForm.KeyPreview = $True
    
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
         {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
         }
        })
    
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
         {$objForm.Close()}})
    
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(75,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"
    
    $OKButton.Add_Click(
        {
             foreach ($objItem in $objCombobox.SelectedItem)
                 {$x += $objItem}
             $objForm.Close()
        })
    
    $objForm.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(150,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.Add_Click({$objForm.Close()})
    $objForm.Controls.Add($CancelButton)
    
    $objLabel = New-Object System.Windows.Forms.Label
    $objLabel.Location = New-Object System.Drawing.Size(10,20)
    $objLabel.Size = New-Object System.Drawing.Size(280,20)
    $objLabel.Text = "Treffen Sie bitte eine Auswahl:"
    $objForm.Controls.Add($objLabel)
    
    $objCombobox = New-Object System.Windows.Forms.Combobox
    $objCombobox.Location = New-Object System.Drawing.Size(10,40)
    $objCombobox.Size = New-Object System.Drawing.Size(260,20)
    
    $Computers = Get-Content $LogFile2 | ForEach-Object { (($_ -split '=')[1]).Trim() } | Sort-Object -Unique
    
    ForEach($Computer in $Computers){
    	$objCombobox.Items.Add($Computer)
    }
    
    $objCombobox.Height = 70
    $objForm.Controls.Add($objCombobox)
    $objForm.Topmost = $True
    
    $objForm.Add_Shown({$objForm.Activate()})
    [void] $objForm.ShowDialog()
    $x


    Windows Forms sind NICHT PowerShell! Diese werden ja hauptsächlich in der Programmierung verwendet!
    Deswegen sollte man sich in den .NET Programmierbüchern schlau machen!
    Die Besten .NET Bücher die ich je gelesen haben sind sogar öffentlich und kostenlos (sogar zum Download!):
    http://openbook.galileocomputing.de/visual_csharp/

    Lies dort bitte die Kapitel:
    13 Grundlagen zum Erstellen einer Windows-Anwendung
    14 Die wichtigsten Steuerelemente
    15 Tastatur- und Mausereignisse


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Hallo Peter,

    vielen Dank für deine Unterstützung. Funktioniert prima. Sorry das ich deine Antwort nicht sofort richtig erkannt habe.

    Liebe Grüße

    Norbert


    IT Berater

    Montag, 11. März 2013 11:49
  • Kein Thema Norbert !
    Wir alle haben mal angefangen! Viel Spaß!

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Montag, 11. März 2013 12:03
  • Vielleicht noch eine kleine Frage: Wenn ich in dem Fenster keine Auswahl treffe sondern OK oder Cancel drücke, dann läuft er in dem Scripte trotzdem weiter. Ich möchte  aber das wenn die Auswahl leer ist, dass Fenster offen bleibt und bei Cancel das das Script an der Stelle beendet wird. Wo kann ich das am besten einfügen?


    IT Berater

    Montag, 11. März 2013 13:00
  • Sorry für die Frage, es ist eben noch Montag :)

    If ($x -eq $null ){
     Exit
     }

    Zumindest macht er nicht weiter wenn die Antwort leer ist. Das reicht an "Luxus"


    IT Berater

    Montag, 11. März 2013 13:16