Powershell new variable foreach section in ini-File
Hallo,
ich nutze die Get-IniContent Funktion von hier:
https://gallery.technet.microsoft.com/scriptcenter/ea40c1ef-c856-434b-b8 ...
darin ist auch eigentlich alles drin nur regex ist mir noch zu kryptisch um den sektionsnamen rauszuziehen...
ich habe eine INI-Datei die so aussieht:
[Nummer1]
DATEN_SERVER=C:\Pfad
[Nummer2]
DATEN_SERVER=C:\Pfad
und im Skript folgendes:
$Nummer1_WKONFIG = $IniContentZENTRAL["Nummer1" ]["DATEN_SERVER"] + $Pfad_w
$Nummer2_WKONFIG = $IniContentZENTRAL["Nummer2"]["DATEN_SERVER"] + $Pfad_w
...
Für jede Nummer brauche ich noch eine extra Zeile. Wie schaffe ich es, die Sektionsnamen auszulesen und mit den Namen dann Variablen zu erzeugen?
#grundsätzliche idee
$a=Get-IniContent $ini
foreach($Sektion in $Sections) { # hier muss ich noch irgendwie den sektionsnamen (nummer1,nummer2...) herausfinden
[string]$nummerx= $_
$name=$nummerx + "_WKONFIG"
invoke-expression "$name" #jedenfalls den neuen zusammengesetzten namen als variable, ich denke das stimmt hier noch nicht
$name=$IniContentZENTRAL["$name"]["DATEN_SERVER"]
}
Damit hätte ich dann für jede Sektion auch gleich die Variable nach einem schema zur Verfügung ohne mehraufwand wenn die Ini-Datei erweitert wird.
Gibt es da etwas?
ich nutze die Get-IniContent Funktion von hier:
https://gallery.technet.microsoft.com/scriptcenter/ea40c1ef-c856-434b-b8 ...
darin ist auch eigentlich alles drin nur regex ist mir noch zu kryptisch um den sektionsnamen rauszuziehen...
ich habe eine INI-Datei die so aussieht:
[Nummer1]
DATEN_SERVER=C:\Pfad
[Nummer2]
DATEN_SERVER=C:\Pfad
und im Skript folgendes:
$Nummer1_WKONFIG = $IniContentZENTRAL["Nummer1" ]["DATEN_SERVER"] + $Pfad_w
$Nummer2_WKONFIG = $IniContentZENTRAL["Nummer2"]["DATEN_SERVER"] + $Pfad_w
...
Für jede Nummer brauche ich noch eine extra Zeile. Wie schaffe ich es, die Sektionsnamen auszulesen und mit den Namen dann Variablen zu erzeugen?
#grundsätzliche idee
$a=Get-IniContent $ini
foreach($Sektion in $Sections) { # hier muss ich noch irgendwie den sektionsnamen (nummer1,nummer2...) herausfinden
[string]$nummerx= $_
$name=$nummerx + "_WKONFIG"
invoke-expression "$name" #jedenfalls den neuen zusammengesetzten namen als variable, ich denke das stimmt hier noch nicht
$name=$IniContentZENTRAL["$name"]["DATEN_SERVER"]
}
Damit hätte ich dann für jede Sektion auch gleich die Variable nach einem schema zur Verfügung ohne mehraufwand wenn die Ini-Datei erweitert wird.
Gibt es da etwas?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 256844
Url: https://administrator.de/forum/powershell-new-variable-foreach-section-in-ini-file-256844.html
Ausgedruckt am: 12.04.2025 um 10:04 Uhr
5 Kommentare
Neuester Kommentar
Moin Marabunta,
Aber in der zurückgelieferten Hashtable von get-IniContent kannst du ja bereits so die Werte zurückgeben
Wozu dann noch neue Variablen ?
Zur Arbeit mit Hashtables empfehle ich dir folgenden Artikel:
http://technet.microsoft.com/en-us/library/ee692803.aspx
Grüße Uwe
$a = Get-IniContent $ini
$a.GetEnumerator() | %{New-Variable -Name $_.Name -Value $_.Value.DATEN_SERVER -Force}
# Beispiel-Ausgabe der Variablen
write-host $Nummer1
write-host $Nummer2
$a.Nummer1.DATEN_SERVER
Zur Arbeit mit Hashtables empfehle ich dir folgenden Artikel:
http://technet.microsoft.com/en-us/library/ee692803.aspx
Grüße Uwe
Zitat von @Marabunta:
Spricht etwas dagegen Set-Variable zu verwenden? Beim wiederholen ohne die alten Variablen zu löschen meckert er dann nicht.
nein, kannst du natürlich auch machen.Spricht etwas dagegen Set-Variable zu verwenden? Beim wiederholen ohne die alten Variablen zu löschen meckert er dann nicht.
p.s. wenn du an New-Variable -Force anhängst geht's aber auch damit beim erneuten Aufruf in der selben Session
Hashtable Werte lassen sich auf vielfältige Weise abfragen:
um ein neues Wertepaar einer Hastable hinzuzufügen kannst du auch einfach so schreiben
Hier sind auch noch nützliche Schnippsel für die Praxis:
Powershell Arrays deklarieren füllen abfragen ???
$a.Nummer1
$a.'Nummer1'
$a['Nummer1']
$a.NeuerWert = "BlaBla"
Hier sind auch noch nützliche Schnippsel für die Praxis:
Powershell Arrays deklarieren füllen abfragen ???