代码之家  ›  专栏  ›  技术社区  ›  DarkLite1

使用CIM cmdlet将共享权限设置为Everyone FullControl

  •  0
  • DarkLite1  · 技术社区  · 6 年前

    我们正在尝试为Windows server 2008计算机编写一个函数,该函数需要从共享权限的ACL中删除所有当前受信任者并添加组 Everyone 具有 FullControl 进入。如果我们可以使用更快的CIM cmdlet而不是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 回复  |  直到 6 年前