fix: resolve Exchange runspace and PowerShell invoke API mismatches

This commit is contained in:
Meik
2026-02-27 09:26:28 +01:00
parent c842d0e756
commit 47e00b10fa
2 changed files with 13 additions and 21 deletions

View File

@@ -62,32 +62,24 @@ namespace C4IT.LIAM
var runspace = RunspaceFactory.CreateRunspace(connectionInfo);
LogEntry($"Opening Exchange runspace (timeout: {RunspaceOpenTimeout.TotalSeconds:0}s) for endpoint '{_exchangeUri}'", LogLevels.Debug);
IAsyncResult openResult = null;
try
var openTask = Task.Run(() => runspace.Open());
if (!openTask.Wait(RunspaceOpenTimeout))
{
openResult = runspace.BeginOpen(null, null);
if (!openResult.AsyncWaitHandle.WaitOne(RunspaceOpenTimeout))
try
{
try
{
runspace.Dispose();
}
catch (Exception disposeEx)
{
LogException(disposeEx);
}
throw new TimeoutException(
$"Timeout while opening Exchange runspace after {RunspaceOpenTimeout.TotalSeconds:0} seconds.");
runspace.Dispose();
}
catch (Exception disposeEx)
{
LogException(disposeEx);
}
runspace.EndOpen(openResult);
}
finally
{
openResult?.AsyncWaitHandle?.Close();
throw new TimeoutException(
$"Timeout while opening Exchange runspace after {RunspaceOpenTimeout.TotalSeconds:0} seconds.");
}
openTask.GetAwaiter().GetResult();
LogEntry("Exchange runspace opened successfully", LogLevels.Debug);
return runspace;
}

View File

@@ -19,7 +19,7 @@ namespace C4IT.LIAM
{
private static readonly TimeSpan PowerShellInvokeTimeout = TimeSpan.FromSeconds(120);
private static Collection<PSObject> InvokePowerShellWithTimeout(PowerShell ps, TimeSpan timeout, string operationName)
private static PSDataCollection<PSObject> InvokePowerShellWithTimeout(PowerShell ps, TimeSpan timeout, string operationName)
{
IAsyncResult asyncResult = null;
try