这是一个奇怪的问题-我有下面的脚本,它可以更改权限并正常工作。然而,它在我目标的根文件夹下面的文件夹上执行。。。但不会更改ROOT文件夹本身的排列!
那么,我该如何更改ROOT文件夹和子文件夹的权限。。。
$ROOT_FOLDER = "\SERVERd$filesuatw9rarW7_ADOBE_AIR"
Get-ChildItem $ROOT_FOLDER -Recurse | Where-Object {$_.PSIsContainer} | ForEach-Object {
$FullName = $_.FullName
$ACL_LIST = Get-Acl $FullName
$ACL_LIST.access | ForEach-Object {
if ($_.IdentityReference -eq "BFGACL-CHANGE-ALL-ROBS-UATW9GAR")
{
write-host $FullName -ForegroundColor white -NoNewline
$colRights1 = [System.Security.AccessControl.FileSystemRights]"Modify,DeleteSubdirectoriesAndFiles"
$permission = "BFGACL-CHANGE-ALL-ROBS-UATW9GAR",$colRights1,"ContainerInherit,ObjectInherit”,”None”,”Allow”
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$ACL_LIST.SetAccessRule($accessRule)
$ACL_LIST | Set-Acl $FullName
write-host " : set with 'Modify,DeleteSubdirectoriesAndFiles' permissions"
}
}
}
我得到的输出:
\SERVERd$filesuatw9rarW7_ADOBE_AIR251 : set with 'Modify,DeleteSubdirectoriesAndFiles' permissions
\SERVERd$filesuatw9rarW7_ADOBE_AIR251 00 : set with 'Modify,DeleteSubdirectoriesAndFiles' permissions
\SERVERd$filesuatw9rarW7_ADOBE_AIR251 00Adobe AIR : set with 'Modify,DeleteSubdirectoriesAndFiles' permissions
\SERVERd$filesuatw9rarW7_ADOBE_AIR251 00SRV : set with 'Modify,DeleteSubdirectoriesAndFiles' permissions
\SERVERd$filesuatw9rarW7_ADOBE_AIR251 00Adobe AIRVersions : set with 'Modify,DeleteSubdirectoriesAndFiles' permissions
Get-ChildItems
按照锡上的指示执行。它将遍历所有包含的项,给出一个-path
,在您的例子中是-recurse
,并保持下去,直到它到达死胡同。
您可以做的是首先通过组合Get-Item
和Get-ChildItem
来构建一个目录阵列,如下所示:
$directories = @(Get-Item -path $ROOT_FOLDER | Where-object {$_.psIscontainer})
$directories += Get-ChildItem -path $ROOT_FOLDER -recurse | Where-object {$_.psIscontainer}
$directories | ForEach-Object {Do your stuff here}