【问题标题】:Powershell Issue with setting inheritance设置继承的Powershell问题
【发布时间】:2014-07-17 21:43:17
【问题描述】:

我有一个脚本,我需要一些帮助来配置文件夹和子文件夹集合的权限继承

这是我目前所拥有的:

    cls
    Set-Location "C:\Set-ACL"
    $log = "C:\Set-ACL\Folders.txt"
    #Gets the ACL's from a folder with correct permissions set
    $ACL = Get-Acl -Path "C:\Folder\subfolder\subfolder\subfolder"
   '$Folders = Get-ChildItem -Path "E:\Folder\Subfolder\*\*" | Select-String -pattern "01-"'
    $Folders >> $log

    Start-Process $log -Wait
    #Function to pause script while ignoring certain keys like Ctrl etc.
    'Function Pause4user($M = "Press any key to continue setting ACL's Ctrl + C to quit  . . . ") { If ($psISE) { $S = New-Object -ComObject "WScript.Shell"; $B = $S.Popup("Click OK to continue.", 0, "Script Paused", 0); Return }; Write-Host -NoNewline $M; $I = 16, 17, 18, 20, 91, 92, 93, 144, 145, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183; While ($K.VirtualKeyCode -Eq $Null -Or $I -Contains $K.VirtualKeyCode) { $K = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") }; Write-Host }'
    Pause4user

    foreach ($Folder in $Folders)
    {

Set-ACL -Path $Folders -AclObject $ACL
Write-Host "ACL's Set"
Remove-Item $log

    }

我发现的问题是我在变量 $ACL 中定义的权限没有传递给所有子文件夹,并且在 Get-ChildItem 看起来可以完成工作但由于 260 而无法工作后使用 -recurse路径中的字符限制。

有没有办法设置 $Folders 变量中返回的文件夹的权限,并将这些权限继承到它下面的所有内容,因此不会遇到路径限制?

附:轻松编写快速组合的脚本!

提前致谢

【问题讨论】:

  • 你声明了一个 $folder 变量,但你从不使用它

标签: powershell-2.0 file-permissions


【解决方案1】:

是的,正如@Cole9350 所说。在你的 for 循环中是 $Folder 的意思吗?目前 $Folders 指向集合而不是集合中的项目

此外,当您声明 $Folders 时,您不需要在语句周围加上单引号

【讨论】:

  • 我试图对 $Folders 变量返回的每个单独的文件夹说类似的话,然后在其上运行 Set-ACL。我想我的每个陈述都是错误的。但理想情况下,我希望有一种方法可以将 $Folders 上的权限设置为与 $ACL 中定义的权限相同 - 这发生在该级别,但不会继承到所有子文件夹和文件中的文件和文件夹下面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
相关资源
最近更新 更多