Невозможно подключиться к серверу сайта SCCM через основное приложение. NET с помощью Powershell - PullRequest
0 голосов
/ 27 февраля 2020

Решено: я смог решить эту проблему, породив новый процесс Powershell внутри процесса Powershell, порожденного моим приложением. NET, и поместил туда код для подключения к сайту. Я предполагаю, что дополнительный слой Powershell позволил приложению. NET игнорировать любые проблемы с сетью или безопасностью.

при использовании. NET Core 3.1 и Powershell v5

У меня есть . NET Базовое приложение, которое вызывает скрипт Powershell для создания приложений в SCCM через модуль ConfigManager. Проблема в том, что я не могу подключиться к серверу сайта.

Код C#, который вызывает скрипт Powershell:

public async Task<IActionResult> OnPost()

{

    if (ModelState.IsValid)

    {

        Runspace runspace = RunspaceFactory.CreateRunspace();

        runspace.Open();

        Pipeline pipeline = runspace.CreatePipeline();

        string command = "Set-ExecutionPolicy Bypass -Scope CurrentUser                                   
            -Confirm:$false;C:\\ProgramData\\Build-App.ps1";

        pipeline.Commands.AddScript(command);

        Collection <PSObject> results = pipeline.Invoke();

        runspace.Close();

    }

}

, а код Powershell:

$SiteCode = "SITE_CODE" # Site code

$ProviderMachineName = "PROVIDER_MACHINE_NAME" # SMS Provider machine name

Import-Module "$($ENV:SMS_ADMIN_UI_PATH)\..\ConfigurationManager.psd1"

New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName

Get-PSDrive | out-file C:\ProgramData\sites.txt

В последней строке powershell выводятся все сайты, к которым я в данный момент подключен, но сервер сайта отсутствует в sites.txt, когда я запускаю сценарий через приложение. NET. Однако, когда я запускаю скрипт в локальной подсказке Powershell, сервер сайта появляется в sites.txt, потому что я могу к нему подключиться.

Я знаю, что Powershell технически не поддерживается в. NET Core, однако подключение к серверу сайта SCCM - единственное, что я не смог сделать. Приложение. NET также не выдает никаких ошибок. Есть идеи, что может быть не так?

...