changed: logging

changed: sort and deduplicate output
changed: "GruppenVerwaltungNEU..." output
This commit is contained in:
Edmond Gebara 2026-07-06 06:50:50 +02:00
parent b84b5a73a1
commit a5e28a7f52
12 changed files with 785 additions and 1280 deletions

3
.vscode/launch.json vendored
View file

@ -10,8 +10,7 @@
"request": "launch",
"script": "${workspaceFolder}/Process-ADObjects.ps1",
"args": ["R125"],
"preLaunchTask": "clean-workdirs",
"postDebugTask": "normalize-output"
"preLaunchTask": "clean-workdirs"
},
{
"name": "Launch Measure Main Script",

139
CLAUDE.md Normal file
View file

@ -0,0 +1,139 @@
# CLAUDE.md — SparKURS / Process-ADObjects
Briefing for Claude sessions on this repository. Read fully before touching code.
## Purpose
PowerShell system processing Active Directory group memberships for Sparkassen
banking institutes (currently R125, Y015). Reads AD export CSVs, transforms them
per institute, and writes CSV files consumed by (a) the DAW GUI import baskets
("Basket.Import.ADGroup.*") and (b) KNIME workflows. Runtime target: ~3 minutes
per institute (down from 10 h; do not regress this).
## File map
| File | Role |
|---|---|
| `Process-ADObjects.ps1` | Main entry, loads config, dot-sources the rest |
| `Process-ADObjects-Configuration.ps1` | `$Config` hashtable: institutes, GroupManagementMappings, flags (`TestMode`, `Verbose`, ...). Pure data, no logic |
| `Process-ADObjects-Base.ps1` | Core lookups: membership index (`newObjectMembershipsIndex`, `getObjectMemberships`, `getUsersByMemberGroup`), `getRoleType`, prefix matcher (`buildPrefixMatcher`, `testKnownPrefixes`) |
| `Process-ADObjects-Utility.ps1` | Logging (`openLog`/`closeLog`/`outLog`/`outLogVerbose`), input checks, exception helpers, `removeDuplicatesFromSortedList` |
| `Process-ADObjects-Work.ps1` | Institute dispatch |
| `Process-ADObjects-Work-R125.ps1` / `-Y015.ps1` | Per-institute processing. Structurally identical copies (deduplication planned). Sections: FileSystemAccess, AppAccess, AppConfiguration, Organisation, Security, Anwenderrollen; then post-processing (sort → dedup → Neu derivation → file writes) |
| `Process-ADObjects-Analyze.ps1` | AD object analysis. Known incomplete; cleanup planned |
| `Process-ADObjects-Test.ps1` | Test scaffolding |
## Conventions (mandatory)
- **English** for all code, comments, identifiers, log messages. German only in chat.
- **Allman** brace style (opening brace on its own line).
- **`utf8NoBom`** for every file output; LF is fine (runs on macOS/pwsh 7).
- No `Write-Host` in processing code — use `outLog` / `outLogVerbose`.
Exceptions: the output helpers themselves (`outLog`, `outScreen`, `dumpVar`,
`writeExceptionInfo*`).
- Institute code is parameterized via `$SPKID` (e.g. "R125") and `$SPKNO`
(e.g. "125"). No hardcoded institute literals in Work files.
- Code is currently intentionally comment-free (old comments stripped 2026-07;
re-commenting planned). Bug history lives in git and in this file.
## Logging system
- `outLog <args...>` — always-on log line; args are joined with **newline**.
For a single-line message concatenate in parentheses:
`outLog ("found " + $n + " entries")`.
- `outLog ... -ToScreen $false` — file only. Named parameter only; positional
args all go to the message (`PositionalBinding=$false` +
`ValueFromRemainingArguments`).
- `outLogVerbose <args...>` — trace layer, gated by `$Config.Verbose`, never to
screen. ~440 call sites instrument every loop iteration and if/elseif/else
branch. With `Verbose = $true` a full run writes millions of lines — use
`TestMode` for verbose runs.
- Writer: persistent `StreamWriter` (UTF-8 no BOM, append, `AutoFlush=$true`),
auto-opens on first `outLog` and auto-reopens when `$LogFileName` changes.
`closeLog` at end is good style, not required. `tail -f` on the log works.
- Timestamp format is `HH:mm:ss.fff`. (`".mmm"` was a historic bug: minutes,
not milliseconds. Do not reintroduce.)
## Output post-processing (per Work file, end of run)
1. `Sort($ordinalComparer)` on all four collections
(`DAWGruppenAnlegenOutList`, `DAWGruppenverwaltungOutList`,
`KURSSollProfileOutList`, `KURSIstMitarbeiterProfileOutList`).
2. `removeDuplicatesFromSortedList` on each (logs removed count per list).
3. `DAWGruppenverwaltungNeuOutList` is **derived** from the sorted Out list —
never written inline. Rule: rows with empty `Accounts.Add` pass through;
first row per `GUIADGroup.LDAP` block keeps all columns; subsequent rows
carry only the account (`;;;;;<acct>;;;;`).
Open point: same account via multiple Quellgruppen still yields duplicate
reduced rows within a block (3-line fix pending DAW import behavior).
## Verification workflow
1. Syntax check before any run (parser API, no execution):
`[System.Management.Automation.Language.Parser]::ParseFile(...)` per file.
On error lists, fix the **bottom-most concrete** error (e.g. "Unexpected
token 'X'"); "Missing closing brace" messages above it are usually cascade.
2. Output comparison is always a **sorted multiset compare**, never a join:
`diff <(tail -n +3 REF.csv | sort -u) <(tail -n +3 NEW.csv | sort)`
(`+3`: skip Basket preamble + header; `-u` on the reference because current
code dedups and old references contain exact duplicates, e.g. 362 in the
R125 reference).
3. Reference files written under Windows PowerShell 5.1 have **UTF-8 BOM +
CRLF** and a semicolon-padded preamble (`ManageMembers;;;;;;;;;`); current
output has no BOM, LF, unpadded preamble. Normalize before comparing.
## Trap registry (hard-won; check before "optimizing")
- **PS 5.1 vs pwsh 7 divergences:**
- `Sort-Object -Property "Order"` on hashtables silently does NOT sort on
5.1. Always use scriptblock form: `Sort-Object { [int]$_.Order }`.
- `-Encoding utf8` writes BOM on 5.1, no BOM on 7. Always specify
`utf8NoBom` (or `utf8BOM` deliberately).
- Reference outputs originate from 5.1 → see verification §3.
- **R125 Proxy rules have `Order = 130/140`** (were 0/1). Reason: reference
behavior classifies `GGX-Proxy*` as `GPO`; on pwsh 7 a working sort would let
the (non-FI-Doku) Proxy rules win. Other institutes still have the 0/1
pattern — same trap waits there when validating against 5.1-era references.
- **`getUsersByMemberGroup` must index `$ADObjectMembershipsIndexed`** (the
hashtable). Indexing the flat array with a string key fails silently
($null → all indirect memberships vanish). Cost us 157k rows once.
- **Both membership expansion branches need their `$users = ...` assignment.**
A deleted line in the AppAccess group branch silently dropped 83k rows
($users was stale from the FS section).
- **Out vs Neu list Add targets:** adding a line to the wrong collection
duplicated every FS creation row. The Neu list is derived now, but the same
copy-paste class applies to the four remaining lists.
- **Prefix filter (Anwenderrollen):** `R125GUX*`/`<SPKID>GUX*` objects fall
THROUGH (original cascade had an empty first branch). The explicit
`StartsWith` check preserves this regardless of the prefix CSV content.
- **`+` in argument mode is a literal argument**, not concatenation:
`outLog "a" + $b` passes three args. Parenthesize: `outLog ("a" + $b)`.
- **Adding named parameters to `$args`-style functions** breaks positional
callers. Pattern: `[CmdletBinding(PositionalBinding=$false)]` +
`[Parameter(ValueFromRemainingArguments)]`.
- **Institute porting:** check for bare `SPKNO`/`SPKID` (missing `$`) —
happened twice in Y015. `grep -P '[^$\w]SPK(NO|ID)\b'`.
- **Editor hazards:** regex replace across guard lines and format-on-save have
each corrupted a file (interleaved fragments, brace salad). Prefer scripted,
validated transforms; always `git diff` after merging delivered files;
replace whole files rather than hand-merging.
- **KNIME comparisons are fragile:** BOM breaks column autodetection; the
`DOMAIN\user` backslash can be eaten as escape char; join column pairing
drifts (Add vs Rem columns); duplicate keys break join semantics. Use the
shell/PowerShell multiset compare instead.
- **`Start-ThreadJob` scriptblocks don't write parent variables** — the
`$startParallel` path in Analyze never worked. Needs `Receive-Job` if ever
activated.
- **Empty `catch {}` blocks** exist in both Work files (Write-Host removed) —
exceptions are currently swallowed there; add log lines when instrumenting.
## Backlog
- Re-comment the codebase (fresh, English). Document at minimum: scriptblock
sort rationale, GUX fall-through, Proxy Order renumbering, Neu derivation.
- Deduplicate R125/Y015 into a shared parameterized core.
- TestMode: implement consistently across all sections.
- Analyze: rework (incomplete; parallel path broken by design).
- Decide: preamble semicolon padding for DAW import; Neu per-block account
dedup.
- Y015: first verification run against its 5.1-era reference still pending.

112
Process-ADObjects-Analyze.ps1 Executable file → Normal file
View file

@ -1,5 +1,6 @@
function analyzeADObjects {
function analyzeADObjects
{
Param
(
[Parameter(Mandatory = $false, Position = 0)]
@ -7,7 +8,7 @@ function analyzeADObjects {
)
$start = Get-Date
outLog "started: analyzeADObjects at" $start.ToString("HH:mm:ss.mmm")
outLog "started: analyzeADObjects at" $start.ToString("HH:mm:ss.fff")
$adObjectsOrganisation = @()
$adObjectsAppAccess = @()
@ -15,8 +16,9 @@ function analyzeADObjects {
$adObjectsAppConfiguration = @()
$adObjectsSecurity = @()
if ($startParallel) {
#this stuff won´t work this way - missing globals !!!
if ($startParallel)
{
outLogVerbose 'if ($startParallel) -> true'
Start-ThreadJob -ScriptBlock { $adObjectsOrganisation += analyzeADObjectsByType $FI.TypeTagOrganisation}
Start-ThreadJob -ScriptBlock { $adObjectsAppAccess += analyzeADObjectsByType $FI.TypeTagAppAccess}
Start-ThreadJob -ScriptBlock { $adObjectsFilesystemAccess += analyzeADObjectsByType $FI.TypeTagFilesystemAccess}
@ -24,107 +26,143 @@ function analyzeADObjects {
Start-ThreadJob -ScriptBlock { $adObjectsSecurity += analyzeADObjectsByType $FI.TypeTagSecurity}
Get-Job | Wait-Job
}
else {
else
{
outLogVerbose 'else -> true (if/elseif ($startParallel) -> false)'
$adObjectsOrganisation += analyzeADObjectsByType $FI.TypeTagOrganisation
$adObjectsAppAccess += analyzeADObjectsByType $FI.TypeTagAppAccess
$adObjectsFilesystemAccess += analyzeADObjectsByType $FI.TypeTagFilesystemAccess
$adObjectsAppConfiguration += analyzeADObjectsByType $FI.TypeTagAppConfiguration
$adObjectsSecurity += analyzeADObjectsByType $FI.TypeTagSecurity
}
outlog "found " $adObjectsOrganisation.Count " entries of type " $FI.TypeTagOrganisation
outlog "found " $adObjectsAppAccess.Count " entries of type " $FI.TypeTagAppAccess
outlog "found " $adObjectsFilesystemAccess.Count " entries of type " $FI.TypeTagFilesystemAccess
outlog "found " $adObjectsAppConfiguration.Count " entries of type " $FI.TypeTagAppConfiguration
outlog "found " $adObjectsSecurity.Count " entries of type " $FI.TypeTagSecurity
outLog ("found " + $adObjectsOrganisation.Count + " entries of type " + $FI.TypeTagOrganisation)
outLog ("found " + $adObjectsAppAccess.Count + " entries of type " + $FI.TypeTagAppAccess)
outLog ("found " + $adObjectsFilesystemAccess.Count + " entries of type " + $FI.TypeTagFilesystemAccess)
outLog ("found " + $adObjectsAppConfiguration.Count + " entries of type " + $FI.TypeTagAppConfiguration)
outLog ("found " + $adObjectsSecurity.Count + " entries of type " + $FI.TypeTagSecurity)
$end = Get-Date
outLog "finished: analyzeADObjects at " $end.ToString("HH:mm:ss.mmm") ", used " ($end - $start)
outLog ("finished: analyzeADObjects at " + $end.ToString("HH:mm:ss.fff") + ", used " + ($end - $start))
}
function analyzeDirectoryPaths {
function analyzeDirectoryPaths
{
$header = "Verzeichnisname", "Normierter Pfad" , "Kontrolle" , "Endpunktname", "Verzeichnisart", "Verantwortlicher (Stelle oder Personalnummer)" , "Gruppe Lesen", "Gruppe Aendern", "Benutzer mit Leserecht", "Benutzer mit Aenderungsrecht", "Rollen mit Leserecht", "Rollen mit Aenderungsrecht"
$DirectoriesFilePathEntries = Get-Content -Path $DirectoriesInFilePath | Select-Object -Skip 1 | ConvertFrom-Csv -Delimiter ";" -Header $header
# \\V998DPVP.V998.INTERN\DFSRootP014$\P014\Daten\Ablage\GS\01010
# use slashes '/' as directory seperator to avoid backslash '\'-handling with
# $rootPath = [regex]::escape('\' + $SPK.RootDomainName + '.V998.INTERN\DFSRoot' + $Institut + '$\' + $Institut + '\Daten')
$rootPath = [regex]::escape('\' + $SPK.RootDomainName + '.V998.INTERN\DFSRoot' + $Institut + '$\' + $Institut + '\Daten')
outLog $rootPath
foreach ($directoryEntry in $DirectoriesFilePathEntries) {
foreach ($directoryEntry in $DirectoriesFilePathEntries)
{
outLogVerbose 'foreach $directoryEntry in $DirectoriesFilePathEntries:' $directoryEntry.Verzeichnisname
$path = [regex]::escape($directoryEntry.Verzeichnisname)
$restPath = $path.Replace($rootPath, "")
# $restPath = $path.Substring($rootPath.length)
outLog $restPath
}
}
function analyzeADObjectsByType {
function analyzeADObjectsByType
{
Param
(
[Parameter(Mandatory = $true, Position = 0)]
[String] $typeTag
)
$start = Get-Date
outLog "started: analyzeADObjects type " $typeTag "at" $start.ToString("HH:mm:ss.mmm")
outLog "started: analyzeADObjects type " $typeTag "at" $start.ToString("HH:mm:ss.fff")
$adGroupObjects = @()
$counter = 1
foreach ($adObject in $ADObjects) {
if (-Not ($adObject.Description)) {
foreach ($adObject in $ADObjects)
{
outLogVerbose 'foreach $adObject in $ADObjects:' $adObject.ObjectName
if (-Not ($adObject.Description))
{
outLogVerbose 'if (-Not ($adObject.Description)) -> true'
$adObject.Description = $Config.EmptyDescription
}
if ($typeTag -ieq $FI.TypeTagAppConfiguration) {
if ($adObject.OU -cmatch $FI.RelevantGroups.AppConfiguration.Filter) {
if ($typeTag -ieq $FI.TypeTagAppConfiguration)
{
outLogVerbose 'if ($typeTag -ieq $FI.TypeTagAppConfiguration) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.AppConfiguration.Filter)
{
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.AppConfiguration.Filter) -> true'
$userMemberShips = getAllUserMemberships $adObject
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.AppConfiguration.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
if ($IsTestMode -and ($counter -gt $Config.TestMode) )
{
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
}
}
elseif ($typeTag -ieq $FI.TypeTagAppAccess) {
if ($adObject.OU -cmatch $FI.RelevantGroups.AppAccess.Filter) {
elseif ($typeTag -ieq $FI.TypeTagAppAccess)
{
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagAppAccess) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.AppAccess.Filter)
{
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.AppAccess.Filter) -> true'
$userMemberShips = getAllUserMemberships $adObject
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.AppAccess.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
if ($IsTestMode -and ($counter -gt $Config.TestMode) )
{
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
}
}
elseif ($typeTag -ieq $FI.TypeTagFileSystemAccess) {
if ($adObject.OU -cmatch $FI.RelevantGroups.FilesystemAccess.Filter) {
elseif ($typeTag -ieq $FI.TypeTagFileSystemAccess)
{
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagFileSystemAccess) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.FilesystemAccess.Filter)
{
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.FilesystemAccess.Filter) -> true'
$userMemberShips = getAllUserMemberships $adObject
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.FilesystemAccess.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
if ($IsTestMode -and ($counter -gt $Config.TestMode) )
{
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
}
}
elseif ($typeTag -ieq $FI.TypeTagOrganisation) {
if ($adObject.OU -cmatch $FI.RelevantGroups.Organisation.Filter) {
elseif ($typeTag -ieq $FI.TypeTagOrganisation)
{
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagOrganisation) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.Organisation.Filter)
{
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.Organisation.Filter) -> true'
$userMemberShips = getAllUserMemberships $adObject
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.Organisation.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
if ($IsTestMode -and ($counter -gt $Config.TestMode) )
{
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
}
}
elseif ($typeTag -ieq $FI.TypeTagSecurity) {
if ($adObject.OU -cmatch $FI.RelevantGroups.Security.Filter) {
elseif ($typeTag -ieq $FI.TypeTagSecurity)
{
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagSecurity) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.Security.Filter)
{
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.Security.Filter) -> true'
$userMemberShips = getAllUserMemberships $adObject
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.Security.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
if ($IsTestMode -and ($counter -gt $Config.TestMode) )
{
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
}
@ -132,7 +170,7 @@ function analyzeADObjectsByType {
}
$end = Get-Date
outLog "finished: analyzeADObjects type " $typeTag "at" $end.ToString("HH:mm:ss.mmm") ", used " ($end - $start)
outLog "finished: analyzeADObjects type " $typeTag "at" $end.ToString("HH:mm:ss.fff") ", used " ($end - $start)
return $adGroupObjects
}

View file

@ -2,32 +2,18 @@
function writeHeaders
{
################################################################
# --------------------------------------------------------------
# Header für $DAWGruppenAnlegenOutFilePath anlegen
# --------------------------------------------------------------
"Basket.Import.ADGroup.Create" | Out-File $DAWGruppenAnlegenOutFilePath -Encoding "utf8NoBOM"
"GUIMandator" + ";" + "GUIADGroup.Name" + ";" + "GUIADGroup.Description" + ";" + "GUIMandatorADGroupType" + ";" + "GUIADGroup.DisplayName" + ";" + "GUIProcessingNote" + ";" + "OldName" | Out-File $DAWGruppenAnlegenOutFilePath -Append -Encoding "utf8NoBom"
# --------------------------------------------------------------
# Header für $DAWGruppenverwaltungOutFilePath anlegen
# --------------------------------------------------------------
"Basket.Import.ADGroup.ManageMembers" | Out-File "$DAWGruppenverwaltungOutFilePath" -Encoding "utf8NoBom"
"GUIMandator" + ";" + "GUIMandatorADGroupType" + ";" + "GUIADGroup.LDAP" + ";" + "GUIADGroup.ADGroups.Add.LDAPs" + ";" + "GUIADGroup.ADGroups.Rem.LDAPs" + ";" + "GUIADGroup.Accounts.Add.LDAPs" + ";" + "GUIADGroup.Accounts.Rem.LDAPs" + ";" + "GUIProcessingNote" + ";" + "ADObjectType" + ";" + "Quellgruppe" | Out-File $DAWGruppenverwaltungOutFilePath -Encoding "utf8NoBom" -Append
"Basket.Import.ADGroup.ManageMembers" | Out-File "$DAWGruppenverwaltungNeuOutFilePath" -Encoding "utf8NoBom"
"GUIMandator" + ";" + "GUIMandatorADGroupType" + ";" + "GUIADGroup.LDAP" + ";" + "GUIADGroup.ADGroups.Add.LDAPs" + ";" + "GUIADGroup.ADGroups.Rem.LDAPs" + ";" + "GUIADGroup.Accounts.Add.LDAPs" + ";" + "GUIADGroup.Accounts.Rem.LDAPs" + ";" + "GUIProcessingNote" + ";" + "ADObjectType" + ";" + "Quellgruppe" | Out-File $DAWGruppenverwaltungNeuOutFilePath -Encoding "utf8NoBom" -Append
# --------------------------------------------------------------
# Header für $KURSSollProfile anlegen
# --------------------------------------------------------------
"Profilnummer;Name;Beschreibung;Profilverantwortliche OE/Stelle;Info;InfoKurs" | Out-File $KURSSollProfileOutFilePath -Encoding "utf8NoBom"
# --------------------------------------------------------------
# Header für $IstMitarbeiterProfile anlegen
# --------------------------------------------------------------
"Personalnummer;;Profilnummer;Name Berechtigungsprofil" | Out-File "$KURSIstMitarbeiterProfileOutFilePath" -Encoding "utf8NoBom"
################################################################
}
function getObjectMemberships
@ -51,6 +37,7 @@ function getObjectMemberships
}
else
{
outLogVerbose 'else -> true (if/elseif (?) -> false)'
@($bucket)
}
@ -73,34 +60,20 @@ function getAllUserMemberships
$groupMemberships = @(getObjectMemberships $adObjectEntry.ObjectName "group" "group")
foreach ($groupMembership in $groupMemberships)
{
outLogVerbose 'foreach $groupMembership in $groupMemberships:' $groupMembership.MemberName
$result.AddRange(@(getObjectMemberships $groupMembership.MemberName "user" "group"))
}
# it's the same, bad odd syntax
# return ,$result.ToArray()
return @($result)
}
function getUsersByMemberGroup
{
<#
.SYNOPSIS
Retrieves the user membership entries for a given group via the
prebuilt membership index (O(1) lookup, exact class match).
.PARAMETER GroupName
The group whose user members are requested (matched against GroupName).
.OUTPUTS
Array of matching membership entries (empty array if none).
Object references are preserved from the index.
#>
param
(
[Parameter(Mandatory = $true, Position = 0)]
[string] $GroupName
)
# BUGFIX 2026-07-02: was indexing the flat array $ADObjectMemberships with a string
# key, which fails silently (non-terminating Int32 conversion error -> $null) and
# dropped ALL indirect (group-inherited) user memberships. Must use the hashtable.
$bucket = $ADObjectMembershipsIndexed[(getMembershipIndexKey $GroupName "user")]
$result = if ($null -eq $bucket)
{
@ -108,47 +81,17 @@ function getUsersByMemberGroup
}
else
{
outLogVerbose 'else -> true (if/elseif (?) -> false)'
@($bucket)
}
return $result
}
# function getAllUserMemberships
# {
# param([Parameter(Mandatory, Position = 0)] $adObjectEntry)
# $result = [System.Collections.Generic.List[object]]::new()
# $result.AddRange(@(getObjectMemberships $adObjectEntry.ObjectName "user" "user"))
# $groupMemberships = @(getObjectMemberships $adObjectEntry.ObjectName "group" "group")
# foreach ($groupMembership in $groupMemberships)
# {
# $result.AddRange(@(getObjectMemberships $groupMembership.MemberName "user" "group"))
# }
# # ist beides gleich
# # return ,$result.ToArray()
# return @($result)
# }
# function getObjectMemberships
# {
# param
# (
# [Parameter(Mandatory = $true, Position = 0)]
# [String] $adObjectEntryName,
# [Parameter(Mandatory = $true, Position = 1)]
# [string] $memberShipType,
# [Parameter(Mandatory = $true, Position = 2)]
# [string] $memberShipOriginalType
# )
# $objectMemberships = @($ADObjectMemberships | Where-Object {($_.GroupName -ieq $adObjectEntryName) -and ($_.MemberClass -ieq $memberShipType)})
# # this is not very nice - we should only add members if they don´t exist - not just to set the values
# $objectMemberships | Add-Member -Force "Origin" $memberShipOriginalType
# $objectMemberships | Add-Member -Force "OriginName" $adObjectEntryName
# return $objectMemberships
# }
function getMembershipIndexKey
{
@ -164,16 +107,6 @@ function getMembershipIndexKey
function newObjectMembershipsIndex
{
<#
.SYNOPSIS
Builds a lookup index over membership entries for O(1) retrieval by
GroupName + MemberClass, replacing repeated linear Where-Object scans.
.PARAMETER ADObjectMemberships
The flat collection of membership entries to index.
.OUTPUTS
Hashtable mapping "<groupname>\0<memberclass>" (lowercased) to a
List[object] of the matching entries. Object references are preserved.
#>
param
(
[Parameter(Mandatory = $true, Position = 0)]
@ -185,16 +118,18 @@ function newObjectMembershipsIndex
foreach ($entry in $ADObjectMemberships)
{
# NUL separator avoids key collisions between e.g. "ab"+"c" and "a"+"bc"
outLogVerbose 'foreach $entry in $ADObjectMemberships:' $entry.GroupName
$key = getMembershipIndexKey $($entry.GroupName) $($entry.MemberClass)
$key0 = "$($entry.GroupName)`0$($entry.MemberClass)".ToLowerInvariant()
if (-not($key -eq $key0))
{
outLogVerbose 'if (-not($key -eq $key0)) -> true'
throw "this is BAAAD"
}
$bucket = $index[$key]
if ($null -eq $bucket)
{
outLogVerbose 'if ($null -eq $bucket) -> true'
$bucket = [System.Collections.Generic.List[object]]::new()
$index[$key] = $bucket
}
@ -213,27 +148,23 @@ function getRoleType
[Parameter(Mandatory = $true, Position = 1)]
[String] $typeTag
)
# $FileSystemAccessEntriesNew = @()
$roleType = "unknown"
# BUGFIX 2026-07-02: 'Sort-Object -Property "Order"' does not resolve hashtable keys on
# Windows PowerShell 5.1 (silent no-op, declaration order preserved). The scriptblock
# form works identically on 5.1 and 7, making rule evaluation order engine-independent.
$relevantRoleTypes = $SPK.GroupManagementMappings | Where-Object {$_.OU -ieq $typeTag} | Sort-Object { [int]$_.Order }
foreach ($relevantRoleType in $relevantRoleTypes)
{
outLogVerbose 'foreach $relevantRoleType in $relevantRoleTypes:' $relevantRoleType.TypeName
if ($adObjectEntry.OldName -cmatch $relevantRoleType.TagRegExp)
{
outLogVerbose 'if ($adObjectEntry.OldName -cmatch $relevantRoleType.TagRegExp) -> true'
$roleType = $relevantRoleType.TypeName
break
}
}
# Ausnahmebehandlungen in Absprache mit N.Zimmer am 21.01.2019
#--------------------------------------------------------------
if (($typeTag -ieq $FI.TypeTagSecurity) -and ($roleType -ieq "unknown"))
{
outLogVerbose 'if (($typeTag -ieq $FI.TypeTagSecurity) -and ($roleType -ieq "unknown")) -> true'
$roleType = "GPO"
}
#--------------------------------------------------------------
return $roletype
}
@ -246,18 +177,19 @@ function buildPrefixMatcher
if (-not (Test-Path $CsvPath))
{
outLogVerbose 'if (-not (Test-Path $CsvPath)) -> true'
throw "Prefix CSV not found: $CsvPath"
}
# length -> HashSet[string] of prefixes with exactly that length
$byLength = [System.Collections.Generic.Dictionary[int, System.Collections.Generic.HashSet[string]]]::new()
# foreach ($row in (Import-Csv -Path $CsvPath))
foreach ($row in $SPK.ProfilPrefixes)
{
outLogVerbose 'foreach $row in $SPK.ProfilPrefixes:' $row
$prefix = $row.Prefix
if ([string]::IsNullOrEmpty($prefix))
{
outLogVerbose 'if ([string]::IsNullOrEmpty($prefix)) -> true'
continue
}
@ -265,18 +197,15 @@ function buildPrefixMatcher
$bucket = $null
if (-not $byLength.TryGetValue($len, [ref] $bucket))
{
outLogVerbose 'if (-not $byLength.TryGetValue($len, [ref] $bucket)) -> true'
$bucket = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::Ordinal)
$byLength[$len] = $bucket
}
[void]$bucket.Add($prefix)
}
# Pre-compute the distinct lengths once, sorted descending so the most specific
# (longest) prefix wins first - mirrors the "specific before generic" ordering
# of a well-formed elseif cascade.
$lengths = $byLength.Keys | Sort-Object -Descending
# Return a small state object carrying both structures.
return [pscustomobject]@{
ByLength = $byLength
Lengths = $lengths
@ -294,40 +223,30 @@ function testKnownPrefixes
if ([string]::IsNullOrEmpty($Value))
{
outLogVerbose 'if ([string]::IsNullOrEmpty($Value)) -> true'
return $false
}
$valueLen = $Value.Length
foreach ($len in $Matcher.Lengths)
{
outLogVerbose 'foreach $len in $Matcher.Lengths:' $len
if ($len -gt $valueLen)
{
outLogVerbose 'if ($len -gt $valueLen) -> true'
continue
} # prefix longer than value -> can't match
}
$candidate = $Value.Substring(0, $len)
$bucket = $Matcher.ByLength[$len]
if ($bucket.Contains($candidate))
{
return $true # found a known prefix
outLogVerbose 'if ($bucket.Contains($candidate)) -> true'
return $true
}
}
return $false
}
# function getNormalizedDirectoryPaths
# {
# $analyzedDirectoryEntries = @()
# # $header = "Verzeichnisname", "Endpunktname", "Gruppe Lesen", "Gruppe Aendern", "Benutzer mit Leserecht", "Benutzer mit Aenderungsrecht", "Rollen mit Leserecht", "Rollen mit Aenderungsrecht", "Verzeichnisart", "normierter Pfad"
# # $directoriesFilePathEntries = Get-Content -Path $DirectoriesFilePath | Select-Object -Skip 1 | ConvertFrom-Csv -Delimiter ";" -Header $header
# # $directoriesFilePathEntries = Get-Content -Path $DirectoriesInFilePath | Select-Object -Skip 1 | ConvertFrom-Csv -Delimiter ";"
# $directoriesFilePathEntries = Get-Content -Path $DirectoriesInFilePath | ConvertFrom-Csv -Delimiter ";"
# # $headers = ($directoriesFilePathEntries | Get-Member -MemberType NoteProperty)
# # $interstingHeader = $headers.Name -match "Gruppe .ndern"
# foreach ($FilePathEntry in $directoriesFilePathEntries)
# {
# $analyzedDirectoryEntries += $FilePathEntry.Name
# }
# }
function postProcess
@ -337,41 +256,10 @@ function postProcess
[bool]$convertToAscii = $false
)
#########################################################
# just to be sure that nothing happens: comment it out until you know what`s happening here !
#########################################################
# $tmpFilePath = moveToInstituteTmpPath $DAWGruppenAnlegenOutFilePath $true
# $firstlines = Get-Content -Path $tmpFilePath -TotalCount 2
# Get-Content -Path $tmpFilePath -TotalCount 1 | Out-File -Force $DAWGruppenAnlegenOutFilePath
# Get-Content -Path $tmpFilePath | Select-Object -Skip 2 | ConvertFrom-Csv -Delimiter ";" | select 'GUIMandator', 'GUIADGroup.Name', 'GUIADGroup.Description', 'GUIMandatorADGroupType', 'GUIADGroup.DisplayName', 'GUIProcessingNote' | ConvertTo-Csv -Delimiter ';' -NoTypeInformation | Out-File -FilePath $DAWGruppenAnlegenOutFilePath -Encoding UTF8 -Append
# # Import-Csv $tmpFilePath | select 'GUIMandator','GUIADGroup.Name','GUIADGroup.Description','GUIMandatorADGroupType','GUIADGroup.DisplayName','GUIProcessingNote' | Export-Csv -Path $DAWGruppenAnlegenOutFilePath -Delimiter ";" -Encoding UTF8
# $tmpFilePath = moveToInstituteTmpPath $DAWGruppenverwaltungOutFilePath $true
# $firstlines = Get-Content -Path $tmpFilePath -TotalCount 2
# Get-Content -Path $tmpFilePath -TotalCount 1 | Out-File -Force $DAWGruppenverwaltungOutFilePath
# Get-Content -Path $tmpFilePath | Select-Object -Skip 2 | ConvertFrom-Csv -Delimiter ";" | select "GUIMandator", "GUIMandatorADGroupType", "GUIADGroup.LDAP", "GUIADGroup.ADGroups.Add.LDAPs", "GUIADGroup.ADGroups.Rem.LDAPs", "GUIADGroup.Accounts.Add.LDAPs", "GUIADGroup.Accounts.Rem.LDAPs", "GUIProcessingNote" | ConvertTo-Csv -Delimiter ';' -NoTypeInformation | Out-File -FilePath $DAWGruppenverwaltungOutFilePath -Encoding UTF8 -Append
# # Import-Csv $tmpFilePath | select "GUIMandator","GUIMandatorADGroupType","GUIADGroup.LDAP","GUIADGroup.ADGroups.Add.LDAPs","GUIADGroup.ADGroups.Rem.LDAPs","GUIADGroup.Accounts.Add.LDAPs","GUIADGroup.Accounts.Rem.LDAPs","GUIProcessingNote" | Export-Csv -Path $DAWGruppenverwaltungOutFilePath -Delimiter ";" -Encoding UTF8 -NoTypeInformation
# $tmpFilePath = moveToInstituteTmpPath $DAWGruppenverwaltungNeuOutFilePath $true
# $firstlines = Get-Content -Path $tmpFilePath -TotalCount 2
# Get-Content -Path $tmpFilePath -TotalCount 1 | Out-File -Force $DAWGruppenverwaltungNeuOutFilePath
# Get-Content -Path $tmpFilePath | Select-Object -Skip 2 | ConvertFrom-Csv -Delimiter ";" | select "GUIMandator", "GUIMandatorADGroupType", "GUIADGroup.LDAP", "GUIADGroup.ADGroups.Add.LDAPs", "GUIADGroup.ADGroups.Rem.LDAPs", "GUIADGroup.Accounts.Add.LDAPs", "GUIADGroup.Accounts.Rem.LDAPs", "GUIProcessingNote" | ConvertTo-Csv -Delimiter ';' -NoTypeInformation | Out-File -FilePath $DAWGruppenverwaltungNeuOutFilePath -Encoding UTF8 -Append
####################################################### todo ?
# $KURSIstProfileOutFilePath
# $KURSIstProfileBerechtigungenOutFilePath
# $KURSIstStellenBerechtigungenOutFilePath
# $KURSIstStellenProfileOutFilePath
# $KURSIstOEsBerechtigungenOutFilePath
# $KURSIstOEsProfileOutFilePath
# $KURSIstMitarbeiterProfileOutFilePath
# $KURSSollStellenfunktionenOutFilePath
# $KURSSollProfileOutFilePath
# $KURSSollProfileBerechtigungenOutFilePath
# $KURSSollStellenfunktionenBerechtigungenOutFilePath
# $KURSSollStellenfunktionenProfileOutFilePath
####################################################### todo ?
}

View file

@ -1,48 +1,18 @@
$Config = @{
# DefaultInstitute = "Y013"
# DefaultInstitute = "Q017"
# DefaultInstitute = "Y058"
# DefaultInstitute = "Y028"
# DefaultInstitute = "P006"
# DefaultInstitute = "P020"
# DefaultInstitute = "R045"
# DefaultInstitute = "E056"
# DefaultInstitute = "Y019"
# DefaultInstitute = "Y123"
# DefaultInstitute = "Y015"
DefaultInstitute = "R125"
# DefaultInstitute = "Y087"
# DefaultInstitute = "Q023"
# DefaultInstitute = "P045"
# DefaultInstitute = "P030"
# DefaultInstitute = "P058"
# DefaultInstitute = "Z019"
# DefaultInstitute = "Z002"
# DefaultInstitute = "Z001"
# DefaultInstitute = "Z013"
# DefaultInstitute = "P014"
# DefaultInstitute = "Z101"
# Evaluation of "$Config.$DataPathTag" REALLY CAN`T WORK HERE, you stupid!!
# DataPathTag = "Data"
# DataRootPath = $PSScriptroot + "/" + $Config.$DataPathTag + "/"
DataRootPath = $PSScriptroot + "/Data/"
EmptyDescription = "### keine Beschreibung ###"
NotAvailable = "N/A"
#set TestMode to a value n greater than 0 to import only n entries for every ADObject-rolettype
TestMode = 0
TestMode = 3
Verbose = $true
ToScreen = $true
Analyze = $false
ProcessDAW = $true
WriteKURS = $false
TransferDAW = $false
# PostProcess = $true --- DON'T DO THIS for now !!!
PostProcess = $false
FI = @{
# put RootDomainName-Setting into $SPK, so there`s no need to do erroneous calcultations
# RootDomainName = "V998DPV"
# UserRolePrefix = "GGX"
# ApplicationAccessGroupPrefix = "GGX"
TypeTagRole = "AnwenderRollen"
TypeTagAppConfiguration = "Anwendungskonfiguration"
TypeTagAppAccess = "Anwendungszugriff"
@ -51,7 +21,6 @@ $Config = @{
TypeTagSecurity = "Sicherheitseinstellungen"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -61,11 +30,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -78,21 +42,11 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
#OU=Benutzergruppen
#OU=Gruppen
RelevantGroups =
@{
#AppAccess = @{Filter = "OU=Anwendungszugriff,OU=Benutzergruppen"; ShortCut = "A_" }
#FilesystemAccess = @{Filter = "OU=Dateisystemzugriff,OU=Benutzergruppen"; ShortCut = "V_" }
#AppConfiguration = @{Filter = "OU=Anwendungskonfiguration,OU=Benutzergruppen"; ShortCut = "AK_" }
#Organisation = @{Filter = "OU=OrganisatorischeGruppen,OU=Benutzergruppen"; ShortCut = "O_" }
#Security = @{Filter = "OU=Sicherheitseinstellungen,OU=Benutzergruppen"; ShortCut = "S_" }
AppAccess = @{Filter = "OU=Anwendungszugriff,OU=Gruppen"; ShortCut = "A_" }
FilesystemAccess = @{Filter = "OU=Dateisystemzugriff,OU=Gruppen"; ShortCut = "V_" }
AppConfiguration = @{Filter = "OU=Anwendungskonfiguration,OU=Gruppen"; ShortCut = "AK_" }
@ -102,11 +56,9 @@ $Config = @{
}
}
SPK = @{
#######
R125 = @{ Region = "R"; No = "125"; Sign = "SK"; Name = "Leipzig"; RootDomainName = "V998DPVR"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -115,11 +67,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -132,15 +79,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
# BUGFIX 2026-07-02 (R125 only): Proxy rules moved to Order 130/140 (were 0/1).
# Reason: 'Sort-Object -Property Order' on hashtables silently does NOT sort on
# Windows PowerShell 5.1 (reference run) but DOES sort on PowerShell 7. With Order 0/1
# these rules won on PS7 and 'R125GGX-Proxy*' got type 'Proxy' instead of the
# reference value 'GPO'. Order 130/140 = evaluated after the GPO rules on both engines.
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 130 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 140 }
)
FileMappings =
@ -1556,11 +1495,9 @@ $Config = @{
@{Prefix = "R125GGX-WG-Data_Alle"}
)
}
#######
Y015 = @{ Region = "Y"; No = "015"; Sign = "SK"; Name = "Neuwied"; RootDomainName = "V998DPVY"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1569,11 +1506,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1586,10 +1518,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1608,12 +1537,9 @@ $Config = @{
}
#region OLD ################################################################################################
#######
Z999 = @{ Region = "Z"; No = "999"; Sign = "JPSK"; Name = "JPrise SparKURS"; RootDomainName = "V998DPVZ"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1622,11 +1548,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1639,10 +1560,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1656,7 +1574,6 @@ $Config = @{
P014 = @{ Region = "P"; No = "014"; Sign = "SLS"; Name = "Sparkass Langen-Seligenstadft"; RootDomainName = "V998DPVP"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0},
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0},
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1},
@ -1670,10 +1587,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 2},
@{TypeName = "GPO"; TagRegExp = "GGX-Modul"; OU = "Sicherheitseinstellungen"; Order = 3},
@{TypeName = "GPO"; TagRegExp = "GGX-Fingerprint"; OU = "Sicherheitseinstellungen"; Order = 4},
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 5},
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 6}
)
FileMappings =
@ -1687,7 +1601,6 @@ $Config = @{
Z002 = @{ Region = "Z"; No = "002"; Sign = "SKNE"; Name = "Sparkasse Neuss"; RootDomainName = "V998DPVZ"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1696,11 +1609,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1713,10 +1621,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1739,7 +1644,6 @@ $Config = @{
Z004 = @{ Region = "Z"; No = "004"; Sign = "SSKD"; Name = "Sparkasse Duesseldorf"; RootDomainName = "V998DPVZ"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1748,11 +1652,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1765,10 +1664,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1782,7 +1678,6 @@ $Config = @{
Z101 = @{ Region = "Z"; No = "101"; Sign = "SKB"; Name = "Sparkasse Koeln-Bonn"; RootDomainName = "V998DPVZ"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1791,11 +1686,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1808,10 +1698,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1825,7 +1712,6 @@ $Config = @{
Z019 = @{ Region = "Z"; No = "019"; Sign = "SLS"; Name = "Sparkasse Essen"; RootDomainName = "V998DPVZ"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1834,11 +1720,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1851,10 +1732,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1866,11 +1744,9 @@ $Config = @{
)
}
#######
Q017 = @{ Region = "Q"; No = "017"; Sign = "LZO"; Name = "Sparkasse zu Oldenburg"; RootDomainName = "V998DPVP"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1879,11 +1755,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1896,10 +1767,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1911,11 +1779,9 @@ $Config = @{
)
}
#######
Y013 = @{ Region = "Y"; No = "013"; Sign = "KOB"; Name = "Sparkasse Koblenz"; RootDomainName = "V998DPVY"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1924,11 +1790,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1941,10 +1802,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -1956,11 +1814,9 @@ $Config = @{
)
}
#######
Z001 = @{ Region = "Z"; No = "001"; Sign = "KRE"; Name = "Sparkasse Krefeld"; RootDomainName = "V998DPVZ"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -1969,11 +1825,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -1986,10 +1837,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2001,11 +1849,9 @@ $Config = @{
)
}
#######
Z013 = @{ Region = "Z"; No = "013"; Sign = "MGL"; Name = "Sparkasse Moenchengladbach"; RootDomainName = "V998DPK1"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2014,11 +1860,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2031,10 +1872,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2046,11 +1884,9 @@ $Config = @{
)
}
#######
Q023 = @{ Region = "Q"; No = "023"; Sign = "SOL"; Name = "Kreissparkasse Soltau"; RootDomainName = "V998DPVQ"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2059,11 +1895,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2076,10 +1907,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2091,11 +1919,9 @@ $Config = @{
)
}
#######
P045 = @{ Region = "P"; No = "045"; Sign = "WEI"; Name = "Kreissparkasse Weilburg"; RootDomainName = "V998DPVP"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2104,11 +1930,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2121,10 +1942,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2136,11 +1954,9 @@ $Config = @{
)
}
#######
P020 = @{ Region = "P"; No = "020"; Sign = "LIM"; Name = "Kreissparkasse Limburg"; RootDomainName = "V998DPVP"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2149,11 +1965,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2166,10 +1977,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2181,11 +1989,9 @@ $Config = @{
)
}
#######
Y058 = @{ Region = "Y"; No = "058"; Sign = "BIT"; Name = "Kreissparkasse Bitburg-Pruem"; RootDomainName = "V998DPVY"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2194,11 +2000,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2211,10 +2012,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2226,11 +2024,9 @@ $Config = @{
)
}
#######
Y087 = @{ Region = "Y"; No = "087"; Sign = "VUK"; Name = "Kreissparkasse Vulkaneifel"; RootDomainName = "V998DPVY"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2239,11 +2035,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2256,10 +2047,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2271,11 +2059,9 @@ $Config = @{
)
}
#######
P006 = @{ Region = "P"; No = "006"; Sign = "KGG"; Name = "Kreissparkasse Gross Gerau"; RootDomainName = "V998DPVP"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2284,11 +2070,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2301,10 +2082,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2316,11 +2094,9 @@ $Config = @{
)
}
#######
R045 = @{ Region = "R"; No = "045"; Sign = "KGG"; Name = "Sparkasse Westholstein"; RootDomainName = "V998DPVR"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2329,11 +2105,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2346,10 +2117,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2361,11 +2129,9 @@ $Config = @{
)
}
#######
E056 = @{ Region = "E"; No = "056"; Sign = "SK"; Name = "Mainfranken"; RootDomainName = "V998DPVE"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2374,11 +2140,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2391,10 +2152,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2406,11 +2164,9 @@ $Config = @{
)
}
#######
Y123 = @{ Region = "Y"; No = "123"; Sign = "SK"; Name = "Merzig-Wadern"; RootDomainName = "V998DPVY"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2419,11 +2175,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2436,10 +2187,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2453,11 +2201,9 @@ $Config = @{
#######
Y019 = @{ Region = "Y"; No = "019"; Sign = "SK"; Name = "Rhein-Haardt"; RootDomainName = "V998DPVY"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2466,11 +2212,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2483,10 +2224,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2499,11 +2237,9 @@ $Config = @{
}
#######
Y028 = @{ Region = "Y"; No = "028"; Sign = "AHR"; Name = "Kreissparkasse Ahrweiler"; RootDomainName = "V998DPVY"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2512,11 +2248,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2529,10 +2260,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2546,13 +2274,11 @@ $Config = @{
#######
P030 = @{ Region = "P"; No = "030"; Sign = "FRASPA"; Name = "Sparkasse Frankfurt"; RootDomainName = "V998DPVP"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2561,11 +2287,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2578,10 +2299,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2595,7 +2313,6 @@ $Config = @{
P058 = @{ Region = "P"; No = "058"; Sign = "KASPA"; Name = "Sparkasse Kassel"; RootDomainName = "V998DPVP"
GroupManagementMappings =
@(
#use 'Order'-Property' to set the order of 'TagRegExp'-evaluation for 'OU's - from specific to generic !!!
@{TypeName = "Role"; TagRegExp = "G.X-"; OU = "AnwenderRollen"; Order = 0 },
@{TypeName = "IExplore"; TagRegExp = "GGX-IEK_"; OU = "Anwendungskonfiguration"; Order = 0 },
@{TypeName = "Office"; TagRegExp = "GGX-OFK_"; OU = "Anwendungskonfiguration"; Order = 1 },
@ -2604,11 +2321,6 @@ $Config = @{
@{TypeName = "CustomerApplication"; TagRegExp = "GG.-"; OU = "Anwendungszugriff"; Order = 1 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EPEncr-"; OU = "Dateisystemzugriff"; Order = 0 },
@{TypeName = "FileSystemAccessProd"; TagRegExp = "GDF-EP-"; OU = "Dateisystemzugriff"; Order = 1 },
# #####################################################################################################
# "*GDT*" und "*GGD*" werden bei allen Sparkassen generell nicht betrachtet
# @{TypeName = "GPO"; TagRegExp = "GDT-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 0 },
# @{TypeName = "GPO"; TagRegExp = "GGD-SIA"; OU = "Sicherheitseinstellungen"; Order = 1 },
# #####################################################################################################
@{TypeName = "GPO"; TagRegExp = "GGT-IE-Support-Tools"; OU = "Sicherheitseinstellungen"; Order = 10 },
@{TypeName = "GPO"; TagRegExp = "GGT-TS"; OU = "Sicherheitseinstellungen"; Order = 20 },
@{TypeName = "GPO"; TagRegExp = "GGW-DL2"; OU = "Sicherheitseinstellungen"; Order = 30 },
@ -2621,10 +2333,7 @@ $Config = @{
@{TypeName = "GPO"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 100 },
@{TypeName = "GPO"; TagRegExp = "GGX-Smartcard"; OU = "Sicherheitseinstellungen"; Order = 110 },
@{TypeName = "GPO"; TagRegExp = "GGX-TCHelpdesk"; OU = "Sicherheitseinstellungen"; Order = 120 },
# Spez. aber aktuell nicht vorhanden
#{@Type = "GPOInd"; TagRegExp = "GGX-Ind-"; OU = "Sicherheitseinstellungen"; Order = 5},
@{TypeName = "Proxy"; TagRegExp = "GGX-PROXY"; OU = "Sicherheitseinstellungen"; Order = 0 },
# nicht gemaess FI-Doku
@{TypeName = "Proxy"; TagRegExp = "GGX-Proxy"; OU = "Sicherheitseinstellungen"; Order = 1 }
)
FileMappings =
@ -2635,7 +2344,6 @@ $Config = @{
@{SourceFileName = ""; TargetFileName = ""}
)
}
#endregion OLD ################################################################################################
}
}

5
Process-ADObjects-Test.ps1 Executable file → Normal file
View file

@ -1,5 +1,3 @@
#Add-Type -Path "Syncfusion.XlsIO.Portable.dll"
#Add-Type -Path "Syncfusion.Compression.Portable.dll"
function TestExcel {
$inputFilePath = "/Users/edmond/Develop/PowerShell/BIT-BV/Data/Z999/In/bitBVTest.xlsx"
@ -16,10 +14,11 @@ function TestExcel {
$colCount = $workSheet.UsedRange.LastColumn
for ($i = 2; $i -le $rowCount; $i++) {
outLogVerbose 'for ($i = 2; $i -le $rowCount; $i++) iteration:' $i
for ($j = 1; $j -le $colCount; $j++) {
outLogVerbose 'for ($j = 1; $j -le $colCount; $j++) iteration:' $j
$value = $workSheet.Range[$i, $j].DisplayText
$newValue = $value -replace "`n", " --- " -replace "`r", " --- " -replace ";", "--" -replace "`"", "'"
# $newValue = convertUTF8ToASCII $newValue
$workSheet.Range[$i, $j].Text = $newValue
}
}

128
Process-ADObjects-Utility.ps1 Executable file → Normal file
View file

@ -20,25 +20,106 @@ function getTimeStamp
return $now.ToString($formatString)
}
function openLog
{
param([string] $Path = $LogFileName)
closeLog
$parentDir = Split-Path -Parent $Path
if ($parentDir -and -not (Test-Path $parentDir))
{
New-Item -ItemType Directory -Path $parentDir -Force | Out-Null
}
$Global:LogWriter = [System.IO.StreamWriter]::new(
$Path, $true, [System.Text.UTF8Encoding]::new($false))
$Global:LogWriter.AutoFlush = $true
$Global:LogWriterPath = $Path
}
function closeLog
{
if ($Global:LogWriter)
{
$Global:LogWriter.Flush()
$Global:LogWriter.Dispose()
$Global:LogWriter = $null
$Global:LogWriterPath = $null
}
}
function outLogVerbose
{
if (-not $Config.Verbose)
{
return
}
outLog @args -ToScreen $false
}
function outLog
{
[CmdletBinding(PositionalBinding = $false)]
param
(
[Parameter(ValueFromRemainingArguments = $true)]
[object[]] $Messages,
[bool] $ToScreen = $true
)
$timestamp = Get-Date
$outString = $timestamp.ToString("HH:mm:ss.mmm") + ": "
for ($i = 0; $i -lt $args.count; $i++)
$outString = $timestamp.ToString("HH:mm:ss.fff") + ": "
if ($Messages)
{
$j = $i + 1
$outString += $args[$i]
$outString += ($Messages -join [Environment]::NewLine)
}
if ($previuosTime)
{
$outString += ($end - $start)
$outString += [Environment]::NewLine + ($end - $start)
}
$outString | Tee-Object -FilePath $LogFileName -Append | Write-Host
if (-not $Global:LogWriter -or $Global:LogWriterPath -ne $LogFileName)
{
openLog $LogFileName
}
$Global:LogWriter.WriteLine($outString)
if ($ToScreen)
{
Write-Host $outString
}
}
function removeDuplicatesFromSortedList
{
param
(
[Parameter(Mandatory = $true)]
[System.Collections.Generic.List[string]] $List,
[Parameter(Mandatory = $false)]
[string] $ListName = "list"
)
if ($List.Count -lt 2)
{
return
}
$unique = [System.Collections.Generic.List[string]]::new($List.Count)
$previous = $null
foreach ($entry in $List)
{
if ($entry -cne $previous)
{
$unique.Add($entry)
$previous = $entry
}
}
$removedCount = $List.Count - $unique.Count
if ($removedCount -gt 0)
{
$List.Clear()
$List.AddRange($unique)
}
outLog ($ListName + ": removed " + $removedCount + " duplicate lines, " + $List.Count + " remaining")
}
function outScreen
{
$timestamp = Get-Date
$outString = $timestamp.ToString("HH:mm:ss.mmm") + ": "
$outString = $timestamp.ToString("HH:mm:ss.fff") + ": "
for ($i = 0; $i -lt $args.count; $i++)
{
$j = $i + 1
@ -57,28 +138,32 @@ function checkInput
$spk = $spk.ToUpperInvariant()
if ([string]::IsNullOrEmpty($spk))
{
outLogVerbose 'if ([string]::IsNullOrEmpty($spk)) -> true'
if (isProbablyDevelopmentUser)
{
Write-Host "no given Institute (parameter '-sparkasse'), using default" $Config.DefaultInstitute
outLogVerbose 'if (isProbablyDevelopmentUser) -> true'
$spk = $Config.DefaultInstitute.ToUpperInvariant()
}
else
{
outLogVerbose 'else -> true (if/elseif (isProbablyDevelopmentUser) -> false)'
while ($true)
{
outLogVerbose 'while ($true) -> true'
$spk = $(Read-Host "please enter Institute Parameter (parameter '-sparkasse'), 'Ctrl-C for exit'" ).ToUpperInvariant()
if ([string]::IsNullOrEmpty($spk))
{
outLogVerbose 'if ([string]::IsNullOrEmpty($spk)) -> true'
continue
}
elseif (checkInstitute($spk))
{
outLogVerbose 'elseif (checkInstitute($spk)) -> true'
break
}
else
{
Write-Host "this institute is not in our list of wellknown institutes: "
Write-Host ($Config.SPK | Format-Table | Out-String)
outLogVerbose 'else -> true (if/elseif (checkInstitute($spk)) -> false)'
continue
}
}
@ -86,9 +171,7 @@ function checkInput
}
elseif (-not (checkInstitute($spk)))
{
# Write-Host "edmond"
Write-Host "this institute is not in our list of wellknown institutes: "
Write-Host ($Config.SPK | Format-Table | Out-String)
outLogVerbose 'elseif (-not (checkInstitute($spk))) -> true'
exit
}
return $spk
@ -98,12 +181,12 @@ function checkInputSourceFiles
{
if (-not $InstitutsSourcePath)
{
Write-Host "Source file does not exist: " $InstitutsSourcePath
outLogVerbose 'if (-not $InstitutsSourcePath) -> true'
return $false
}
if (-not $InstitutsSourcePathKURS)
{
Write-Host "Source file does not exist: " $InstitutsSourcePathKURS
outLogVerbose 'if (-not $InstitutsSourcePathKURS) -> true'
return $false
}
return $true
@ -114,36 +197,43 @@ function checkInputDataFiles
$ok = $true
if (-not $ADObjectsFilePath)
{
outLogVerbose 'if (-not $ADObjectsFilePath) -> true'
outLog "no ADObjectsFile found !"
$ok = $false
}
if (-not $ADObjectMembershipsFilePath)
{
outLogVerbose 'if (-not $ADObjectMembershipsFilePath) -> true'
outLog "no ADObjectsFile found !"
$ok = $false
}
if (-not $ADApplicationsInFilePath)
{
outLogVerbose 'if (-not $ADApplicationsInFilePath) -> true'
outLog "no ADApplicationsInFile found !"
$ok = $false
}
if (-not $ADDirectoriesInFilePath)
{
outLogVerbose 'if (-not $ADDirectoriesInFilePath) -> true'
outLog "no ADDirectoriesInFile found !"
$ok = $false
}
if (-not $SecurityInFilePath)
{
outLogVerbose 'if (-not $SecurityInFilePath) -> true'
outLog "no SecurityInFile found !"
$ok = $false
}
if (-not $KURSPositionsInFilePath)
{
outLogVerbose 'if (-not $KURSPositionsInFilePath) -> true'
outLog "no KURSPositionsInFile found !"
$ok = $false
}
if (-not $KURSEmployeesInFilePath)
{
outLogVerbose 'if (-not $KURSEmployeesInFilePath) -> true'
outLog "no KURSEmployeesInFile found !"
$ok = $false
}
@ -151,6 +241,7 @@ function checkInputDataFiles
$ADObjectMembershipsFileTimeStamp = (Get-ChildItem $ADObjectMembershipsFilePath).BaseName.Split("_")[2]
if ($ADObjectsFileTimeStamp -ne $ADObjectMembershipsFileTimeStamp)
{
outLogVerbose 'if ($ADObjectsFileTimeStamp -ne $ADObjectMembershipsFileTimeStamp) -> true'
outLog "TimeStamps of latest input files found are not equal: ADObjectsFileTimeStamp:" $ADObjectsFileTimeStamp "ADObjectMembershipsFileTimeStamp: " $ADObjectMembershipsFileTimeStamp ", stopping process !"
$ok = $false
}
@ -161,6 +252,7 @@ function checkTestMode
{
if ($Config.TestMode -gt 0)
{
outLogVerbose 'if ($Config.TestMode -gt 0) -> true'
outLog "entering TestMode, reading the first" $Config.TestMode "ADObject-entries for every roletype"
return $true
}
@ -173,12 +265,12 @@ function isProbablyDevelopmentUser
$userName = [Environment]::UserName
if ($userName -ieq "edmond")
{
Write-Host "developer" $userName "found"
outLogVerbose 'if ($userName -ieq "edmond") -> true'
return $true
}
elseif ($userName -ieq "burgwink")
{
Write-Host "developer" $userName "found"
outLogVerbose 'elseif ($userName -ieq "burgwink") -> true'
return $true
}
return $false
@ -245,6 +337,7 @@ function moveToInstituteTmpPath
$tmpFilePath = $InstituteRootPathTmp + "/" + $fileName
if ($force)
{
outLogVerbose 'if ($force) -> true'
Remove-Item -Path $tmpFilePath -ErrorAction Ignore
}
Move-Item -Path $filePath -Destination $InstituteRootPathTmp
@ -288,6 +381,7 @@ function writeExceptionInfo
if ($Rethrow)
{
outLogVerbose 'if ($Rethrow) -> true'
throw $ErrorRecord
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

51
Process-ADObjects-Work.ps1 Executable file → Normal file
View file

@ -1,6 +1,3 @@
# --------------------------------------------------------------
# Relevante OU filtern und fuer jede OU eigene Datei generieren
# --------------------------------------------------------------
function prepareADObjectsByType {
Param
(
@ -11,17 +8,17 @@ function prepareADObjectsByType {
$counter = 1
$count = $ADObjects.Count
foreach ($adObject in $ADObjects) {
outLogVerbose 'foreach $adObject in $ADObjects:' $adObject.ObjectName
if (-Not ($adObject.Description)) {
outLogVerbose 'if (-Not ($adObject.Description)) -> true'
$adObject.Description = $Config.EmptyDescription
}
#$adObject.Description = $Config.EmptyDescription
#$activityMessage = "Processing entry " + $counter + " of " + $count + ", type " + $typeTag + " object " + $adObject.ObjectName
#Write-Host $activityMessage
$currentADObject = $null
if ($typeTag -ieq $FI.TypeTagAppConfiguration) {
outLogVerbose 'if ($typeTag -ieq $FI.TypeTagAppConfiguration) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.AppConfiguration.Filter) {
# $userMemberShips = getAllUserMemberships $adObject
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.AppConfiguration.Filter) -> true'
$userMemberShips = @()
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.AppConfiguration.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adObjectFileEntry = $adObject.ObjectName + ";" + $adObject.OU + ";" + $FI.RelevantGroups.AppConfiguration.ShortCut + ";" + $adObject.Description
@ -29,15 +26,15 @@ function prepareADObjectsByType {
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
# $activityMessage = "Processing entry " + $counter + " of " + $count + ", type " + $typeTag + " object " + $adObject.ObjectName
# Write-Host $activityMessage
}
}
elseif ($typeTag -ieq $FI.TypeTagAppAccess) {
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagAppAccess) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.AppAccess.Filter) {
# $userMemberShips = getAllUserMemberships $adObject
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.AppAccess.Filter) -> true'
$userMemberShips = @()
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.AppAccess.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adObjectFileEntry = $adObject.ObjectName + ";" + $adObject.OU + ";" + $FI.RelevantGroups.AppAccess.ShortCut + ";" + $adObject.Description
@ -45,16 +42,15 @@ function prepareADObjectsByType {
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
# $activityMessage = "Processing entry " + $counter + " of " + $count + ", type " + $typeTag + " object " + $adObject.ObjectName
# Write-Host $activityMessage
}
}
elseif ($typeTag -ieq $FI.TypeTagFileSystemAccess) {
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagFileSystemAccess) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.FilesystemAccess.Filter) {
# Teile gehoeren in den Block Anwendungszugriff
# $userMemberShips = getAllUserMemberships $adObject
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.FilesystemAccess.Filter) -> true'
$userMemberShips = @()
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.FilesystemAccess.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adObjectFileEntry = $adObject.ObjectName + ";" + $adObject.OU + ";" + $FI.RelevantGroups.FilesystemAccess.ShortCut + ";" + $adObject.Description
@ -62,15 +58,15 @@ function prepareADObjectsByType {
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
# $activityMessage = "Processing entry " + $counter + " of " + $count + ", type " + $typeTag + " object " + $adObject.ObjectName
# Write-Host $activityMessage
}
}
elseif ($typeTag -ieq $FI.TypeTagOrganisation) {
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagOrganisation) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.Organisation.Filter) {
# $userMemberShips = getAllUserMemberships $adObject
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.Organisation.Filter) -> true'
$userMemberShips = @()
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.Organisation.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adObjectFileEntry = $adObject.ObjectName + ";" + $adObject.OU + ";" + $FI.RelevantGroups.Organisation.ShortCut + ";" + $adObject.Description
@ -78,15 +74,15 @@ function prepareADObjectsByType {
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
# $activityMessage = "Processing entry " + $counter + " of " + $count + ", type " + $typeTag + " object " + $adObject.ObjectName
# Write-Host $activityMessage
}
}
elseif ($typeTag -ieq $FI.TypeTagSecurity) {
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagSecurity) -> true'
if ($adObject.OU -cmatch $FI.RelevantGroups.Security.Filter) {
# $userMemberShips = getAllUserMemberships $adObject
outLogVerbose 'if ($adObject.OU -cmatch $FI.RelevantGroups.Security.Filter) -> true'
$userMemberShips = @()
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.Security.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adObjectFileEntry = $adObject.ObjectName + ";" + $adObject.OU + ";" + $FI.RelevantGroups.Security.ShortCut + ";" + $adObject.Description
@ -94,19 +90,16 @@ function prepareADObjectsByType {
$adGroupObjects += $adObjectEntry
$counter++
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
# $activityMessage = "Processing entry " + $counter + " of " + $count + ", type " + $typeTag + " object " + $adObject.ObjectName
# Write-Host $activityMessage
}
}
elseif ($typeTag -ieq $FI.TypeTagRole) {
#Write-Host "----: " $FI.TypeTagRole " -> " $typeTag " -> " $FI.RelevantGroups.Role.Filter " -> " $adObject.OU
#-contains "find"
outLogVerbose 'elseif ($typeTag -ieq $FI.TypeTagRole) -> true'
#if ($adObject.OU -cmatch $FI.RelevantGroups.Role.Filter) {
if ($adObject.OU -like "*Anwenderrollen*") {
# $userMemberShips = getAllUserMemberships $adObject
outLogVerbose 'if ($adObject.OU -like "*Anwenderrollen*") -> true'
$userMemberShips = @()
$adObjectEntry = @{ObjectName = $adObject.ObjectName; Path = $adObject.OU; ShortCut = $FI.RelevantGroups.Role.ShortCut; Description = $adObject.Description; Users = $userMemberShips}
$adObjectFileEntry = $adObject.ObjectName + ";" + $adObject.OU + ";" + $FI.RelevantGroups.Role.ShortCut + ";" + $adObject.Description
@ -114,18 +107,14 @@ function prepareADObjectsByType {
$adGroupObjects += $adObjectEntry
$counter++
#Write-Host "+---: " $FI.TypeTagRole " -> " $typeTag " -> " $counter
if ($IsTestMode -and ($counter -gt $Config.TestMode) ) {
outLogVerbose 'if ($IsTestMode -and ($counter -gt $Config.TestMode)) -> true'
break
}
#$activityMessage = "Processing entry " + $counter + " of " + $count + ", type " + $typeTag + " object " + $adObject.ObjectName
#Write-Host $activityMessage
}
}
# $percentCompleted = $counter / $count * 100
# Write-Progress -Activity $activityMessage -Status "zzz" -PercentComplete -1
}
return $adGroupObjects
}

View file

@ -203,8 +203,7 @@ if ($Config.Analyze)
}
$importingTime = Get-Date
# Write-Host "finished: importing at" $importingTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm")", used" ($importingTime - $startTime)
outLog "finished: importing at " $importingTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm") ", used " ($importingTime - $startTime)
outLog ("finished: importing at " + $importingTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm") + ", used " + ($importingTime - $startTime))
"Name;Path;ShortCut;Description" | Out-File "$AppAccessTmpFilePath" -Encoding "utf8NoBom"
"Name;Path;ShortCut;Description" | Out-File "$FilesystemAccessTmpFilePath" -Encoding "utf8NoBom"
@ -223,14 +222,13 @@ $ADObjectsSecurity += prepareADObjectsByType $FI.TypeTagSecurity
$ADObjectsRole += prepareADObjectsByType $FI.TypeTagRole
$preparingTime = Get-Date
# Write-Host "finished: preparing at " $preparingTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm")", used" ($preparingTime - $importingTime)
outLog "finished: preparing at " $preparingTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm") ", used " ($preparingTime - $importingTime)
outlog "found " $ADObjectsOrganisation.Count " entries of type " $FI.TypeTagOrganisation
outlog "found " $ADObjectsAppAccess.Count " entries of type " $FI.TypeTagAppAccess
outlog "found " $ADObjectsFilesystemAccess.Count " entries of type " $FI.TypeTagFilesystemAccess
outlog "found " $ADObjectsAppConfiguration.Count " entries of type " $FI.TypeTagAppConfiguration
outlog "found " $ADObjectsSecurity.Count " entries of type " $FI.TypeTagSecurity
outlog "found " $ADObjectsRole.Count " entries of type " $FI.TypeTagRole
outLog ("finished: preparing at " + $preparingTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm") + ", used " + ($preparingTime - $importingTime))
outlog ("found " + $ADObjectsOrganisation.Count + " entries of type " + $FI.TypeTagOrganisation)
outlog ("found " + $ADObjectsAppAccess.Count + " entries of type " + $FI.TypeTagAppAccess)
outlog ("found " + $ADObjectsFilesystemAccess.Count + " entries of type " + $FI.TypeTagFilesystemAccess)
outlog ("found " + $ADObjectsAppConfiguration.Count + " entries of type " + $FI.TypeTagAppConfiguration)
outlog ("found " + $ADObjectsSecurity.Count + " entries of type " + $FI.TypeTagSecurity)
outlog ("found " + $ADObjectsRole.Count + " entries of type " + $FI.TypeTagRole)
$processingTime = Get-Date
@ -272,7 +270,7 @@ if ($Config.WriteKURS)
. $InstitutsSourcePathKURS
WriteKURS
$endTimeWriteKURS = Get-Date
outLog "finished: processing WriteKURS at " $endTimeWriteKURS.ToString("HH:mm:ss.mmm")", used " ($endTimeWriteKURS - $startTimeWriteKURS)
outLog ("finished: processing WriteKURS at " + $endTimeWriteKURS.ToString("HH:mm:ss.mmm") + ", used " + ($endTimeWriteKURS - $startTimeWriteKURS))
}
else
{
@ -285,7 +283,7 @@ if ($Config.TransferDAW)
. $InstitutsSourcePathDAW
TransferDAW
$endTimeTransferDAW = Get-Date
outLog "finished: processing TransferDAW at " $endTimeTransferDAW.ToString("HH:mm:ss.mmm")", used " ($endTimeTransferDAW - $startTimeTransferDAW)
outLog ("finished: processing TransferDAW at " + $endTimeTransferDAW.ToString("HH:mm:ss.mmm") + ", used " + ($endTimeTransferDAW - $startTimeTransferDAW))
}
else
{
@ -297,7 +295,7 @@ if ($Config.PostProcess)
$startTimePostProcess = Get-Date
postProcess
$endTimePostProcess = Get-Date
outLog "finished: processing PostProcess at " $endTimePostProcess.ToString("HH:mm:ss.mmm")", used " ($endTimePostProcess - $startTimePostProcess)
outLog ("finished: processing PostProcess at " + $endTimePostProcess.ToString("HH:mm:ss.mmm") + ", used " + ($endTimePostProcess - $startTimePostProcess))
}
else
{
@ -306,9 +304,9 @@ else
$endTime = Get-Date
outLog "finished: processing at " $endTime.ToString("HH:mm:ss.mmm")", used " ($endTime - $processingTime)
outLog "finished: ========================================================== " $endTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm")
outLog "used: "($endTime - $startTime)
outLog ("finished: processing at " + $endTime.ToString("HH:mm:ss.mmm") + ", used " + ($endTime - $processingTime))
outLog ("finished: ========================================================== " + $endTime.ToString("yyyy.MM.dd-HH:mm:ss.mmm"))
outLog ("used: " + ($endTime - $startTime))
# }
# finally

20
Test-ScriptSyntax.ps1 Normal file
View file

@ -0,0 +1,20 @@
# Test-ScriptSyntax.ps1 - parses all .ps1 files without executing them
param([string] $Path = ".")
Get-ChildItem -Path $Path -Filter *.ps1 | ForEach-Object {
$tokens = $null
$errors = $null
[System.Management.Automation.Language.Parser]::ParseFile(
$_.FullName, [ref]$tokens, [ref]$errors) | Out-Null
if ($errors.Count -gt 0)
{
Write-Output "FAIL: $($_.Name) ($($errors.Count) Fehler)"
$errors | ForEach-Object {
Write-Output (" Zeile {0}: {1}" -f $_.Extent.StartLineNumber, $_.Message)
}
}
else
{
Write-Output "OK: $($_.Name)"
}
}