Logo faq-o-matic.net
Logo faq-o-matic.net

NTFS-Berechtigung anhand von Ordnernamen setzen

von veröffentlicht am15. Juni 2015, 06:18 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Dateisystem, PowerShell   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Dieser Artikel erschien zuerst auf Daniels Blog.

Aufgrund einer Änderung eines Speicherortes musste eine komplette Struktur von Benutzerordnern neugestaltet werden. Dazu musste die Struktur an einen anderen Speicherort verschoben werden und auch die personenbezogenen Berechtigungen komplett angepasst werden mussten.

Um diese Anforderung umzusetzen habe ich folgendes Skript verwendet:

$Startordner= "X:"
$Domäne = "domain.local"
 
 
foreach($personalfolder in (get-childitem $Startordner| where {$_.psiscontainer -eq $true}))
{
 
$acl= Get-acl ($Startordner + $personalfolder)
 
$user = $Domäne + "\" + $personalfolder
$permission = $user,"FullControl","ContainerInherit, ObjectInherit","None","Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
 
$acl | Set-Acl ($Startordner + $personalfolder)
 
}

Dabei werden die Ordnernamen ermittelt und diese verwandt, um ihn mit dem Domänennamen zu verknüpfen. Dieser Datenstamm wird dann auf dem Ordner angewendet, um “Full Access” inkl. der Vererbung für den Hauptordner und allen unterliegenden Objekten.

Ergänzung: NTFS-Berechtigung anhand von Ordnernamen mit Namensanhang setzen

Nach der ersten Fassung dieses Artikels bekam ich eine Anfrage, dass es Applikationen gibt, welche einen Anhang an den Namen anhängen. Dieses kann zum Beispiel ein Domänenname wie “.domain” sein oder eine Versionierung wie “.V2″.

Um dieses zu lösen, muss das Skript nur minimal angepasst werden:

$Startordner= "Y:"
$Domäne = "domain.local"
 
foreach($personalfolder in (get−childitem $Startordner| where {$_.psiscontainer −eq $true}))
 
{
 
$acl= Get−acl ($Startordner + $personalfolder)
 
$userlogin = $personalfolder.Name.split('.')[0]
$user = $Domäne + "\" + $userlogin
$permission = $user,"FullControl","ContainerInherit, ObjectInherit","None","Allow"
$accessRule = New−Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
 
$acl | Set−Acl ($Startordner + $personalfolder)
 
}

Nun wird durch die Splittung und Selektierung des ersten Teils der Ordnerbezeichnung dieser als Vorlage für den Ordnernamen verwandt.

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!