Verwaiste SIDs von Verzeichnissen und Dateien entfernen – Powershell

Wenn man Berechtigungen auf Ordner setzt und die Gruppe bzw. der Benutzer im Active Directory gelöscht wurde, bleiben die SIDs auf den Verzeichnissen und Dateien bestehen. Sie können dann allerdings nicht mehr aufgelöst werden. Somit steht dort anstelle des Usernamens nur die alte SID.
Diese kann man via Skript automatisiert finden und entfernen lassen.
Über
Import-Module .Dateiname_des_Skripts.ps1
kann das Skript geladen werden und anschließen unter Angabe des Pfades ausgeführt werden.
Remove-orphanedSID -path "C:..."
Über ein Aktivieren des Attributs “-whatif” kann erst einmal ein Testlauf erfolgen, der die SIDs noch nicht entfernt.

Function Remove-orphanedSID
{
[CmdletBinding()]
	Param
	(
		#Define parameters
		[Parameter(Mandatory=$true,Position=1)]
		[String]$path
	)
write-host "Sammle alle Ordner/Dateien"
$Apath = gci $path -recurse
write-host "Pruefe, das kann einige zeit in Anspruch nehmen"
foreach ($file in $Apath)
{
	$PSPath = $file.fullname
	try
		{
			$acl = Get-Acl -Path $PSPath
			foreach($acc in $acl.access )
			{
				$value = $acc.IdentityReference.Value
				if($value -match "S-1-5-*")
				{
					$acl.RemoveAccessRule($acc) | out-null
					Write-Host "Entferne SID: $value  von  $PSPath "
					Set-Acl -Path $PSPath -AclObject $acl #-whatif
				}
			}
		}
		catch
		{
			write-host $error
		}
}
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s