Ошибка System.Automation.Runspaces в проекте .NET Core - PullRequest
0 голосов
/ 26 апреля 2018

Я попытался запустить кусок кода в консольном приложении - C# (.NET Framework 4.5 проект), и он работает. Но когда я попытался перенести его на ASP.NET Core 2.0, код вернул ошибку (как показано ниже).

    using System.Management.Automation.Runspaces;

    public void Powershell()
    {
        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();
        Pipeline pipeline = runspace.CreatePipeline();
        pipeline.Commands.AddScript("Import-Module AzureAD -Force;");
        pipeline.Commands.AddScript("$password = ConvertTo-SecureString " + "\"Accenture01\"" + " -AsPlainText -Force");
        pipeline.Commands.AddScript("$Cred = New-Object System.Management.Automation.PSCredential (" + "\"TestID01@eso.dev.accenture.com\"" + ", $password)");
        pipeline.Commands.AddScript("Connect-AzureAD -Credential $Cred");
        pipeline.Commands.AddScript("Get-AzureADApplication -Filter " + "\"DisplayName eq " + "\'TestApp\'" + "\"");
        var result = pipeline.Invoke();
    }

Ошибка равна

"' System.PlatformNotSupportedException:' ReflectionOnly загружается не поддерживается на этой платформе. '"

Есть идеи по этому поводу?

1 Ответ

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

Используйте Powershell.Create() вместо конвейера, прежде чем продолжить, вызовите Import-Module, используйте Add-Command вместо AddScript

Попробуйте это: (после открытия пространства выполнения, например, runspace.Open();)

using (var powershell = PowerShell.Create())
{
    powershell.Runspace = runspace;
    powershell.Commands.AddCommand("Import-Module").AddArgument("AzureAD");
    powershell.Invoke();
    powershell.Commands.Clear();
    powershell.AddScript("$password = ConvertTo-SecureString " + "\"Accenture01\"" + " -AsPlainText -Force");
    powershell.AddScript("$Cred = New-Object System.Management.Automation.PSCredential (" + "\"TestID01@eso.dev.accenture.com\"" + ", $password)");
    powershell.AddScript("Connect-AzureAD -Credential $Cred");
    powershell.AddScript("Get-AzureADApplication -Filter " + "\"DisplayName eq " + "\'TestApp\'" + "\"");
    powershell.Invoke();
    var results = powershell.Invoke();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...