Несовместимость вызова командлета Powershell - PullRequest
1 голос
/ 03 ноября 2019

Я пытаюсь вызвать конкретный командлет «Get-VpnConnection» из экземпляра PowerShell в службе Windows (.NET Framework 4.7).

Мне удалось успешно вызвать этот командлет в команделинейный проект (также .NET Framework 4.7) и был в состоянии вызвать другие командлеты из этой службы (например, «Get-Date»). Я выбрал самые высокие разрешения учетной записи для установщика пакета (LocalSystem).

Вот отрывок из того, что я пробовал:

            using (PowerShell ps = PowerShell.Create())
            {
                ps.AddCommand("Get-VpnConnection");
                Collection<PSObject> results = ps.Invoke();
                WriteToFile(results.Count.ToString());
            }

Когда я запускаю это из службы, WriteToFile (метод, который я создал для записи в текстовый файл журнала)в базовом каталоге программы) напишет «0» в журнал, тогда как для «Get-Date» будет написано «1». Когда я запускаю это из основной функции проекта командной строки, я получаю «1», как и ожидалось. Никаких исключений не выдается, и PowerShell Stream (Error или Verbose) ничего не содержит. Это похоже на то, как будто командлет не распознается как действительный, поскольку предоставление в AddCommand абсурдного аргумента приведет к идентичному результату.

Спасибо, что уделили время.

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