powershell中的icacls权限脚本



让我首先说我对脚本非常陌生!基本上,我想做的是编写一个脚本,创建所有这些文件:对于文件中的13-14,它是上一年和当前一年,所以我需要一个变量,当我明年运行脚本时,它将是14-15。最上面的文件夹是AD、CC、DC、FS、IT、OP:

例如

  • C: \Test\AD\13-14\Audit\Fir
  • C: \Test\CC\13-14\OSA
  • C: \测试\ DC \ 13-14\供应商
  • C: \测试\ FS\ 13-14\维护
  • C: \测试\IT\13-14\详细信息
  • C: \Test\OP\13-14\培训

(还有更多的文件夹,这只是一个例子(

到目前为止,我写的创建所有这些文件夹的脚本是:

$Users = Get-Content "C:UsersdavidDesktopPowershellFoldersDB.txt" 
ForEach ($user in $users)
{
    $newPath = Join-path "C:Test" -childpath $user
    New-Item $newPath -type directory
}

好吧,现在我想添加的是,这个脚本是icacls将处于顶级分类的文件夹锁定,这样就不会创建新文件夹,也不会删除新文件夹,更不会重命名新文件夹。但对于顶层以下的文件夹,如果我也需要的话,我希望能够添加新的文件夹。如有任何帮助,我们将不胜感激。感谢

您要查找的是Get-ACLSet-ACL。您可以根据需要手动设置一个文件夹,然后运行Get-ACL以从中提取所有安全信息。然后,您可以将其应用于使用Set-ACL创建的新文件夹。所以类似于:

[int]$YY = Get-Date -f "yy"
[String]$YY = "$($YY-1)-$YY"
$ACL = Get-ACL C:TestTemplate
$ACLSub = Get-ACL "C:TestTemplateSub"
"AD","CC","DC","FS","IT","OP" | %{
    $CurrentRoot = New-Item "C:Test$_" -ItemType Directory
    $CurrentSub = New-Item "$CurrentRoot$YY" -ItemType Directory
    $CurrentRoot | Set-ACL -AclObject $ACL
    $CurrentSub | Set-ACL -AclObject $ACLSub
}

然后,您只需要提前设置Template文件夹和其中的Sub文件夹,就可以获得正确的安全权限,并且一切就绪。这比在PowerShell IMHO中手动设置所有权限要简单得多。

编辑:考虑到文本文件中有一个文件夹列表,这实际上会变得更简单。

$Folders  = Get-Content "C:UsersdavidDesktopPowershellFoldersDB.txt" 
[int]$YY = Get-Date -f "yy"
[String]$YY = "$($YY-1)-$YY"
$ACL = Get-ACL C:TestTemplate
$ACLSub = Get-ACL "C:TestTemplateSub"
$folders |?{$_ -match "^(C:\Test\..)(\d{2}-d{2})(\.*)$"}|%{New-Item "$($Matches[1])$YY$($Matches[3])" -ItemType directory -force | Out-Null}
GCI "$($matches[1]).." -Directory | %{
    $_ | Set-ACL -AclObject $ACL
    GCI $_.FullName | Set-ACL -AclObject $ACLSub
}

最新更新