使用CIM CmdLets为所有人FullControl设置共享权限

时间:2018-07-03 07:18:07

标签: powershell permissions

我们正在尝试为Windows Server 2008计算机编写一个函数,该函数需要从共享权限的ACL中删除所有当前受托者,并添加具有Everyone访问权限的组FullControl。如果我们可以使用更快的CIM CmdLets代替WMI,那就太好了。

代码:

$ShareName = 'Folder'

$trustee = New-CimInstance (Get-CimClass Win32_Trustee) -ClientOnly
$trustee.Domain = $null
$trustee.Name = 'EVERYONE'

$ace = New-CimInstance (Get-CimClass Win32_ACE) -ClientOnly
$ace.AccessMask = [Uint32][System.Security.AccessControl.FileSystemRights]::FullControl
$ace.AceFlags = [Uint32][System.Security.AccessControl.AceFlags]::None
$ace.AceType = [Uint32][System.Security.AccessControl.AceType]::AccessAllowed
$ace.Trustee = $trustee

$sd = New-CimInstance (Get-CimClass Win32_SecurityDescriptor) -ClientOnly
$sd.DACL = $ace
$sd.group = $trustee
$sd.owner = $trustee

$lss = Get-CimInstance -ClassName Win32_LogicalShareSecuritySetting -filter "Name='$ShareName'"
Invoke-CimMethod -InputObject $lss -MethodName SetSecurityDescriptor -Arguments @{Descriptor = $sd}

在这里找到了code的一部分。

执行最后一行时:

Invoke-CimMethod -InputObject $lss -MethodName SetSecurityDescriptor -Arguments @{Descriptor = $sd}

将生成输出ReturnValue 21。经过一番谷歌搜索后,它似乎与Invalid parameter有关。但我们看不到这里缺少什么...

0 个答案:

没有答案