initial commit
This commit is contained in:
commit
87f047f909
54 changed files with 1113120 additions and 0 deletions
293
Process-ADObjects-Utility.ps1
Executable file
293
Process-ADObjects-Utility.ps1
Executable file
|
|
@ -0,0 +1,293 @@
|
|||
|
||||
function convertUTF8ToASCII
|
||||
{
|
||||
param ([Parameter(Mandatory = $true, Position = 0)] [String]$utf8Text)
|
||||
$utf8TextBytes = [system.text.encoding]::UTF8.GetBytes($utf8Text)
|
||||
$asciiText = [system.text.encoding]::convert([text.encoding]::UTF8, [text.encoding]::ASCII, $utf8TextBytes)
|
||||
-join [system.text.encoding]::ASCII.GetChars($asciiText)
|
||||
}
|
||||
|
||||
function checkInstitute
|
||||
{
|
||||
param([parameter(position = 0)][string]$instituteSign)
|
||||
return $Config.SPK.ContainsKey($instituteSign)
|
||||
}
|
||||
|
||||
function getTimeStamp
|
||||
{
|
||||
param ([Parameter(Mandatory = $false, Position = 0)][string]$formatString = "yyyyMMddHHmmss")
|
||||
$now = Get-Date
|
||||
return $now.ToString($formatString)
|
||||
}
|
||||
|
||||
function outLog
|
||||
{
|
||||
$timestamp = Get-Date
|
||||
$outString = $timestamp.ToString("HH:mm:ss.mmm") + ": "
|
||||
for ($i = 0; $i -lt $args.count; $i++)
|
||||
{
|
||||
$j = $i + 1
|
||||
$outString += $args[$i]
|
||||
}
|
||||
if ($previuosTime)
|
||||
{
|
||||
$outString += ($end - $start)
|
||||
}
|
||||
$outString | Tee-Object -FilePath $LogFileName -Append | Write-Host
|
||||
}
|
||||
function outScreen
|
||||
{
|
||||
$timestamp = Get-Date
|
||||
$outString = $timestamp.ToString("HH:mm:ss.mmm") + ": "
|
||||
for ($i = 0; $i -lt $args.count; $i++)
|
||||
{
|
||||
$j = $i + 1
|
||||
$outString += $args[$i]
|
||||
}
|
||||
if ($previuosTime)
|
||||
{
|
||||
$outString += ($end - $start)
|
||||
}
|
||||
Write-Host $outString
|
||||
}
|
||||
|
||||
function checkInput
|
||||
{
|
||||
param([parameter(position = 0)][string]$spk)
|
||||
$spk = $spk.ToUpperInvariant()
|
||||
if ([string]::IsNullOrEmpty($spk))
|
||||
{
|
||||
if (isProbablyDevelopmentUser)
|
||||
{
|
||||
Write-Host "no given Institute (parameter '-sparkasse'), using default" $Config.DefaultInstitute
|
||||
$spk = $Config.DefaultInstitute.ToUpperInvariant()
|
||||
}
|
||||
else
|
||||
{
|
||||
while ($true)
|
||||
{
|
||||
$spk = $(Read-Host "please enter Institute Parameter (parameter '-sparkasse'), 'Ctrl-C for exit'" ).ToUpperInvariant()
|
||||
if ([string]::IsNullOrEmpty($spk))
|
||||
{
|
||||
continue
|
||||
}
|
||||
elseif (checkInstitute($spk))
|
||||
{
|
||||
break
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "this institute is not in our list of wellknown institutes: "
|
||||
Write-Host ($Config.SPK | Format-Table | Out-String)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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)
|
||||
exit
|
||||
}
|
||||
return $spk
|
||||
}
|
||||
|
||||
function checkInputSourceFiles
|
||||
{
|
||||
if (-not $InstitutsSourcePath)
|
||||
{
|
||||
Write-Host "Source file does not exist: " $InstitutsSourcePath
|
||||
return $false
|
||||
}
|
||||
if (-not $InstitutsSourcePathKURS)
|
||||
{
|
||||
Write-Host "Source file does not exist: " $InstitutsSourcePathKURS
|
||||
return $false
|
||||
}
|
||||
return $true
|
||||
}
|
||||
|
||||
function checkInputDataFiles
|
||||
{
|
||||
$ok = $true
|
||||
if (-not $ADObjectsFilePath)
|
||||
{
|
||||
outLog "no ADObjectsFile found !"
|
||||
$ok = $false
|
||||
}
|
||||
if (-not $ADObjectMembershipsFilePath)
|
||||
{
|
||||
outLog "no ADObjectsFile found !"
|
||||
$ok = $false
|
||||
}
|
||||
if (-not $ADApplicationsInFilePath)
|
||||
{
|
||||
outLog "no ADApplicationsInFile found !"
|
||||
$ok = $false
|
||||
}
|
||||
if (-not $ADDirectoriesInFilePath)
|
||||
{
|
||||
outLog "no ADDirectoriesInFile found !"
|
||||
$ok = $false
|
||||
}
|
||||
if (-not $SecurityInFilePath)
|
||||
{
|
||||
outLog "no SecurityInFile found !"
|
||||
$ok = $false
|
||||
}
|
||||
if (-not $KURSPositionsInFilePath)
|
||||
{
|
||||
outLog "no KURSPositionsInFile found !"
|
||||
$ok = $false
|
||||
}
|
||||
if (-not $KURSEmployeesInFilePath)
|
||||
{
|
||||
outLog "no KURSEmployeesInFile found !"
|
||||
$ok = $false
|
||||
}
|
||||
$ADObjectsFileTimeStamp = (Get-ChildItem $ADObjectsFilePath).BaseName.Split("_")[2]
|
||||
$ADObjectMembershipsFileTimeStamp = (Get-ChildItem $ADObjectMembershipsFilePath).BaseName.Split("_")[2]
|
||||
if ($ADObjectsFileTimeStamp -ne $ADObjectMembershipsFileTimeStamp)
|
||||
{
|
||||
outLog "TimeStamps of latest input files found are not equal: ADObjectsFileTimeStamp:" $ADObjectsFileTimeStamp "ADObjectMembershipsFileTimeStamp: " $ADObjectMembershipsFileTimeStamp ", stopping process !"
|
||||
$ok = $false
|
||||
}
|
||||
return $ok
|
||||
}
|
||||
|
||||
function checkTestMode
|
||||
{
|
||||
if ($Config.TestMode -gt 0)
|
||||
{
|
||||
outLog "entering TestMode, reading the first" $Config.TestMode "ADObject-entries for every roletype"
|
||||
return $true
|
||||
}
|
||||
outLog "entering ProductionMode, reading all entries"
|
||||
return $false
|
||||
}
|
||||
|
||||
function isProbablyDevelopmentUser
|
||||
{
|
||||
$userName = [Environment]::UserName
|
||||
if ($userName -ieq "edmond")
|
||||
{
|
||||
Write-Host "developer" $userName "found"
|
||||
return $true
|
||||
}
|
||||
elseif ($userName -ieq "burgwink")
|
||||
{
|
||||
Write-Host "developer" $userName "found"
|
||||
return $true
|
||||
}
|
||||
return $false
|
||||
}
|
||||
|
||||
function dumpVar
|
||||
{
|
||||
param([object]$member)
|
||||
Write-Host ($member | Format-Table -Force | Out-String)
|
||||
}
|
||||
|
||||
function dumpConfig
|
||||
{
|
||||
dumpVar($Config)
|
||||
}
|
||||
|
||||
function stringReverse
|
||||
{
|
||||
param ([Parameter(Mandatory = $true, Position = 0)][string]$text)
|
||||
$textArray = $Text.ToCharArray()
|
||||
[Array]::Reverse($textArray)
|
||||
-join $textArray
|
||||
}
|
||||
|
||||
function stringArrayReverseToCommaSeparatedString
|
||||
{
|
||||
param ([Parameter(Mandatory = $true, Position = 0)] [String[]]$stringArray)
|
||||
[Array]::Reverse($stringArray)
|
||||
$outString = $stringArray -join ',' | Out-String
|
||||
return $outString
|
||||
}
|
||||
function stringArrayReverseToCommaSeparatedStringReturn
|
||||
{
|
||||
param ([Parameter(Mandatory = $true, Position = 0)] [String[]]$stringArray)
|
||||
[Array]::Reverse($stringArray)
|
||||
$outString = $stringArray -join ',' | Out-String
|
||||
return $outString
|
||||
}
|
||||
function stringArrayReverseToCommaSeparatedStringWriteOutput
|
||||
{
|
||||
param ([Parameter(Mandatory = $true, Position = 0)] [String[]]$stringArray)
|
||||
[Array]::Reverse($stringArray)
|
||||
$outString = $stringArray -join ',' | Out-String
|
||||
Write-Output $outString
|
||||
}
|
||||
|
||||
function stringArrayReverseToCommaSeparatedStringEcho
|
||||
{
|
||||
param ([Parameter(Mandatory = $true, Position = 0)] [String[]]$stringArray)
|
||||
[Array]::Reverse($stringArray)
|
||||
$stringArray -join ','
|
||||
}
|
||||
|
||||
function moveToInstituteTmpPath
|
||||
{
|
||||
param
|
||||
(
|
||||
[Parameter(Mandatory = $true, Position = 0)]
|
||||
[string]$filePath,
|
||||
[Parameter(Mandatory = $false, Position = 1)]
|
||||
[bool]$force = $false
|
||||
)
|
||||
$fileName = [System.IO.Path]::GetFileName($filePath)
|
||||
$tmpFilePath = $InstituteRootPathTmp + "/" + $fileName
|
||||
if ($force)
|
||||
{
|
||||
Remove-Item -Path $tmpFilePath -ErrorAction Ignore
|
||||
}
|
||||
Move-Item -Path $filePath -Destination $InstituteRootPathTmp
|
||||
return $tmpFilePath
|
||||
}
|
||||
|
||||
function convertUTF8ToASCII
|
||||
{
|
||||
param ([Parameter(Mandatory = $true, Position = 0)][string]$text)
|
||||
$utf8Text = [system.text.encoding]::UTF8.GetBytes($text)
|
||||
$asciiText = [system.text.encoding]::convert([text.encoding]::UTF8, [text.encoding]::ASCII, $utf8Text)
|
||||
-join [system.text.encoding]::ASCII.GetChars($asciiText)
|
||||
}
|
||||
|
||||
|
||||
function writeExceptionInfoReduced
|
||||
{
|
||||
param([Parameter(Mandatory)][System.Management.Automation.ErrorRecord]$ErrorRecord)
|
||||
Write-Host "=== EXCEPTION ===" -ForegroundColor Red
|
||||
Write-Host "Message : $($ErrorRecord.Exception.Message)" -ForegroundColor Red
|
||||
Write-Host "Type : $($ErrorRecord.Exception.GetType().FullName)" -ForegroundColor Yellow
|
||||
Write-Host $ErrorRecord.InvocationInfo.PositionMessage
|
||||
Write-Host "ScriptStackTrace:" -ForegroundColor Yellow
|
||||
Write-Host $ErrorRecord.ScriptStackTrace
|
||||
}
|
||||
|
||||
function writeExceptionInfo
|
||||
{
|
||||
param(
|
||||
[Parameter(Mandatory = $true, Position = 0)]
|
||||
[System.Management.Automation.ErrorRecord]$ErrorRecord,
|
||||
[switch]$Rethrow
|
||||
)
|
||||
|
||||
Write-Host "=== EXCEPTION ===" -ForegroundColor Red
|
||||
Write-Host "Message : $($ErrorRecord.Exception.Message)" -ForegroundColor Red
|
||||
Write-Host "Type : $($ErrorRecord.Exception.GetType().FullName)" -ForegroundColor Yellow
|
||||
Write-Host $ErrorRecord.InvocationInfo.PositionMessage
|
||||
Write-Host "ScriptStackTrace:" -ForegroundColor Yellow
|
||||
Write-Host $ErrorRecord.ScriptStackTrace
|
||||
|
||||
if ($Rethrow)
|
||||
{
|
||||
throw $ErrorRecord
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue