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

如何用PowerShell获取已登录用户DefaultUser的主屏幕分辨率?

获取远程Windows平板上指定用户的屏幕分辨率

问题分析

显示分辨率是用户会话级的配置,每个交互式登录的用户会话拥有独立的显示上下文。当用支持账户远程执行脚本时,默认会在支持账户的会话(非目标用户DefaultUser的活跃会话)中运行,因此获取到的是支持账户的分辨率,而非目标用户的。

更优雅的解决方案:结合会话ID与PsExec跨会话执行脚本

步骤1:远程获取DefaultUser的活跃会话ID

通过以下两种方式,定位目标平板上DefaultUser的交互式会话ID:

方法A:使用quser命令

$targetPC = "平板主机名/IP"
# 过滤出DefaultUser的会话ID
$sessionInfo = quser /server:$targetPC | Where-Object { $_ -match 'DefaultUser' }
$sessionId = ($sessionInfo -split '\s+' | Select-Object -Index 2) -as [int]

方法B:使用CIM查询(无需依赖外部命令)

$targetPC = "平板主机名/IP"
# 查找DefaultUser的交互式登录会话(LogonType=2表示交互式)
$session = Get-CimInstance -ComputerName $targetPC -ClassName Win32_LogonSession | 
           Where-Object { $_.UserName -eq 'DefaultUser' -and $_.LogonType -eq 2 }
$sessionId = $session.SessionId

步骤2:在目标用户会话中执行分辨率查询脚本

利用PsExec工具的-i参数,指定在目标会话中执行PowerShell命令,直接返回DefaultUser的屏幕分辨率:

# 执行命令并捕获结果
$resolution = psexec \\$targetPC -i $sessionId -s powershell -Command @"
Add-Type -AssemblyName System.Windows.Forms
[PSCustomObject]@{
    Width = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Width
    Height = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Height
} | ConvertTo-Json
"@ | ConvertFrom-Json

# 输出结果
Write-Host "DefaultUser的屏幕分辨率:$($resolution.Width)x$($resolution.Height)"

说明:-s参数表示以系统权限执行,确保能跨会话访问目标用户的上下文;通过JSON序列化/反序列化,方便将远程结果转换为本地可操作的对象。

替代方案:利用WMI查询用户会话的显示配置

如果不想依赖PsExec,也可以通过查询Win32_Desktop类获取用户会话的显示参数(部分系统可能需要调整权限):

$targetPC = "平板主机名/IP"
$desktop = Get-CimInstance -ComputerName $targetPC -ClassName Win32_Desktop | 
           Where-Object { $_.UserName -eq "DefaultUser" }
Write-Host "DefaultUser的屏幕分辨率:$($desktop.ScreenWidth)x$($desktop.ScreenHeight)"

注意:Win32_Desktop返回的是用户会话的桌面配置,部分场景下可能与实际显示分辨率存在差异,建议优先使用PsExec方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:15:44