在PowerShell中共享文件夹和设置权限

18

我需要一个脚本在Vista Ultimate上运行,分享一个外部驱动器并授予Everyone完全控制权限。 我有一个批处理文件来使用net share创建共享,但似乎没有办法更改权限。 我想这应该可以在PowerShell中实现,但我不知道从哪里开始。

4个回答

17

未来的用户注意:在Win10 1803中可以正常工作,共享到运行Win10 1607的本地HyperV实例。 - Keith

16

如果你正在寻找这个问题的答案,但是你使用的是Windows 7 (而不是Vista),就像我一样,你可能会感兴趣地知道,现在可以直接在NET SHARE命令中设置权限了。

例如,

NET SHARE Movies=M:\Movies /GRANT:Everyone`,READ

将创建一个共享,并给予Everyone只读权限。

你也可以使用CHANGE或FULL代替READ。


4
除非你用引号将最后一个参数括起来,否则 PowerShell 似乎无法识别此命令:NET SHARE Movies=M:\Movies "/GRANT:Everyone,READ"。 - Evan M
添加一个转义字符,以便逗号不被解析... /GRANT:Everyone`,READ - Hicsy

13

两个回答。

在PowerShell中,Get-ACL cmdlet将检索现有权限。然后使用.NET命令修改这些权限,并运行Set-ACL将其应用于文件夹,这两个cmdlet的帮助包括示例,您可以从www.sapienpress.com下载书籍示例,例如《Windows PowerShell:TFM》,该书还包含显式示例。

然而,这不值得你花费时间。实际上,文件ACL是很难处理且非常复杂的。微软已经编写了一些很好的工具来处理此类问题,如Cacls,使用它们要容易得多。

现在这是所有文件权限 - 您可能还想更改SHARE本身的权限。该工具是SUBINACL,您可以从Microsoft下载它。另请参见http://cwashington.netreach.net/depo/view.asp?Index=1127&ScriptType=vbscript


谢谢 Don。我尝试了链接中的 subinacl 脚本,但其中出现了一个错误。 - harriyott

5

Carbon PowerShell 模块有两个函数可以帮助您完成此操作:Install-SmbShareGrant-Permission。建议 下载该模块 并尝试使用。

Install-SmbShare -Name MyShare -Path X:\ -FullAccess 'Everybody' `
                 -Description 'My super-awesome file share!' 
Grant-Permission -Identity Everyone -Permission FullControl -Path X:\

免责声明:我是Carbon的作者和创建者。我建议使用这个模块,因为在安装共享和授予权限时有很多需要注意的细节和坑。这两个函数可以为您处理这些问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接