我可以接管所有权,然后将-acl设置为文件夹吗?我有一个folders.txt文件,其中我有文件夹的位置。
例如:
D:\Dept\CC\NorthRiver\16-17\StaffAdministration
然后,我创建了上一年文件夹结构的新年,并将前几年文件夹的权限和权限复制到新文件夹年份匹配文件夹。因为文件夹的所有权,我遇到了一个问题。如果我不是所有者,我无法复制某些文件夹的权限,我会收到Set-ACL : The security identifier is not allowed to be the owner of this object.
有什么方法吗?
我尝试添加该行(将所有者更改为我,但这也不起作用):
get-item $currentFolder.Replace("16-17", "15-16") | set-owner -Account 'VDB-TST1\Administrators'
有没有人对我如何做到这一点有任何想法? 这是我的完整脚本:
Function Get-FileName{
[CmdletBinding()]
Param(
[String]$Filter = "|*.*",
[String]$InitialDirectory = "C:\")
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $InitialDirectory
$OpenFileDialog.filter = $Filter
[void]$OpenFileDialog.ShowDialog()
$OpenFileDialog.filename
}
#Get and Set the ACL to the new years folder structure
foreach ($currentFolder in (GC (Get-FileName -InitialDirectory $env:USERPROFILE\Desktop -Filter "Text files (*.txt)|*.txt|All files (*.*)|*.*"))) {
md $currentFolder # Create Folder
get-item $currentFolder.Replace("16-17", "15-16") | set-owner -Account 'VDB-TST1\Administrators'
Get-ACL $currentFolder.Replace("16-17", "15-16") | Set-ACL $currentFolder
}
答案 0 :(得分:1)
我认为您遇到了this post.中描述的Set-ACL和Get-ACL的相同限制尝试更改
Get-ACL $currentFolder.Replace("16-17", "15-16") | Set-ACL $currentFolder
到
(Get-Item $currentFolder.Replace("16-17", "15-16")).GetAccessControl('Access') | Set-ACL $currentFolder
作为替代方法,您可以使用robocopy从一个目录复制ntfs权限,然后将它们应用到另一个目录。
robocopy $currentFolder.Replace("16-17", "15-16") $currentfolder /copy:S /SECFIX
希望这有帮助。
答案 1 :(得分:0)
powershell原生的Set-ACL cmdlet非常糟糕。我建议使用可用的NTFS模块。我曾多次尝试使用Set-ACL,但它总是浪费我的时间而不是实际有用。