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

如何用MYDOMAIN\myuser格式的用户名调用PowerShell的Get-ADUser?

解决MYDOMAIN\myuser格式调用Get-ADUser的问题

直接用DOMAIN\username格式调用Get-ADUser失败,是因为Get-ADUser的-Identity参数默认优先识别不带域前缀的SAM账户名、用户SID、GUID或UPN,带域前缀的格式在部分环境下会出现解析异常。你可以通过以下两种方式解决:

方法一:拆分域前缀与SAM账户名

通过字符串分割提取纯SAM账户名,这是最可靠的处理方式:

$remoteapps = Get-RDRemoteApp -ConnectionBroker $connectionBroker -CollectionName $collectionName
foreach ($app in $remoteapps) {
    if ($app.FilePath -notlike '*\QBLaunch.exe') {
        foreach ($userName in $app.UserGroups) {
            # 按反斜杠分割,仅提取用户名部分(分割后数组的第二个元素)
            $samAccountName = $userName -split '\\', 2 | Select-Object -Index 1
            # 使用纯SAM账户名调用Get-ADUser
            $user = Get-ADUser -Identity $samAccountName
            # 此处可添加用户信息处理逻辑
            Write-Host "获取到用户:$($user.Name)"
        }
    }
}

-split '\\', 2中的2限制最多分割成2部分,避免用户名中包含反斜杠的极端情况。

方法二:使用Filter参数指定域和SAM账户名

如果需要结合域信息做精确匹配,可以用-Filter参数实现:

$remoteapps = Get-RDRemoteApp -ConnectionBroker $connectionBroker -CollectionName $collectionName
foreach ($app in $remoteapps) {
    if ($app.FilePath -notlike '*\QBLaunch.exe') {
        foreach ($userName in $app.UserGroups) {
            # 拆分域和用户名
            $domain, $samAccountName = $userName -split '\\', 2
            # 结合域的NetBIOS名过滤用户
            $user = Get-ADUser -Filter { SamAccountName -eq $samAccountName -and Domain -eq $domain }
            # 处理用户信息
            if ($user) { Write-Host "匹配到域$domain下的用户:$($user.Name)" }
        }
    }
}

注意:Get-RDRemoteApp的UserGroups属性可能同时包含用户和组对象,如果需要仅处理用户,可在获取后通过Get-ADObject判断对象类别(objectClass -eq 'user')。

内容的提问来源于stack exchange,提问作者user3720435

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:30:48