Не удалось загрузить модуль «Microsoft.PowerShell.Utility». Для получения дополнительной информации запустите «Импорт-моC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Не удалось загрузить модуль «Microsoft.PowerShell.Utility». Для получения дополнительной информации запустите «Импорт-мо

Сообщение Anonymous »

У меня есть работающее локальное консольное приложение, которое запускает обмен онлайн, используя сертификат CertificateThumbprint, AppID и организацию в качестве учетных данных. Проблема в том, что при преобразовании в приложении-функции и локальном запуске я получил ошибку при импорте модуля Exchangeonline:
[2024-10-07T03:46:44.417Z] Ошибка во время импорта модуля. : Не удалось загрузить модуль «Microsoft.PowerShell.Utility». Для получения дополнительной информации запустите «Import-Module Microsoft.PowerShell.Utility».
Я пробовал искать в браузере исправления, но не нашел решений для большинства запросов.Вот моя функция для подключения обмена онлайн:

Код: Выделить всё

public static Task GetUserMailbox(string appId, string certificatePath, string certificatePassword, string organization, string userPrincipalName, ILogger log)
{
try
{
// Установите для протокола TLS значение 1.2
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType .Tls12;

Код: Выделить всё

    // Optionally bypass SSL certificate validation (not recommended for production)
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

// Load the certificate from the file using the password
var certificate = new X509Certificate2(certificatePath, certificatePassword);

var iss = InitialSessionState.CreateDefault2();
iss.ExecutionPolicy = Microsoft.PowerShell.ExecutionPolicy.Bypass;

using (Runspace remoteRunspace = RunspaceFactory.CreateRunspace(iss))
{
remoteRunspace.Open(); // Ensure the Runspace is opened

using (PowerShell powershell = PowerShell.Create())
{
powershell.Runspace = remoteRunspace;

// Import the Exchange Online module
powershell.AddCommand("Import-Module")
.AddArgument("ExchangeOnlineManagement")
.Invoke();

// Check for errors in Import-Module
if (powershell.HadErrors)
{
foreach (var error in powershell.Streams.Error)
{
log.LogError($"Error during Import-Module: {error}");
}
return Task.CompletedTask; // Stop further execution if the module import fails
}
log.LogInformation("Successfully imported ExchangeOnlineManagement module.");

// Clear the previous command
powershell.Commands.Clear();

// Connect to Exchange Online
powershell.AddCommand("Connect-ExchangeOnline")
.AddParameter("AppId", appId)
.AddParameter("CertificateThumbprint", certificate.Thumbprint)
.AddParameter("Organization", organization)
.AddParameter("ShowBanner", false);
powershell.Invoke();

// Check for errors in Connect-ExchangeOnline
if (powershell.HadErrors)
{
foreach (var error in powershell.Streams.Error)
{
log.LogError($"Error during Connect-ExchangeOnline: {error}");
}
return Task.CompletedTask; // Stop further execution if connection fails
}
log.LogInformation("Successfully connected to Exchange Online.");

// Get user mailbox details using Get-CASMailbox and Select-Object
powershell.Commands.Clear();
powershell.AddCommand("Get-CASMailbox")
.AddParameter("Identity", userPrincipalName)
.AddCommand("Select-Object")
.AddParameter("Property", new string[] { "DisplayName", "UserPrincipalName", "ForwardingSmtpAddress", "OWAEnabled" });
var mailboxResults = powershell.Invoke();

// Check for errors in Get-CASMailbox
if (powershell.HadErrors)
{
foreach (var error in powershell.Streams.Error)
{
log.LogError($"Error during Get-CASMailbox: {error}");
}
return Task.CompletedTask; // Stop if mailbox retrieval fails
}

// Display results
if (mailboxResults != null && mailboxResults.Count > 0)
{
foreach (var result in mailboxResults)
{
log.LogInformation(result.ToString());  // Safely convert PSObject to string
}
}
else
{
log.LogInformation("No mailbox found or no results returned.");
}

// Disconnect from Exchange Online
powershell.Commands.Clear();
powershell.AddCommand("Disconnect-ExchangeOnline")
.AddParameter("Confirm", false);
powershell.Invoke();

// Check for errors in Disconnect-ExchangeOnline
if (powershell.HadErrors)
{
foreach (var error in powershell.Streams.Error)
{
log.LogError($"Error during Disconnect-ExchangeOnline: {error}");
}
}
else
{
log.LogInformation("Successfully disconnected from Exchange Online.");
}
}
}
Ошибка начинается при импорте модуля.
EDIT: добавлена ​​утилита импорта powershell, и появляется эта ошибка:
Исключение: не удается найти встроенный модуль «Microsoft.PowerShell.Utility», совместимый с версией «Core». Убедитесь, что встроенные модули PowerShell доступны. Обычно они поставляются с пакетом PowerShell по пути к модулю $PSHOME и необходимы для правильной работы PowerShell.
Я использую SDK 7.4.5

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-informat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»