Невозможно выполнить команды powershell из кода в контейнере Docker или в Azure. - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть вопрос о ядре powershell в контейнере Docker или в веб-приложении Azure.Я разрабатываю некоторое веб-задание (основное приложение .net), которое пытается выполнять команды powershell с использованием пакетов Microsoft.PowerShell.Commands.Diagnostics, Microsoft.PowerShell.SDK, Microsoft.WSMan.Management (версия 6.2.0).В моей локальной среде (я установил powershell 6 и у меня есть powershell 5 по умолчанию), веб-работа работает без проблем.Затем я пытаюсь развернуть webjob в контейнере Docker Linux.В dockerfile есть несколько инструкций по установке ядра PowerShell 6.2.0 в контейнере.Итак, Docker-контейнер (ОС Debian 9) с моим веб-заданием работает с установленным ядром PowerShell.Затем мой код пытается выполнить следующую команду:

using (PowerShell ps = PowerShell.Create())
{
   ps.AddScript("Get-PackageProvider -ListAvailable");
   var results = ps.Invoke();
}

и после этого я получаю следующую ошибку:

Необработанное исключение: System.AggregateException: произошла одна или несколько ошибок.(Термин «Get-PackageProvider» не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку..) ---> System.Management.Automation.CommandNotFoundException: термин «Get-PackageProvider» не распознается как имя командлета, функции, файла сценария или работоспособной программы.Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.в System.Management.Automation.CommandDiscovery.LookupCommandInfo (String commandName, CommandTypes commandTypes, SearchResolutionOptions searchResolutionOptions, CommandOrigin commandOrigin, контекст ExecutionContext) в System.Management.Automation.CommandDiscovery.LookxtOrimentOrigeOriginOrigeOriginOrigeOriginOrigeOriginOrigeOriginOrigeOriginO.Automation.CommandDiscovery.в System.Management.Automation.PipelineOps.AddCommand (PipelineProcessor pipe, CommandParameterInternal [] commandElements, CommandBaseAst commandBaseAst, CommandRedirection [] перенаправления, контекст ExecutionContext) в System.Management.Automation.PipelineOps.InvokePipeinput, Boolean ignoreInput, CommandParameterInternal [] [] pipeElements, CommandBaseAst [] pipeElementAsts, CommandRedirection [] [] commandRedirections, FunctionContext funcContext) в System.Management.Automation.Interpreter.ActionCallInstruction6.Run (InterpretedFrament).Interpreter.EnterTryCatchFinallyInstruction.Run (кадр InterpretedFrame) --- конец трассировки стека внутренних исключений ---

Та же проблема, что и у меня в Azure.Когда я запускаю webjob, я получаю эту ошибку.Я уже погуглил много источников и перепробовал много разных решений, но ни одно из них мне не помогло.Не могли бы вы мне помочь, пожалуйста?Почему эта проблема не воспроизводится в моей локальной среде, а только в лазури и контейнере?

Спасибо!

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