Posted On March 29, 2019

Set File Permissions Recursively – Running on File Server

kimconnect 0 comments
blog.KimConnect.com >> Codes >> Set File Permissions Recursively – Running on File Server

What problems does this solve?

This error: “Failed to enumerate objects in the container. Access is denied.”

# Set variables here
$directories='\\fileserver\users$\username$'
$identity='domain\username'
$access="Full"
$errorLogPath=((Get-Item -Path '.\').FullName+"\filePermissionsScriptingErrors.txt")

function setNtfsPermissions{
    param(
        $directories,
        $identity,
        $access,
        $errorLogPath    
    )
    $erroractionpreference='stop'

    # Include the required NTFSSecurity library from the PowerShell Gallery
    if (!(Get-InstalledModule -Name NTFSSecurity -ea Ignore)) {
      try{
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
        Install-Module -Name NTFSSecurity -Force
      }catch{
        write-host $_
        return $false
      }
    }

    # Setting permissions
    $count=$directories.count;
    $i=0;
    try{
        foreach ($directory in $directories){
            $i++;
            "Setting permissions on directory $i of $count`: $directory...";
            Add-NTFSAccess -Path $directory -Account $identity -AccessRights $access -ErrorAction Stop;
            }
        write-host "Process completed." -foregroundcolor green
        return $true
        }
    catch{
        $errorMsg = (Get-Date -Format g)+": "+ $_.Exception.Message+".. " + $directory;
        Add-Content $errorLogPath $errorMsg;
        "We have encountered some errors and a log has been generated at this location '$errorLogPath'.";
        return $false;
        }
}

setNtfsPermissions $directories $identity $access $errorLogPath
# Previous script

# Set variables here
$directories="\\FILESERVER01\dept01$","\\FILESERVER01\dept02$"
$identity="KIMCONNECT\SysAdmins"
$access="Full"
$errorLogPath=((Get-Item -Path ".\").FullName+"\filePermissionsScriptingErrors.txt")

<# Permissions
AppendData
ChangePermissions
CreateDirectories
CreateFiles
Delete
DeleteSubdirectoriesAndFiles
ExecuteFile
FullControl
GenericAll
GenericExecute
GenericRead
GenericWrite
ListDirectory
Modify
None
Read
ReadAndExecute
ReadAttributes
ReadData
ReadExtendedAttributes
ReadPermissions
Synchronize
TakeOwnership
Traverse
Write
WriteAttributes
WriteData
WriteExtendedAttributes
#>

# Include the required NTFSSecurity library from the PowerShell Gallery
if (!(Get-InstalledModule -Name NTFSSecurity)) {Install-Module -Name NTFSSecurity -Force}

# Setting permissions
$count=$directories.count;
$i=0;
try{
    foreach ($directory in $directories){
        $i++;
        "Setting permissions on directory $i of $count`: $directory...";
        Add-NTFSAccess –Path $directory –Account $identity –AccessRights $access -ErrorAction Stop;
        }
    }
catch{
    $errorMsg = (Get-Date -Format g)+": "+ $_.Exception.Message+".. " + $directory;
    Add-Content $errorLogPath $errorMsg;
    "We have encountered some errors and a log has been generated at this location '$errorLogPath'.";
    Break;
    }
finally{
    "Process completed."
    }

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

Windows UAC Error This App has been blocked for your protection mmc.exe taskschd.msc

Error Message: User Account ControlThis App has been blocked for your protection.A administrator has blocked…

WordPress Code Snippet Crashed My Site

Error Message: ParseError thrown syntax error, unexpected '$', expecting variable (T_VARIABLE) Resolution:1. If still login…

PowerShell: An Exercise in Calculating Checksums

$out = new-object byte[] 1073741824; #1GB(new-object Random).NextBytes($out);[IO.File]::WriteAllBytes($dummyFile, $out);Measure-command{$hash=jacksum -a crc8 -x $dummyFile}write-host $hash# New ServerPS…