暂时取得文件夹的所有权

问题描述 投票:0回答:1

我需要暂时获取配置文件夹的所有权,以便向安全组的成员添加权限(ReadOnly)。我想知道如何在powershell中实现这一点。

我之前使用过TakeOwn.exe,但由于它不能将所有权归还给原主人,我不能用它。

我尝试使用一个名为PowerShellAccessControl的模块,我在technet上找到了这个模块。

Import-Module $PSScriptRoot\modules\PowerShellAccessControl\PowerShellAccessControl.psd1

$path = "$PSScriptRoot\profileFolders\profile"

$AddAceParams = @{
    Principal = "SecurityGroup"
    FolderRights = "Read"
}

Get-SecurityDescriptor $path -PacSDOption (New-PacCommandOption -BypassAclCheck) | ForEach-Object {
    $OriginalOwner = $_.Owner

    $_ | Set-Owner -PassThru -Apply | 
        Add-AccessControlEntry @AddAceParams -PassThru |
        Set-Owner -Principal $OriginalOwner -Apply 
}

但是这段代码只会导致以下错误:

New-PacCommandOption:术语“New-PacCommandOption”不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

我不知道我是否应继续使用此模块或是否有更好的方法。

powershell windows-server-2012 powershell-v4.0
1个回答
2
投票

在处理文件系统权限时,我倾向于使用NTFSSecurity模块,编写得很好,到目前为止我已经取得了很好的成功。

$path = "C:\folder"
$OriginalPermissions = Get-NTFSOwner $path

Set-NTFSOwner -Path $path -Account $env:USERNAME
Add-NTFSAccess -Path $path -Account 'DOMAIN\SecurityGroup' -AccessRights Read
Set-NTFSOwner -Path $path -Account $OriginalPermissions.Owner

注意:您需要安装模块,如果您使用的是现代版本的Powershell,这很简单,因为您可以使用Install-Module -Name NTFSSecurity。如果是旧版本,则需要手动下载并安装模块。


编辑:

另一种选择是使用Enable-Privileges为您的帐户授予Backup, Restore, and Security的权限。

有了这些,您就可以编辑权限,而无需您自己的帐户对数据具有明确的权限。上面链接的文档中介绍了这些命令的使用。在启用它们之后一定要使用Disable-Privileges,因为一直运行这些都不是好习惯。

© www.soinside.com 2019 - 2024. All rights reserved.