如何使用PowerShell 2分配对Windows共享的完全访问权限

时间:2015-01-22 15:39:37

标签: powershell wmi

我有一个可以共享文件夹的简单PowerShell命令:

$(Get-WMIObject Win32_Share -List).Create("C:\MyPath\WebData", "WebData", 0)

但是,用#34; Everyone"具有只读访问权限。

如何与拥有完全访问权限的所有人一起创建?或者其他任何访问。

我无法解决如何在WMI Share Create方法中使用Win32_SecurityDescriptor参数。

到目前为止我找到的示例只会影响文件权限(Get-ACL,Set-ACL等),我遇到的问题,或者他们使用命令行命令或vba,我也想避免。这必须在PS中可行。

我无法在此处使用PowerShell 3,因此无法使用新的New-SMBShare及相关方法。

感谢,

1 个答案:

答案 0 :(得分:2)

我之前回答过类似的问题:

Powershell - Invoke-WmiMethod to create a Sharefolder remotely with full controle permission

要使规则适用于Everyone,您似乎需要修改它:

$trustee.Name = "EVERYONE"
$trustee.Domain = $Null

Source for Everyone-part

经过测试的样本:

#Username/Group to give permissions to
$trustee = ([wmiclass]'Win32_trustee').psbase.CreateInstance()
$trustee.Domain = $null
$trustee.Name = "EVERYONE"

#Accessmask values
$fullcontrol = 2032127
$change = 1245631
$read = 1179785

#Create access-list
$ace = ([wmiclass]'Win32_ACE').psbase.CreateInstance()
$ace.AccessMask = $fullcontrol
$ace.AceFlags = 3
$ace.AceType = 0
$ace.Trustee = $trustee

#Securitydescriptor containting access
$sd = ([wmiclass]'Win32_SecurityDescriptor').psbase.CreateInstance()
$sd.ControlFlags = 4
$sd.DACL = $ace
$sd.group = $trustee
$sd.owner = $trustee

$share = Get-WmiObject Win32_Share -List
$share.create("d:\testfolder", "testshare$", 0, 100, "Description", "", $sd)