Ich versuche gerade ein Ini-Files mit Powershell zu parsen.
Problemstellung:
In diesem Loginscript.ini file mit (hunderten von Zeilen) werden aufgrund von gleichen Gruppenzugehörigkeiten eines Users in den verschiedenen Sektionen SASIMAP und SASOLAP (hier im Beispiel wäre eine solche aufgeführt, nämlich UserGroups=Domäne\gl_w_SASIMAP)
die gleichen Skripte mehrfach ausgeführt. Dies führt zu langen Logonzeiten.
Ziel ist es, mit Powershell durch Löschen der ganzen überzähligen Sektionen im Ini-File zu bewirken, dass jedes VB-Script für jede UserGroup nur einmal ausgeführt wird.
Wie im Beispiel ersichtlich sind die rot markierten gleichen Mehrfacheinträge (die beliebige Namen und Stringlängen haben könnten), auf Gleichheit herauszufiltern.
Sind Übereinstimmungen von scriptname.vbs in verschiedenen Sektionen gefunden und gibt es gleichzeitig noch die Übereinstimmung der UserGroup=Domain\Usergroup, dann sollen alle überzähligen Sektionen gelöscht werden, so dass jedes VB-Script für jede
UserGroup nur einmal ausgeführt wird.
Um zu verhindern, dass ein Aufruf von VBScripten welche x-beliebig heissen können, ( Scriptname01vbs bis ScriptnameN.vbs) unnötig doppelt oder mehrfach erfolgt, möchte
Unter Mehrfacheinträgen verstehe ich Folgendes und möchte das an dem Beispiel erklären, an dem ich Treffer für Mehrfacheinträge in verschiedenen Sektionen habe.
In den Sektionen, [SASIMP] und [SASOLAP]gibt es unter Arguments einen Pfad in dem das gleiche VBSscript (im Beispiel scriptname01) aufgerufen wird, falls der 2. Parameter, nämlich der Eintrag unter UserGroups=Domäne\globale_Security_Group ebenfalls gleich
lautet handelt es sich um einen Treffer (Mehrfachaufruf des selben *.vbs aus mehreren Sektionen)
Im Beispiel wird das aufgerufene VB-Script scriptname01.vbs genannt wird. Werden 2 gleiche Scriptnamen innerhalb mehrerer Sektionen im ini-file gefunden und sind zusätzlich noch die UserGroups=Domäne\gl_w_SASIMAP in diesen
Sectionen ebenfalls gleich, dann würde die Suche einen Treffer haben und alle bis auf eine dieser Sectionen sollten dann gelöscht werden.
Ergebnis:
Das Löschen der ganzen überzähligen Sektionen bewirken, dass jedes VB-Script für jede UserGroup nur einmal ausgeführt wird.
Frage: Kann dies überhaupt in Powershell realisiert werden ?Falls ja. -Wie kann dies über ein Powershell - Skript realisiert werden ?
Fall Beispiel eines Treffers aus dem INI-File:
[SASIMAP]
FileName=C:\Program Files (x86)\VBScript\CScript.exe
Arguments=”C:\Windows\Application Compatibility Scripts\Logon\scriptname01.vbs” //B //NoLogo //T:60
UserGroups=Domäne\gl_w_SASIMAP
Description=SASIMAP
Wait=0
WindowStyle=1
[SASOLAP]
FileName=C:\Program Files (x86)\VBScript\CScript.exe
Arguments=”C:\Windows\Application Compatibility Scripts\Logon\scriptname01.vbs” //B //NoLogo //T:60
UserGroups=Domäne\gl_w_SASIMAP
Description=SASOLAP
Wait=0
WindowStyle=1
(siehe Ini-File Bespiel)
Bitte kann mir hier jemand in der Vorgehensweise, dies in Powershell zu programmieren, weiterhelfen.
Einlesen der Ini-Files in verschiedene Arrays und Vergleich der Einträge auf identische Scriptnamen und identische UserGroups, wäre meine erste Idee. Leider bin ich noch nicht soweit das ich das selber umsetzen könnte.