A comment was left on the first post in the series asking if I could show how to copy ACLs from one object to another. For the sake of this post we’ll assume that the ACLs from c:\test will be copied to c:\test2.
If this is one shot deal you can just use the PowerShell pipeline:
Get-Acl -Path C:\Test | Set-Acl -Path C:\Test2
If you need something that will be used more frequently – how about a copy-acl function:
function copy-acl {
[CmdletBinding()]
param (
[ValidateScript({Test-Path -Path $_ })]
[string]$path,
[ValidateScript({Test-Path -Path $_ })]
[string]$destination
)
try
{
Get-Acl -Path $path | Set-Acl -Path $destination -Passthru -ErrorAction Stop
}
catch
{
Throw "Error setting ACL on $destination"
}
}
Get the source and target paths as parameters – validation scripts are used to determine if the paths exist.
Use the Get—Acl | Set-Acl combination from earlier to set the ACL on the destination. wrap it in a try/catch and use –Passthru on Set-Acl to see some output