Added new scripts
This commit is contained in:
parent
8248d694aa
commit
ac7b462475
51
redirected-profiles-folder-permissions.ps1
Normal file
51
redirected-profiles-folder-permissions.ps1
Normal file
@ -0,0 +1,51 @@
|
||||
#zebra - 10/20/23
|
||||
#assigns NTFS permissions to the child folders of a given folder defined in $rootFolder according to the folder name.
|
||||
#this script can be used to fix NTFS permissions for redirected profiles.
|
||||
#e.g. if a folder is named jdoe, it will give NTFS permissions to contoso\jdoe
|
||||
#can be configured to specify a domain or workgroup.
|
||||
|
||||
# Define the root folder where you want to perform the permission changes
|
||||
$rootFolder = "C:\temp\Permissions Test"
|
||||
|
||||
# Get a list of subfolders in the root folder
|
||||
$subfolders = Get-ChildItem -Path $rootFolder -Directory
|
||||
|
||||
# Iterate through each subfolder
|
||||
foreach ($subfolder in $subfolders) {
|
||||
$folderName = $subfolder.Name
|
||||
$accountName = "IZEBRA\$folderName" # For domain accounts, add the netBIOS domain name before $folderName.
|
||||
# For example, CONTOSO\$foldername will make the script add permissions for CONTOSO\bob for folder "bob".
|
||||
|
||||
# For local accounts, remove the domain name and the trailing slash so that $accountName = $folderName.
|
||||
|
||||
# Remove existing NTFS permissions and get a list of removed permissions
|
||||
$acl = Get-Acl $subfolder.FullName
|
||||
$removedPermissions = @()
|
||||
|
||||
$acl.SetAccessRuleProtection($true, $true) # Disable inheritance and remove inherited permissions
|
||||
|
||||
$acl.Access | ForEach-Object {
|
||||
if ($_.IdentityReference.Value -ne "BUILTIN\Administrators") { # Exclude Administrators group if needed
|
||||
$removedPermissions += $_
|
||||
$acl.RemoveAccessRule($_)
|
||||
}
|
||||
}
|
||||
|
||||
# Apply new NTFS permissions, and skip if it fails
|
||||
try {
|
||||
$permission = New-Object System.Security.AccessControl.FileSystemAccessRule($accountName, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
|
||||
$acl.AddAccessRule($permission)
|
||||
Set-Acl -Path $subfolder.FullName -AclObject $acl
|
||||
Write-Host "Permissions updated for folder $folderName. $accountName now has Full Control."
|
||||
} catch {
|
||||
Write-Host "Failed to update permissions for $folderName. Skipping the folder."
|
||||
}
|
||||
|
||||
# Print the removed permissions
|
||||
if ($removedPermissions.Count -gt 0) {
|
||||
Write-Host "Old permissions for $folderName go as follows: "
|
||||
$removedPermissions | ForEach-Object {
|
||||
Write-Host ("{0} - {1}" -f $_.IdentityReference, $_.FileSystemRights)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user