我需要临时拥有个人资料文件夹的所有权,以便向安全组的成员添加权限(只读)。我想知道如何在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,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请确认路径正确,然后重试。
我不知道我是否应该继续该模块,或者是否有更好的方法。
答案 0 :(得分: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
{{1}},因为这不是一直使用它们的好习惯。