Top-Themen

Aktuelle Themen (A bis Z)

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, 1671 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
Powershell Foreach Key in Section
gelöst Frage von MarabuntaBatch & Shell2 Kommentare

Ich will Skriptseitig die ausgelesenen Versionen mit Soll-Versionen aus einer Ini-Datei abgleichen, nur wie prüfe ich so viele unterschiedliche ...

Batch & Shell
Ini file powershell parse
gelöst Frage von kotb92Batch & Shell3 Kommentare

Hallo zusammen, Ich habe ein paar solche 'ini' Dateien die ich mit Powershell in eine csv Datei parsen möchte. ...

Batch & Shell
Arbeiten mit INI Files in VBScript
Anleitung von FriemlerBatch & Shell11 Kommentare

In letzter Zeit habe ich hier im Forum des Öfteren Fragen gesehen, wie man aus einer INI-Datei Werte liest ...

Batch & Shell
Powershell Profil in ini speichern
gelöst Frage von MarabuntaBatch & Shell12 Kommentare

Hallo, ich habe eine kleine GUI in der ein Profil ausgewählt und geladen werden kann. Jetzt will ich auch ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 104 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell16 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Hardware
Fujitsu Workstation mit K80 und Quadro P5000, Fehlermeldung: Connect Power Adapter
Frage von MachelloHardware7 Kommentare

Hallo Zusammen, ich benötige euren Rat da ich ratlos bin. Folgende Konfiguration im Büro: Fujitsu Workstation Celcius R940 Power ...