如何使用PowerShell模块控制NTFS权限

日期: 2015-03-31 作者:Brien Posey翻译:杨旭 来源:TechTarget中国 英文

尽管PowerShell包含一系列本地用来配置存储的cmdlet,但配置NTFS权限的能力明显有限。幸运的是,微软提供了一种利用PowerShell来检索和配置NTFS权限的方法,但是你需要提前下载并安装一个专用模块。 所需的模块是文件系统安全PowerShell模块。将文件复制到PowerShell模块文件夹中的NTFSSecurity文件夹下(你必须创建NTFSSecurity文件夹)。

默认情况下,PowerShell模块文件夹路径为:%Windir%System32WindowsPowerShellv1.0Modules。 将模块复制到相应的文件夹后,可以通过使用下面的命令来验证模块的可……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

尽管PowerShell包含一系列本地用来配置存储的cmdlet,但配置NTFS权限的能力明显有限。幸运的是,微软提供了一种利用PowerShell来检索和配置NTFS权限的方法,但是你需要提前下载并安装一个专用模块。

所需的模块是文件系统安全PowerShell模块。将文件复制到PowerShell模块文件夹中的NTFSSecurity文件夹下(你必须创建NTFSSecurity文件夹)。默认情况下,PowerShell模块文件夹路径为:%Windir%System32WindowsPowerShellv1.0Modules。

将模块复制到相应的文件夹后,可以通过使用下面的命令来验证模块的可用性:

Get-Module –ListAvailable

假设NTFS模块出现在列表里,可以使用下面的命令输入:

Import-Module NTFSSecurity

记住,除非你已经利用Set-ExecutionPolicy cmdlet更改了服务器的执行策略,否则上面这条命令将生成一个错误消息,告诉你系统上的脚本是禁止运行的。

输入执行策略后,你就拥有NTFS权限了。

然而,每次需要使用权限的时候都必须输入NTFSSecurity模块。

假设我在服务器上创建了文件夹C:Data 。接着,假如想查看这个文件夹的访问控制列表条目,这时候我们可以使用下面的命令:

Get-NTFSAccess –Path C:Data

上面命令列出每个访问文件夹的账户/安全组、访问权限、应用权限、权限类型以及IsInherited和InheritedFrom标志(见图1)。

图1. 通过PowerShell查看NTFS权限
图1. 通过PowerShell查看NTFS权限

授予文件夹访问权限与查看现有权限一样简单。你需要使用Add-NTFSAccess cmdlet。另外还需要指定路径、账户和访问权限。这里使用例子说明。假设“Everyone”都能安全访问到C:Data文件夹。需要使用以下命令:

Add-NTFSAccess –Path C:Data –Account Everyone –AccessRights FullControl

现在,我已经添加了权限,让每个人都能访问C:Data,并且利用Get-NTFSAccess cmdlet验证权限(图2)。

图2. 任何人可访问C:Data文件夹
图2. 任何人可访问C:Data文件夹

即使能够将权限授权给所有人,通常来说必须确认账户位置(图2)。例如,一些已有的权限位置为BUILTIN或NT AUTHORITY。在实际操作中,通常会指定一个连带用户组名或用户名的域名。例如,如果你想授权访问Contoso域中的Finance组,那么账户名为ContosoFinance。

删除NTFS权限有点棘手。需要用到的命令是Remove-NTFSAccess。接着上面的例子,你必须确认路径、账户名称以及打算删除的权限。例如,如果你想删除C:Data文件夹Everyone中的FullControl权限,你需要使用以下命令:

Remove-NTFSAccess –Path C:Data –Account Everyone –AccessRights FullControl

该命令有点棘手的原因在于,你无法删除继承权限。而且,删除的权限必须与目前分配给该帐户的权限准确匹配。如果匹配失误,则命令无效。

因为有时难以完全精准匹配权限,所以使用几个命令一起删除权限会更加方便。假如你想删除C:Data文件夹Everyone的所有权限,不必手工匹配权限,你可以使用PowerShell读取该权限然后进行删除该。代码如下:

Get-NTFSAccess –Path C:Data –Account Everyone –ExcludeInherited | Remove-NTFSAccess

如果你想从整个文件夹树中删除权限,可以递归使用该命令(图3)。

图3. 删除Everyone权限
图3. 删除Everyone权限

相关推荐