簡體   English   中英

Powershell中的icacls權限腳本

[英]icacls permissions script in powershell

首先,我要說我是腳本新手! 基本上,我想做的是編寫一個腳本來創建所有這些文件:對於前一年和當年的文件中的13-14,因此我需要一個變量,以便在明年運行腳本時它將是14-15。 頂部的文件夾是AD,CC,DC,FS,IT,OP:

例如

  • C:\\ Test \\ AD \\ 13-14 \\ Audit \\ Fir
  • C:\\ Test \\ CC \\ 13-14 \\ OSA
  • C:\\ Test \\ DC \\ 13-14 \\ Vendor
  • C:\\ Test \\ FS \\ 13-14 \\ Maintenance
  • C:\\ Test \\ IT \\ 13-14 \\ Detail
  • C:\\ Test \\ OP \\ 13-14 \\ Training

(還有更多文件夾,這只是一個例子)

到目前為止,我編寫的創建所有這些文件夾的腳本是:

$Users = Get-Content "C:\Users\david\Desktop\PowershellFoldersDB.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:\Test\Template
$ACLSub = Get-ACL "C:\Test\Template\Sub"
"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:\Users\david\Desktop\PowershellFoldersDB.txt" 
[int]$YY = Get-Date -f "yy"
[String]$YY = "$($YY-1)-$YY"
$ACL = Get-ACL C:\Test\Template
$ACLSub = Get-ACL "C:\Test\Template\Sub"
$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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM