Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set-acl not working in powershell 3.0

Tags:

powershell

I have a new starter script which works fine in Powershell 2.0 but I have had to upgrade to Powershell 3.0 to get some SQL stuff working. However this breaks all the parts of my script that use Set-Acl. Using powershell 2.0 is not an option. Has anyone found a way around this: My code:

#Set home directory permissions
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit
$propagation = [system.security.accesscontrol.PropagationFlags]"None"
$acl = Get-Acl $newfolder
$accessrule = New-Object system.security.AccessControl.FileSystemAccessRule("$username", "FullControl", $inherit, $propagation, "Allow")
$acl.AddAccessRule($accessrule)
set-acl -aclobject $acl $newfolder
write-host permissions set

#Set home folder owner
$acl = Get-Acl $newfolder;
$domain = "mydomain" 
$sid = New-Object System.Security.Principal.NTAccount("$domain\$username");
$acl.SetOwner($sid);
Set-Acl $newfolder $acl; 
write-host owner set 
like image 492
user2959246 Avatar asked Nov 19 '25 14:11

user2959246


1 Answers

Try binding the parameters with a colon.

Example:

Before:set-acl -aclobject $acl $newfolder

After:set-acl -aclobject:$acl -Path:$newfolder

Note: Use the full path of $newfolder.

set-acl -aclobject:$acl -path:$newfolder.FullName

Explanation: Powershell cmdlets have ordered binding and positioning, using a colon ensures that your value is assigned to the correct parameter, no matter what order or type of object. The .FullName property will prevent a SetSecurityDescriptor error.

like image 123
Eris Avatar answered Nov 22 '25 11:11

Eris



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!