Powershell Ordner Löschen
Guten Tag,
Ich habe ein Powershellscript geschrieben das aus der Ad die User ausliest und für jeden User jeweils einen Scan Ordnern erstellt
Dies ist mein Scirpt:
Dieses Script Funktioniert auch ohne Probleme.
Ich möchte nun aber eine neue Bedingung undzwar soll der Ordner Gelöscht werden sobald der User in der Ad Gelöscht wird.
Kann mir Jemand helfen wie ich dies am besten Abfrage?
Vielen Dank Schonmal
Ich habe ein Powershellscript geschrieben das aus der Ad die User ausliest und für jeden User jeweils einen Scan Ordnern erstellt
Dies ist mein Scirpt:
Import-Module ActiveDirectory
$Userliste = "C:\Scripts\Ordner_anlage\AD_Export_Ordner.txt"
Get-ADUser -Filter * -SearchBase "OU=**,OU=**,DC=**,DC=**"| Select -ExpandProperty SamAccountName | Out-File $Userliste
Get-ADUser -Filter * -SearchBase "OU=**,OU=**,DC=**,DC=**"| Select -ExpandProperty SamAccountName | Out-File $Userliste -Append
$Users = Get-Content $Userliste
ForEach ($user in $users)
{
if (Test-Path "\\Pfad\Scan\$user"){
# Hier sollte irgendwann gerpüft werden ob der User noch existiert
}
else {
$newPath = Join-Path "\\Pfad\Scan" -childpath $user
New-Item $newPath -type directory
$acl = Get-Acl $newpath
$acl.SetAccessRuleProtection($True, $False)
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\$user","AppendData,CreateDirectories,CreateFiles,DeleteSubdirectoriesAndFiles,ExecuteFile,ListDirectory,Modify,Read,ReadAndExecute,ReadAttributes,ReadData,ReadExtendedAttributes,ReadPermissions,Synchronize,Traverse,Write,WriteAttributes,WriteData,WriteExtendedAttributes","ContainerInherit, ObjectInherit","None","Allow")
$acl.SetAccessRule($accessRule)
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("NT AUTHORITY\SYSTEM","FullControl","ContainerInherit, ObjectInherit","None","Allow")
$acl.SetAccessRule($accessRule)
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\Administrator","FullControl","ContainerInherit, ObjectInherit","None","Allow")
$acl.SetAccessRule($accessRule)
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\scan","AppendData,CreateDirectories,CreateFiles,DeleteSubdirectoriesAndFiles,ExecuteFile,ListDirectory,Modify,Read,ReadAndExecute,ReadAttributes,ReadData,ReadExtendedAttributes,ReadPermissions,Synchronize,Traverse,Write,WriteAttributes,WriteData,WriteExtendedAttributes","ContainerInherit, ObjectInherit","None","Allow")
$acl.SetAccessRule($accessRule)
$acl | Set-Acl $newpath
}
}
Dieses Script Funktioniert auch ohne Probleme.
Ich möchte nun aber eine neue Bedingung undzwar soll der Ordner Gelöscht werden sobald der User in der Ad Gelöscht wird.
Kann mir Jemand helfen wie ich dies am besten Abfrage?
Vielen Dank Schonmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 379886
Url: https://administrator.de/contentid/379886
Ausgedruckt am: 25.11.2024 um 14:11 Uhr
2 Kommentare
Neuester Kommentar
Hi,
zuerst: Benutze bitte Code-Tags! So kann man das ja kaum lesen ....
E.
zuerst: Benutze bitte Code-Tags! So kann man das ja kaum lesen ....
$newPath = Join-Path "\\Pfad\Scan" -childpath $user
Dieser Logik folgend könntest Du in einem zweiten Durchlauf testen, welche Ordner existieren und ob es den assoziierten Benutzer noch gibt. Die Assoziaition kannst Du entweder über den Ordnernamen herstellen oder über die ACL. Da Du beim Erstellen "Domain\$user" direkt berechtigst, müsstest Du nach dem Löschen des Benutzers in der ACL eine ACE haben, für welche Du die SID nicht in den Benutzernamen auflösen kannst.E.
Auch das gabs schon mal hier:
AD User gelöscht Basisordner bleibt bestehen
Grüße Uwe
AD User gelöscht Basisordner bleibt bestehen
# Hier sollte irgendwann gerpüft werden ob der User noch existiert
Zu dem Zeitpunkt bringt dir das überhaupt nichts, denn du hast nur alle existierenden User in der Variablen $users die du ja mit Get-ADUser eingelesen hast. Du musst es also separat verarbeiten, nicht in dieser Schleife. Wie das geht steht im o. Link. Btw. wieso erst das ganze in eine Textdatei und dann erneut davon geladen?? => Überflüssig.Grüße Uwe