Page tree
Skip to end of metadata
Go to start of metadata

Falls es aus irgendeinem Grund dazu gekommen ist, dass sich Dubetten gebildet haben, kann folgendes Skript verwendet werden, um die Dubletten zu entfernen:

Datensicherung

Bitte eine Datensicherung zuvor erstellen!

Nur Symptombekämpfung

Bitte beachtet, dass es sich hier nur um eine Symptombekämpfung handelt. Das ursprüngliche Problem sollte zuvor analysiert und behoben worden sein.

Dies kann z.b. ein parallel laufendes Inventory sein.

RemoveADDublicates
select-client "Produktion"
$import = New-DocumentContainer
$doctypes = Get-DocumentTypes
$ids = find-documents -Container $import -DocumentType $doctypes["Humanidentity"] -all
$adaccounts = find-documents -Container $import -DocumentType $doctypes["ADACCOUNT"] -all
$hashIDAD =@{}
$hashAD =@{}
$IDadaccounts = @()
foreach ($id in $ids){
	foreach ($Account in $id.ADAccount){
		$IDadaccounts += $Account
		$hashIDAD[$account.UID] = $Account
	}
}
Foreach ($account in $adaccounts){
	$hashAD[$Account.UID] = $Account
}
Foreach ($account in $adaccounts){
	$chkAccounts = $hashAD.Values |Where-Object{$_.SID -eq $Account.SID}
	#Mehrfach vorhanden?
	if ($chkAccounts.Count -ge 2){
		#Prüfung welcher Account ID zugeordnet:
		$deleted = 0
		foreach ($chkAccount in $chkAccounts){
			if ($hashIDAD[$chkAccount.UID] -eq $null -and $chkAccounts.count -1 -gt $deleted){
				$deleted++
				$rem = Remove-Document -Container $import -Instance $chkAccount
			}
		}
		#Prüfung mehrfache zuweisung zu ID
		if ($chkAccounts.count -1 -gt $deleted){
			foreach ($chkAccount in $chkAccounts){
				if ($chkAccounts.count -1 -gt $deleted){
					$deleted++
					$rem = Remove-Document -Container $import -Instance $chkAccount 
				} 
			}
		}
	}
}
Save-DocumentContainer -Container $import 


  • No labels