使用 PowerShell 设置大量文件的文件权限
Setting file permissions on a large amount of files using PowerShell
我有两个文件,一个包含安全组列表,另一个包含相应的文件夹路径。我需要做的就是遍历这些文件并将正确的安全组递归 RW 访问应用到正确的文件夹。
因此第 1 行的安全组将应用于第 1 行的文件夹。
Powershell 脚本:
foreach ($group in gc c:\temp\securitygroups.txt) {
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($group, 'Modify','ContainerInherit,ObjectInherit', 'None', 'Allow')
foreach ($folder in gc c:\temp\folders.txt) {
$acl = Get-Acl $folder
$acl.SetAccessRule($rule)
Set-Acl $folder $acl
}
}
securitygroups.txt
:
securitygroup1
securitygroup2
securitygroup3
securitygroup4
securitygroup5
securitygroup6
securitygroup7
securitygroup8
securitygroup9
securitygroup10
folders.txt
:
D:\shares\projects\project1
D:\shares\projects\project2
D:\shares\projects\project3
D:\shares\projects\project4
D:\shares\projects\project5
D:\shares\projects\project6
D:\shares\projects\project7
D:\shares\projects\project8
D:\shares\projects\project9
D:\shares\projects\project10
目前 securitygroups.txt 中的每个安全组都被添加到列表中的每个文件夹,这不是我想要的,我想要 securitygroup1
添加到 project1
,securitygroup2
添加到 project2
等等
将两个文件读入变量,然后使用for
循环同时遍历两个数组:
$groups = Get-Content 'c:\temp\securitygroups.txt'
$folders = Get-Content 'c:\temp\folders.txt'
for ($i=0; $i -lt $folders.Count; $i++) {
$rule = New-Object Security.AccessControl.FileSystemAccessRule ($groups[$i], 'Modify', 'ContainerInherit,ObjectInherit', 'None', 'Allow')
$acl = Get-Acl $folders[$i]
$acl.SetAccessRule($rule)
Set-Acl $folders[$i] $acl
}
我有两个文件,一个包含安全组列表,另一个包含相应的文件夹路径。我需要做的就是遍历这些文件并将正确的安全组递归 RW 访问应用到正确的文件夹。
因此第 1 行的安全组将应用于第 1 行的文件夹。
Powershell 脚本:
foreach ($group in gc c:\temp\securitygroups.txt) {
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($group, 'Modify','ContainerInherit,ObjectInherit', 'None', 'Allow')
foreach ($folder in gc c:\temp\folders.txt) {
$acl = Get-Acl $folder
$acl.SetAccessRule($rule)
Set-Acl $folder $acl
}
}
securitygroups.txt
:
securitygroup1 securitygroup2 securitygroup3 securitygroup4 securitygroup5 securitygroup6 securitygroup7 securitygroup8 securitygroup9 securitygroup10
folders.txt
:
D:\shares\projects\project1 D:\shares\projects\project2 D:\shares\projects\project3 D:\shares\projects\project4 D:\shares\projects\project5 D:\shares\projects\project6 D:\shares\projects\project7 D:\shares\projects\project8 D:\shares\projects\project9 D:\shares\projects\project10
目前 securitygroups.txt 中的每个安全组都被添加到列表中的每个文件夹,这不是我想要的,我想要 securitygroup1
添加到 project1
,securitygroup2
添加到 project2
等等
将两个文件读入变量,然后使用for
循环同时遍历两个数组:
$groups = Get-Content 'c:\temp\securitygroups.txt'
$folders = Get-Content 'c:\temp\folders.txt'
for ($i=0; $i -lt $folders.Count; $i++) {
$rule = New-Object Security.AccessControl.FileSystemAccessRule ($groups[$i], 'Modify', 'ContainerInherit,ObjectInherit', 'None', 'Allow')
$acl = Get-Acl $folders[$i]
$acl.SetAccessRule($rule)
Set-Acl $folders[$i] $acl
}