Запустите PowerShell из C # в неинтерактивном режиме - PullRequest
0 голосов
/ 25 апреля 2018

Я запускаю некоторые скрипты PowerShell на C # с использованием пространства имен System.Management.Automation.Это работает отлично, за исключением того, что когда я вызываю скрипт, я очень кратко вижу, как окно команды мигает на экране, а затем исчезает.Это поведение неприемлемо в моем приложении.

Я могу избежать этого поведения, запустив новый процесс и установив CreateNoWindow = true, однако я бы действительно предпочел использовать управляемую библиотеку PowerShell.Как я могу сделать это неинтерактивным способом, который не мигает на экране?

Пример некоторого PowerShell, который вызывает мигание окна:

using (PowerShell ps = PowerShell.Create())
{
    ps.AddCommand(@"Get-WindowsUpdateLog");
    ps.AddParameter(@"-LogPath", @"C:\WindowsUpdate.Log");
    var psOutput = ps.Invoke();
}

1 Ответ

0 голосов
/ 25 апреля 2018

Я полагаю, что вы видите вспышку, потому что функция Get-WindowsUpdateLog внутренне вызывает tracerpt.exe, которая является консольным приложением.Запуск консольного приложения из графического интерфейса приводит к вспышке.(Вы увидите ту же вспышку, если запустите GetWindowsUpdateLog от ISE.) К сожалению, вы ничего не можете с этим поделать.Вы можете изменить приложение Win32 для выделения дескриптора консоли при запуске, управляющего , когда вы видите флэш-память, но все равно ее видите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...