Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $prog = 'C:\Program Files\Softerra\LDAP Browser 4\laimex.exe'
- $cred = 'C:\Scripts\XXXX.cred'
- $key = 'C:\Scripts\XXXX.key'
- $server = 'ldap.yourserver.to:636'
- $rootDN = 'DC=XXXX'
- $path = '\\nas1.mydomain.to\XXXX'
- $file = 'XXXX.csv'
- $date = Get-Date -f 'yyyy-MM-dd_HH-mm'
- $log = 'XXXX_' + $date + '.log'
- $exclude = @(
- 'OU=YYYY,DC=XXXX',
- 'OU=Serviceuser,DC=XXXX'
- )
- # get credentials from file
- $credentials = Import-Csv $cred
- $user = $credentials.User
- $AESKey = Get-Content $key
- $secPW = $credentials.secPW | ConvertTo-SecureString -Key $AESKey
- $pwd = [System.Net.NetworkCredential]::new("", $secPW).Password
- # export OUs for loop with laimex
- Start-Transcript $path\Log\$log
- & $prog /s $server /mech SIMPLE /user $user /pwd $pwd /r $rootDN /p ONE /t '(objectClass=organizationalUnit)' /d CSV /f $path\$file
- Stop-Transcript
- # check log
- $logcheck = Get-Content $path\Log\$log
- if ($logcheck -contains "Export abgeschlossen.")
- {
- # import OUs (skip first 3 lines)
- $OUs = (Get-Content $path\$file | select -skip 3 | ConvertFrom-Csv).DN
- # loop all not excluded
- $OUs | where { $_ -notin $exclude } | foreach {
- # get OU name
- $name = ($_ -split ",")[0].Replace("OU=","")
- $logsub = ($log).Replace("XXXX_","XXXX_" + $name + "_")
- # export user and groups in loop with laimex
- Start-Transcript $path\Log\$logsub
- Write-Host Start
- & $prog /s $server /mech SIMPLE /user $user /pwd $pwd /r $_ /p SUB /page 100 /t '(|(objectClass=user)(objectClass=group))' /d CSV /f ($path + "\" + ($file).Replace(".csv","_" + $name + ".csv"))
- Write-Host End
- Start-Sleep -Seconds 2
- Stop-Transcript
- # remove LF if not CRLF
- (Get-Content -Raw ($path + "\" + ($file).Replace(".csv","_" + $name + ".csv")) -Encoding UTF8) -replace "(?<!\r)\n"," " | Set-Content ($path + "\" + ($file).Replace(".csv","_" + $name + "_tmp.csv")) -Encoding UTF8 -Force
- # import CSV
- $csvData = Get-Content ($path + "\" + ($file).Replace(".csv","_" + $name + "_tmp.csv")) -Encoding UTF8 | Select-Object -Skip 3 | ConvertFrom-Csv
- # delete tmp file
- Remove-Item ($path + "\" + ($file).Replace(".csv","_" + $name + "_tmp.csv")) -Force
- # export CSV (for UTF-8-BOM)
- if (!(Test-Path ($path + "\UTF-8-BOM\") -PathType Container)) {New-Item -ItemType Directory -Force -Path ($path + "\UTF-8-BOM\")}
- $csvData | Export-Csv ($path + "\UTF-8-BOM\" + ($file).Replace(".csv","_" + $name + "_BOM.csv")) -Encoding UTF8 -NoTypeInformation -Force
- # check logsub
- $logsubcheck = Get-Content $path\Log\$logsub
- if ($logsubcheck -notcontains "Export abgeschlossen.")
- {
- Send-MailMessage -Encoding UTF8 -To "Postkorb IT Monitoring <monitoring@mydomain.to>" -From "XXXX <server@mydomain.to>" -SmtpServer smtp.mydomain.to -Priority High `
- -Subject "Export $name nicht erfolgreich" `
- -Body "Es wurden vom Skript keine weiteren Maßnahmen getroffen.`nSkript wird ausgeführt auf: $($env:computername)`nPfad: $($PSScriptRoot+"\"+$MyInvocation.MyCommand.Name)"
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement