我正在尝试编写一个脚本,在所有文件服务器上添加“CreatorOwner”权限以在configuration文件$文件夹中;
即将“CreatorOwner”权限添加到“\ FileServer \ Profile $”
任何人都可以告诉我最新的命令和语法吗?
请问有没有问题。
这样做的一个方法是使用WMI和UNC路径。
$AccessRule = New-Object system.security.accesscontrol.filesystemaccessrule("CREATOR OWNER","FullControl","ContainerInherit, ObjectInherit","InheritOnly","Allow") $profileshare = Get-WmiObject Win32_Share -ComputerName fileserver -Filter "name = 'profile$'" $driveletter, $path = $profileshare.path $path = $path.TrimStart("\") $ACL = Get-Acl "\\fileserver\$driveletter`$\$path" $ACL.SetAccessRule($AccessRule) Set-Acl \\fileserver\$driveletter`$\$path -AclObject $ACL
现在,如果您有一个服务器名称列表,您可以执行以下操作:
$servers = @("fileserver1","fileserver2","fileserver3") $AccessRule = New-Object system.security.accesscontrol.filesystemaccessrule("CREATOR OWNER","FullControl","ContainerInherit, ObjectInherit","InheritOnly","Allow") $servers | % { $profileshare = Get-WmiObject Win32_Share -ComputerName $_ -Filter "name = 'profile$'" $driveletter, $path = $profileshare.path $path = $path.TrimStart("\") $ACL = Get-Acl "\\$_\$driveletter`$\$path" $ACL.SetAccessRule($AccessRule) Set-Acl \\$_\$driveletter`$\$path -AclObject $ACL }
这将做到这一点:
#Change the CSV file path $Permissions = Import-Csv C:\Test.CSV -delimiter '|' ForEach ($line in $Permissions) $inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit" $propagation = [system.security.accesscontrol.PropagationFlags]"None" $acl = Get-Acl $line.Path $acl.SetAccessRuleProtection($True, $False) $accessrule = New-Object system.security.AccessControl.FileSystemAccessRule("domain users", "Read", $inherit, $propagation, "Allow") #Adding the Rule $acl.AddAccessRule($accessrule) #Setting the Change Set-Acl $line.Path $acl
什么CSV文件看起来像
\ SRV01 \ Folder1 \ Folder2等