[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