Решено: я смог решить эту проблему, породив новый процесс 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 также не выдает никаких ошибок. Есть идеи, что может быть не так?