2017-11-07 4 views
0

Ich habe mehrere INI-Dateien, die ich regelmäßig aktualisieren muss, wenn neue Leitungen in unserem Call Center hinzugefügt werden. Ich kann das get-inicontent-Skript verwenden, um die Werte zu erhalten, die ich vergleichen möchte. Der ID-Bereich hat manchmal Leerzeichen und manchmal auch nicht, und wahrscheinlich ist das größte Problem, das ich habe, Skalierung. Jedes INI kann mehrere Abschnitte haben, die mit dem gleichen Element, aber mit einer Nummer am Ende gekennzeichnet sind. Ich brauche die ID für jede ACD-Sektion. Unten finden Sie ein Beispiel für meine Datei und was ich verwende, um den Wert für eine ACD zu erhalten. Das folgende Skript gibt jeden Wert zurück, erfordert jedoch eine individuelle Abfrage für jedes Element und notiert die Leerzeichen für die Registerkarten. Ich möchte herausfinden, wie alle ACD ID-Ergebnisse zurückgegeben werden, die die zusätzlichen Leerzeichen ignorieren. Jede Hilfe würde sehr geschätzt werden.Get-IniContent Hilfe Bestimmte Abschnitte mit Platzhaltern erhalten

INI File: 
[ACD1] 
ID=1001 
[ACD2] 
    ID=1002 
[ACD3] 
    ID=1003 
[Extension1] 
ID=50001 
[Extension2] 
    ID=50002 

PS Script: 
$FileContents = Get-IniContent "C:\Temp\ScriptTest\CTISetupTest.ini" 
$FileContents.ACD1.ID 
$FileContents.ACD2.' ID' 
$FileContents.ACD3.'  ID' 

Erwartete Ergebnisse wären:

1001 
1002 
1003 
+0

Es funktioniert gut für mich, sind Sie sicher, dass es keine Leerzeichen betrifft und dass Wagenrückläufe/Zeilenvorschübe richtig eingestellt sind? (Warum sind die Räume dort an erster Stelle ???). Versuchen Sie, eine neue Ini-Datei neu zu erstellen, indem Sie den obigen Inhalt wieder einfügen. – iRon

+0

Ja, die obige Abfrage funktioniert gut, weil ich die in jeder ID gefundenen Leerzeichen berücksichtigt habe und alle drei Abfragen gestellt habe, aber meine Dateien haben Hunderte von ACDs, also muss ich in der Lage sein, die Datei zu finden und alle ACDxxx zu finden der ID-Wert für jeden. Hoffnung, die Dinge klarstellt. –

Antwort

1

Gerade Schleife über die Tasten mit ACD beginnen und dann Schleife über die Endung Subkeys in ID.

$INI = Get-IniContent 'C:\Temp\ScriptTest\CTISetupTest.ini' 
$ACDKeys = ($INI).keys | Where-Object {$_ -like 'acd*'} 
foreach ($ACDKey in $ACDKeys) { 
    $IDKeys = $INI[$ACDKey].Keys | Where-Object {$_ -like '*ID'} 
    foreach ($IDKey in $IDKeys){ 
     $INI[$ACDKey][$IDKey] 
    } 
} 
+0

Perfekt, dass der Trick gemacht hat. Ich war mir nicht sicher, wie man es durch die Ergebnisse richtig schlingt. Vielen Dank dafür. –

Verwandte Themen