2015-08-17 3 views
1

Мне нужен эффективный способ выполнить пакет устранения неполадок инструмента диагностики Microsoft через C# на удаленной машине.Microsoft Diagnostic Tool через C# удаленно

Критерии Troubleshooter является:

  • Run повышен (администратора).
  • Запуск тихо.
  • Пробег без присмотра.

Я нашел несколько способов сделать это через Powershell, однако без успешной работы на нем.

Если вы используете Powershell, мне нужно, чтобы он запускался с учетными данными пользователя, запускающего приложение C#, или, по крайней мере, запрашивал учетные данные.

Мне удалось запустить средство устранения неполадок через msdt.exe и cmd через WMI. Однако это не выполняется, и все, что я вижу, это процесс, выполняемый в диспетчере задач.

Пакет устранения неполадок, который я пытаюсь выполнить, это AERO.

Целевая операционная система - Windows 7, и она находится в доменной сети.

+1

Звучит опасно! Но независимо от того, http://superuser.com/ может служить вам лучше? –

+0

Я считаю, что это не опасно из-за того, что все, что может сделать Troubleshooter, возможно с WMI. Причина, по которой я не хочу переписывать все в WMI, заключается в том, что она резко замедляет время устранения неполадок :( – Unknown

+1

Просто предположите, что если вы являетесь администратором этих машин, вы можете выполнить его с помощью своей учетной записи на всех машинах. через AD. –

ответ

2

Вы можете создать задачу в планировщике задач на удаленном компьютере, указав исполняемый файл с параметрами, и вы можете указать как учетные данные, так и флаг «Выполнение с наивысшими привилегиями (повышен)». Вы можете использовать сценарий Powershell, который запускает пакет устранения неполадок Aero в качестве автоматической задачи с коллекцией журналов. Затем вы разрешите ручной запуск этой задачи, а затем, как только возникнет такая необходимость, вы можете запустить запуск запланированной задачи через schtasks.exe /run. Таким образом, автоматическая проверка достигается с помощью сценария Powershell like here (Windows 7 Resource Kit book), учетные данные и повышенный пробег предоставляются механизмом планировщика заданий. Этот сценарий выглядит следующим образом:

Import-Module TroubleshootingPack 
$aero=Get-TroubleshootingPack $env:systemroot\diagnostics\system\aero 
Invoke-TroubleshootingPack -pack $aero -result "c:\temp" -unattend 
+0

Очень интересный подход! Я постараюсь сделать это завтра :) – Unknown

+1

Это интересный подход, поскольку он заставляет команду запускаться на локальном сеансе, поэтому, если есть пользователь, он может запрашивать у них учетные данные. Вы могли бы даже бросить в них пару ящиков сообщений, чтобы они знали, что случилось. –

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