远程通过Powershell收集[System.Windows.Forms.Screen] :: AllScreens

时间:2013-07-26 17:03:54

标签: powershell wmi

我正在创建一个powershell脚本来收集有关桌面视频分辨率的信息,下面是代码的一部分。我遇到的问题是远程使用我的脚本。使用输入文件并连接到远程主机工作正常,但使用“$ ColsResolutions = [System.Windows.Forms.Screen] :: AllScreens”从远程计算机而不是本地收集数据很麻烦。

正如您可以看到“Get-WmiObject -computername $ Target”和simliar远程工作正常,但如何将其与AllScreens cmd一起使用?就目前而言,该脚本完美无缺,除了它收集本地AllSCreens而不是远程主机。有可能吗?

Write-Output "..Monitor Information"
$ColsMonitors = Get-WmiObject -computername $Target Win32_PnPEntity

Write-Output "..Video Information"
$ColsVideos = Get-WmiObject -computername $Target win32_videocontroller

Add-Type -AssemblyName System.Windows.Forms
$ColsResolutions = [System.Windows.Forms.Screen]::AllScreens

修改 注意,我使用的是Win32_DesktopMonitor的AllSCreens,因为我的工作站包含多个视频卡&不同分辨率的显示器。我需要审核并检索所有显示的信息。

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。 Screen.AllScreens没有远程版本,因此您需要使用PowerShell远程处理在远程计算机上调用该方法。如果使用PowerShell远程处理,则最终会使用具有默认桌面的PowerShell Windows服务。此桌面不可见,属于系统帐户,没有真正的屏幕。因此它根本不会给你想要的结果。另请参阅here