Powershell: dynamische Variablen innerhalb von foreach
674
Steven
Ich versuche ein paar Berechnungen für eine dynamische Liste von Benutzern durchzuführen, die ich zum Ausführen einer Suche und zum anonymisierten Zählen der Ergebnisse verwenden und dann zu einer laufenden Summe pro Benutzer hinzufügen werde. So zum Beispiel:
Wenn die Variable erstellt wurde, benötige ich sie für weitere Schleifen, in denen ich der bereits in der Variablen gespeicherten Zahl eine Zählung hinzufüge.
Und nein, ich kann die $ user-Variable nicht verwenden, da sie nach dem Ende der foreach-Schleife bestehen bleiben muss.
Die Frage ist also, wie ich diese inkrementierende Variable generieren kann, ohne die Begrenzung der Anzahl möglicher Objekte zu kennen.
---BEARBEITEN---
Ein einfaches Beispiel hinzufügen, worüber ich spreche ...
Nach Feedback schaue ich mir Hashtables an, kann aber immer noch nicht herausfinden, wie ich referenzieren soll.
Stellen Sie sich ein Würfelspiel zwischen einer dynamischen Liste von Personen mit mehreren Runden vor. Ich möchte pro Runde ihre Gesamtsumme erhöhen. Mein Problem ist die letzte Zeile, in der ich versuche, die Gesamtsumme mit der Rolle zu aktualisieren. Wie verweise ich auf den Wert der Hashtabelle?
Sie müssen die var nicht vorher in PS deklarieren. Sie sollten jedoch auch den variablen Geltungsbereich untersuchen, der Probleme mit Ihrer aktuellen Vorgehensweise verursachen wird.
music2myear vor 6 Jahren
1
Ich muss eigentlich vorher deklarieren, da ich später mehrere Schleifen haben werde, die hinzugefügt werden können, sodass ich nicht einfach eine Variable innerhalb der Schleife verwenden kann. Verstehe auch die Bedenken bezüglich des Umfangs, und ich werde mich damit befassen. Ich suche nur, wie ich die Variable so erstellen kann, dass ich sie später lesen kann ...
Steven vor 6 Jahren
0
Solange Sie weiterhin mit $ Script: var_name auf die Variablen verweisen, können Sie sie im gesamten Skript, in einer beliebigen Schleife oder Funktion bearbeiten. Wenn dies nicht das ist, was Sie fragen, können Sie vielleicht klarstellen?
music2myear vor 6 Jahren
0
Sie können Variablen mit dem Cmdlet "New-Variable" erstellen. Da die for-Schleife keinen neuen Geltungsbereich einführt, sind sie standardmäßig in folgenden Schleifen im aktuellen Gültigkeitsbereich verfügbar. Sie können den gewünschten Bereich auch als Parameter für das Cmdlet "New-Variable" angeben. Wenn Sie jedoch keine gute Begründung für die Verwendung von Variablen mit dynamischen Namen geben können, sollten Sie stattdessen Array verwenden.
PetSerAl vor 6 Jahren
2
1 Antwort auf die Frage
0
maoizm
in deinem Beispiel wäre es $ptotal["player$y"] += $roll