You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何判断本地组成员为用户还是组?

如何在Get-LocalGroupMember2输出中区分成员是用户还是组?

针对原生Get-LocalGroupMember的问题,你已经实现了替代函数Get-LocalGroupMember2,要在输出中区分成员类型(用户/组),可以通过读取ADSI对象的SchemaClassName属性来判断,同时调整输出字段匹配需求格式。

修改后的完整函数代码

function Get-LocalGroupMember2 {
    [CmdletBinding()]
    param
    (
      [Parameter(Mandatory = $true)]
      [string]$Groupname
    )
    
    $group = [ADSI]"WinNT://$env:COMPUTERNAME/$Groupname"
    $members = $group.Invoke('Members') | ForEach-Object {
        $adsiObj = [adsi]$_
        $path = $adsiObj.path
        Write-Host ">>> $path"
        [pscustomobject]@{
            Computer = $env:COMPUTERNAME
            Domain = $(Split-Path (Split-Path $path) -Leaf)
            Name = $(Split-Path $path -Leaf)
            Type = switch ($adsiObj.SchemaClassName) {
                'User' { 'User' }
                'Group' { 'Group' }
                default { 'Unknown' }
            }
        }
    }
    return $members 
}

关键修改说明

  • 将([adsi]$_)存入变量$adsiObj,避免重复转换,方便调用属性
  • 新增Type字段:通过switch判断SchemaClassName的值,用户对象的该属性为User,组对象为Group,额外添加Unknown分支处理特殊情况
  • 把原输出字段User改为Name,匹配你期望的输出表头

示例输出

>>> WinNT://MyDomain/TestUser
>>> WinNT://MyDomain/TestGroup

Computer   Domain   Name       Type
--------   ------   ----       ----
NyComputer MyDomain TestUser   User
NyComputer MyDomain TestGroup  Group

内容的提问来源于stack exchange,提问作者Kawaii-Hachii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:45:00