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

使用Get-Process查询远程机器登录用户:无本地登录时返回自身用户名的问题

解决方法:排除远程会话自身的用户条目

你的问题核心在于:当远程机器无本地用户登录时,Get-Process -IncludeUserName会包含你通过Invoke-Command建立的远程会话对应的进程,所以返回了你的用户名。我们只需要在结果中排除掉这个自身用户的条目,就能实现需求。

下面提供两种方案,你可以根据场景选择:

方案1:在远程机器上直接处理(推荐)

把判断逻辑放到远程脚本块中,减少数据传输,更高效:

Invoke-Command -Computername $Comp -Scriptblock { 
    # 获取所有符合条件的进程用户
    $processUsers = Get-Process -IncludeUserName | 
                    Select-Object UserName, SessionId | 
                    Where-Object { 
                        $_.UserName -ne $null -and 
                        $_.UserName.StartsWith("DomainName") 
                    } | 
                    Sort-Object SessionId -Unique

    # 获取当前远程会话的用户(也就是执行Invoke-Command的你)
    $currentRemoteUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

    # 过滤掉自身用户,只保留本地登录的用户
    $localLoggedUsers = $processUsers | Where-Object { $_.UserName -ne $currentRemoteUser }

    # 根据结果输出
    if ($localLoggedUsers) {
        $localLoggedUsers | Select-Object UserName -Unique
    } else {
        Write-Output "No user logged in"
        # 如果需要无输出,直接注释上面一行即可
    }
}

方案2:本地处理远程返回结果

如果你需要在本地做更多后续处理,可以把结果传回本地再判断:

# 获取远程机器的进程用户结果
$remoteResults = Invoke-Command -Computername $Comp -Scriptblock { 
    Get-Process -IncludeUserName | 
    Select-Object UserName, SessionId | 
    Where-Object { $_.UserName -ne $null -and $_.UserName.StartsWith("DomainName") } | 
    Sort-Object SessionId -Unique
}

# 获取当前执行脚本的用户完整名称(格式:DomainName\YourUsername)
$currentLocalUser = "$env:USERDOMAIN\$env:USERNAME"

# 过滤掉自身用户条目
$validUsers = $remoteResults | Where-Object { $_.UserName -ne $currentLocalUser }

# 根据过滤结果输出
if ($validUsers) {
    $validUsers | Select-Object UserName -Unique
} else {
    Write-Output "No user logged in"
    # 无输出的话就删除上面一行
}

补充说明

  • 为什么之前的脚本会返回你的用户名?因为Invoke-Command在远程机器上创建了一个PowerShell会话,这个会话的进程会被Get-Process捕获,所以当没有其他本地用户登录时,就只剩下你的用户条目。
  • 如果你想更精准地筛选本地交互式登录的用户,还可以通过SessionId判断(通常本地控制台会话的SessionId为0或1,远程会话的SessionId会更高),但这种方法可能因系统版本/配置不同有差异,不如排除自身用户的方法通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:31:39