Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell new variable foreach section in ini-File

Frage Entwicklung Batch & Shell

Mitglied: Marabunta

Marabunta (Level 1) - Jetzt verbinden

05.12.2014, aktualisiert 14:39 Uhr, 1436 Aufrufe, 5 Kommentare

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?
Mitglied: colinardo
LÖSUNG 05.12.2014, aktualisiert um 14:39 Uhr
Moin Marabunta,
01.
$a = Get-IniContent $ini 
02.
$a.GetEnumerator() | %{New-Variable -Name $_.Name -Value $_.Value.DATEN_SERVER -Force} 
03.
 
04.
# Beispiel-Ausgabe der Variablen 
05.
write-host $Nummer1 
06.
write-host $Nummer2
Aber in der zurückgelieferten Hashtable von get-IniContent kannst du ja bereits so die Werte zurückgeben
$a.Nummer1.DATEN_SERVER
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
Bitte warten ..
Mitglied: Marabunta
05.12.2014 um 13:57 Uhr
Danke! Wer hätte gedacht, dass es auch einfach geht.
Mir gefallen die Möglichkeiten von Hashtables, auch in anderen Szenarien.
Noch sind meine Versuche mit selbst geschriebenen Hashtables oft fehlerhaft und doch verstehe ich es immer besser.

Spricht etwas dagegen Set-Variable zu verwenden? Beim wiederholen ohne die alten Variablen zu löschen meckert er dann nicht.
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 14:01 Uhr
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.
p.s. wenn du an New-Variable -Force anhängst geht's aber auch damit beim erneuten Aufruf in der selben Session
Bitte warten ..
Mitglied: Marabunta
05.12.2014 um 14:10 Uhr
$a.Nummer1.DATEN_SERVER - ähnliches hatte ich so probiert:
$a[nummer1][...] funktionierte nicht. Später habe ich erst den fehler mit den Anführungszeichen festgestellt.
$a["nummer1"]["..."] wäre also richtig.
Aus dieser Historie und etwas herumprobieren hatte ich dann den Status quo mit neuen Variablen.
Jetzt kommst du und machst alles wieder einfach xD
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 14:20 Uhr
Hashtable Werte lassen sich auf vielfältige Weise abfragen:
01.
$a.Nummer1 
02.
$a.'Nummer1' 
03.
$a['Nummer1']
um ein neues Wertepaar einer Hastable hinzuzufügen kannst du auch einfach so schreiben
$a.NeuerWert = "BlaBla"
Hier sind auch noch nützliche Schnippsel für die Praxis:
http://www.administrator.de/forum/powershell-arrays-deklarieren-f%C3%BC ...
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Entwicklung
gelöst Powershell File durchsuchen (1)

Frage von easy4breezy zum Thema Entwicklung ...

Batch & Shell
gelöst Powershell INI Tags auslesen (2)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable aus ini Datei auslesen und weiterverwenden (17)

Frage von n0cturne zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...