通过PowerShell在Win2012中共享

时间:2014-01-23 10:02:21

标签: powershell permissions share

我是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文件夹的属性,则选项卡共享。如果我使用高级共享... 按钮和权限按钮,我会正确查看权限,但如果我使用共享... 按钮,权限没有设定。

如果我尝试连接到共享文件夹,则无权访问共享文件夹。

有没有办法设置文件夹共享?

2 个答案:

答案 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