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, 1476 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Werte in Variable durch Schleife erweitern bzw. ändern (5)

Frage von ralfkausk zum Thema Batch & Shell ...

Entwicklung
gelöst Powershell File durchsuchen (1)

Frage von easy4breezy zum Thema Entwicklung ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Email in Exchange an 2ten Empfänger senden (18)

Frage von MultiStorm zum Thema Exchange Server ...

Weiterbildung
Gehaltsvorstellungen (14)

Frage von SYS64738 zum Thema Weiterbildung ...

Windows Server
gelöst Microsoft-Lizenz CALs und passendes Server-Betriebssystem (13)

Frage von planetIT2016 zum Thema Windows Server ...

Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...