none
Auslesen und Verarbeiten von Objekten in einem Array RRS feed

  • Frage

  • Hallo,

    ich stehe vor folgender Problematik:

    $array = Otto,Klaus
    foreach ($a in $array) {write-host “Hallo $a"}

    Ich würde jetzt erwarten:

    Hallo Otto
    Hallo Klaus

    Raus kommt aber:

    Hallo Otto,Klaus

    Warum? Und was muss ich tun um mein erwartetes Ergebnis zu erhalten?

    Danke schonmal...


    MfG, Maikel Gädker


    Mittwoch, 1. August 2012 22:17

Antworten

  • Versuchs mal so, dann gehts:

    $array = @("Otto","Klaus")
    foreach ($a in $array) {write-host “Hallo $a"}

    Dein Code produziert übrigens einen Fehler und nicht "Hallo Otto,Klaus". Dazu müsste es

    $array = "Otto,Klaus"

    heißen, da du ohne Anführungszeichen einer Variable nur numerische Werte zuweisen kannst (streng genommen gehen eine andere Variable bzw. ein Objekt auch).

    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, 2. August 2012 00:23
    Moderator

Alle Antworten

  • Versuchs mal so, dann gehts:

    $array = @("Otto","Klaus")
    foreach ($a in $array) {write-host “Hallo $a"}

    Dein Code produziert übrigens einen Fehler und nicht "Hallo Otto,Klaus". Dazu müsste es

    $array = "Otto,Klaus"

    heißen, da du ohne Anführungszeichen einer Variable nur numerische Werte zuweisen kannst (streng genommen gehen eine andere Variable bzw. ein Objekt auch).

    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, 2. August 2012 00:23
    Moderator
  • Hallo Maikel,

    $array = "Otto","Klaus"
     
    foreach ($a in $array) {write-host “Hallo $a"}
    

    MfG Phil


    Donnerstag, 2. August 2012 08:18
  • So geht es auch, allerdings hat es Vorteile sich gleich am Anfang das Konstrukt @(...) zu merken.

    Zum Einen ist es ähnlich wie das für Hashtables: @{...} und zum anderen ist dann die Antwort auf die zwangsläufig irgendwann kommende Frage "wie lege ich ein leeres Array an?" naheliegender:  @()


    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, 2. August 2012 09:38
    Moderator
  • Ich hätte hier noch ein kleines Beispiel, das den Unterschied vielleicht deutlicher macht

    $MeineListe=@{} #ist ein Hashtable
    $MeineObjects=@() #ist ein Array
    
    function Main {
        $parameter=@{Owner="";Manager="";Gruppe=@()}
    
        setzenVonVarByRef -test([ref]$parameter)
        $parameter|fl
        $MeineListe.Add("Key1",$parameter)
        $MeineObjects+=new-object PSObject -Property $parameter
        
        if($MeineListe.ContainsKey("Key1"))
        {
            echo "alles ok"
        }
        $MeineObjects
        
    }
    
    
    function setzenVonVarByRef {
        PARAM([ref]$test) 
        $test.Value.Owner="Dies ist der Owner"
        $test.Value.Manager="Dies ist der Manager"
        $test.Value.Gruppe+="Dies ist 1"
        $test.Value.Gruppe+="Dies ist 2"
    }
    
    main

    Gruß

    Uwe

    Donnerstag, 2. August 2012 13:32
  • Hallo zusammen,

    danke für die Antworten.

    Bleibt mir nun nur noch die Frage wie bekomme ich das Array mit einer read-host Abfrage gefüllt?

    Denn da kann ich die "" ja nicht mitgeben?


    MfG, Maikel Gädker

    Donnerstag, 2. August 2012 18:07
  • Read-Host liefert dir einen einzelnen String, dafür braucht man eigentlich kein Array. Am besten erklärst du mal genau, was du machen möchtest.

    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, 2. August 2012 20:24
    Moderator
  • Hi Denniver,

    ich bin mittlerweile auf die Lösung gekommen (OK, auf einen Lösungsansatz welcher mich dann hat eine Antwort ergoogeln lassen)

    $servers = (Read-Host "Enter Server to patch (separate with comma)").split(',') | % {$_.trim()}

    foreach ( $server in $servers)

    {Connect-XenServer...

    do stuff

    }


    Ich glaube das erklärt am besten was ich vorhabe ;)


    MfG, Maikel Gädker



    Montag, 6. August 2012 12:35