我需要暂时获取配置文件夹的所有权,以便向安全组的成员添加权限(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,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
我不知道我是否应继续使用此模块或是否有更好的方法。
在处理文件系统权限时,我倾向于使用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
,因为一直运行这些都不是好习惯。