我是PowerShell中的新手,我需要创建脚本,在Windows Server 2012上创建文件夹并将其设置为权限分享:每个人阅读 ,网络服务完整 。
我写了以下脚本
Import-Module SmbShare
Import-Module SmbWitness
function CreateFolderIfNotExists([string]$Path)
{
if (!(Test-Path $Path))
{
New-Item -ItemType Directory -Force -Path $Path
return $True
}
return $False
}
if (CreateFolderIfNotExists -Path "C:\DataExport")
{
New-SmbShare –Name "DataExport" –Path "C:\DataExport" –FullAccess "NETWORK SERVICE" –ReadAccess "Everyone"
}
脚本创建文件夹,启用共享,但设置文件夹权限而不设置共享权限 - 这意味着,如果我显示DataExport文件夹的属性,则选项卡共享。如果我使用高级共享... 按钮和权限按钮,我会正确查看权限,但如果我使用共享... 按钮,权限没有设定。
如果我尝试连接到共享文件夹,则无权访问共享文件夹。
有没有办法设置文件夹共享?
答案 0 :(得分:1)
最后我找到了工具CACLS(目前已弃用,但有效),通过此工具我可以设置共享权限:
function GrantSharePermission([string]$Path, [string]$User, [string]$Permission)
{
$Command = "cacls " + $Path + " /G " + $User + ":" + $Permission + " /T /E"
iex $Command
}
答案 1 :(得分:0)
cacls是一个很好的工具,但它设置了文件权限(当您右键单击文件或文件夹时显示在“安全”选项卡上),而不是共享权限。您应该了解,用户或组对共享的有效权限是两者中限制性更强的。因此,如果您为用户更改共享权限,但只对文件系统进行读取/执行,则该用户的有效权限为该区域中的“读取/执行”。
如果你喜欢使用cacls,rmtshare.exe是另一个不赞成使用的工具,它可以做你想要的。 cacls将设置文件权限,rmtshare将处理共享。你必须环顾四周找到它,在我的工作中我们使用资源包中的旧版本。
示例rmtshare用法:
rmtshare \\servername\sharename=C:\Websites\wwwroot /remark:"Website Share"
rmtshare \\servername\sharename /grant Administrators:F /grant system:f /remove everyone
rmtshare \\servername\sharename /grant "servername\Local Website Users":C
rmtshare \\servername\sharename /grant "servername\Local Website Viewers":R