2014-01-23 45 views
1

我在PowerShell中的新手,我需要创建脚本,它在Windows Server 2012上创建文件夹,并许可其设置为共享共享在Win2012:大家NETWORK SERVICE 全部通过PowerShell的

我写了下面的脚本

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" 
} 

脚本创建的文件夹,实现共享,但设置文件夹的权限,而不是设置共享权限 - 这意味着,如果我显示数据导出文件夹,标签共享的特性。如果我使用高级共享...按钮和权限按钮,我看到权限正确,但如果我使用分享...按钮,权限未设置。

如果我尝试连接到共享文件夹,我没有访问共享文件夹的权限。

有什么方法可以设置共享文件夹?

回答

1

Finaly我发现工具CACLS(目前不建议使用,但工程),并通过这个工具,我可以设置共享权限:

function GrantSharePermission([string]$Path, [string]$User, [string]$Permission) 
{ 
    $Command = "cacls " + $Path + " /G " + $User + ":" + $Permission + " /T /E" 
    iex $Command 
} 
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