2013-07-26 5 views
0

Я создаю скрипт powershell для сбора информации о разрешении видео в рабочем столе, ниже - часть кода. Проблема, с которой я сталкиваюсь, заключается в удаленном использовании моего сценария. Использование входного файла и подключение к удаленному хосту прекрасно работают, но сбор данных с удаленного компьютера вместо локального с использованием «$ ColsResolutions = [System.Windows.Forms.Screen] :: AllScreens» вызывает проблемы.Gather [System.Windows.Forms.Screen] :: AllScreens через Powershell удаленно

Как вы видите, «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 

EDIT: Обратите внимание, я использую AllSCreens insteasd из Win32_DesktopMonitor, потому что у меня есть рабочие станции, которые содержат несколько видеокарт & мониторов с различными разрешениями. И мне нужно провести аудит и получить информацию для всех дисплеев.

ответ

0

Нет, это невозможно. Screen.AllScreens не имеет удаленной версии, поэтому вам необходимо использовать удаленный PowerShell для вызова этого метода на удаленном компьютере. Если вы используете удаленный PowerShell, вы попадаете в службу Windows PowerShell с рабочим столом по умолчанию. Этот рабочий стол не отображается, относится к системной учетной записи и не имеет реальных экранов. Поэтому он просто не даст вам результат, который вы хотите. Также см. here.

Смежные вопросы