diff --git a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSForwardingHostCmdlet.cs b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSForwardingHostCmdlet.cs
index 9619c7c..23e7b98 100644
--- a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSForwardingHostCmdlet.cs
+++ b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSForwardingHostCmdlet.cs
@@ -33,28 +33,35 @@ namespace PSOPNSenseAPI.Cmdlets
///
/// Processes the cmdlet
///
- protected override void ProcessRecord()
+ protected override void ProcessRecordInternal()
{
- try
- {
- var dnsService = new DNSService(ApiClient, Logger);
+ var dnsService = new DNSService(ApiClient, Logger);
- if (ParameterSetName == "ByUuid")
- {
- var task = Task.Run(async () => await dnsService.GetDNSForwardingHostAsync(Uuid));
- var result = task.GetAwaiter().GetResult();
- WriteObject(result.Host);
- }
- else
- {
- var task = Task.Run(async () => await dnsService.GetDNSForwardingHostsAsync());
- var result = task.GetAwaiter().GetResult();
- WriteObject(result.Rows, true);
- }
- }
- catch (Exception ex)
+ if (ParameterSetName == "ByUuid")
{
- HandleException(ex);
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => dnsService.GetDNSForwardingHostAsync(Uuid));
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
+ {
+ return;
+ }
+
+ WriteObject(result.Host);
+ }
+ else
+ {
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => dnsService.GetDNSForwardingHostsAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
+ {
+ return;
+ }
+
+ WriteObject(result.Rows, true);
}
}
}
diff --git a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSOverrideCmdlet.cs b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSOverrideCmdlet.cs
index cb67318..cd0a914 100644
--- a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSOverrideCmdlet.cs
+++ b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseDNSOverrideCmdlet.cs
@@ -33,28 +33,35 @@ namespace PSOPNSenseAPI.Cmdlets
///
/// Processes the cmdlet
///
- protected override void ProcessRecord()
+ protected override void ProcessRecordInternal()
{
- try
- {
- var dnsService = new DNSService(ApiClient, Logger);
+ var dnsService = new DNSService(ApiClient, Logger);
- if (ParameterSetName == "ByUuid")
- {
- var task = Task.Run(async () => await dnsService.GetDNSOverrideAsync(Uuid));
- var result = task.GetAwaiter().GetResult();
- WriteObject(result.Host);
- }
- else
- {
- var task = Task.Run(async () => await dnsService.GetDNSOverridesAsync());
- var result = task.GetAwaiter().GetResult();
- WriteObject(result.Rows, true);
- }
- }
- catch (Exception ex)
+ if (ParameterSetName == "ByUuid")
{
- HandleException(ex);
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => dnsService.GetDNSOverrideAsync(Uuid));
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
+ {
+ return;
+ }
+
+ WriteObject(result.Host);
+ }
+ else
+ {
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => dnsService.GetDNSOverridesAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
+ {
+ return;
+ }
+
+ WriteObject(result.Rows, true);
}
}
}
diff --git a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseFirmwareCmdlet.cs b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseFirmwareCmdlet.cs
index dcfb107..15b699b 100644
--- a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseFirmwareCmdlet.cs
+++ b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseFirmwareCmdlet.cs
@@ -55,57 +55,84 @@ namespace PSOPNSenseAPI.Cmdlets
///
/// Processes the cmdlet
///
- protected override void ProcessRecord()
+ protected override void ProcessRecordInternal()
{
- try
+ var firmwareService = new FirmwareService(ApiClient, Logger);
+
+ switch (ParameterSetName)
{
- var firmwareService = new FirmwareService(ApiClient, Logger);
+ case "Changelog":
+ // Use our safe execution method
+ var changelogResult = ExecuteAsyncTask(() => firmwareService.GetChangelogAsync());
- switch (ParameterSetName)
- {
- case "Changelog":
- var changelogTask = Task.Run(async () => await firmwareService.GetChangelogAsync());
- var changelogResult = changelogTask.GetAwaiter().GetResult();
- WriteObject(changelogResult.Changelog);
- break;
+ // Only continue if no exception occurred
+ if (ProcessingException != null || changelogResult == null)
+ {
+ return;
+ }
- case "Audit":
- var auditTask = Task.Run(async () => await firmwareService.GetAuditAsync());
- var auditResult = auditTask.GetAwaiter().GetResult();
- WriteObject(auditResult.Audit, true);
- break;
+ WriteObject(changelogResult.Changelog);
+ break;
- case "Health":
- var healthTask = Task.Run(async () => await firmwareService.GetHealthAsync());
- var healthResult = healthTask.GetAwaiter().GetResult();
- WriteObject(healthResult.Health);
- break;
+ case "Audit":
+ // Use our safe execution method
+ var auditResult = ExecuteAsyncTask(() => firmwareService.GetAuditAsync());
- case "Check":
- var checkTask = Task.Run(async () => await firmwareService.CheckForUpdatesAsync());
- var checkResult = checkTask.GetAwaiter().GetResult();
- WriteObject($"Check for updates: {checkResult.Status}");
- break;
+ // Only continue if no exception occurred
+ if (ProcessingException != null || auditResult == null)
+ {
+ return;
+ }
- default:
- var statusTask = Task.Run(async () => await firmwareService.GetStatusAsync());
- var statusResult = statusTask.GetAwaiter().GetResult();
+ WriteObject(auditResult.Audit, true);
+ break;
- var firmware = new PSObject();
- firmware.Properties.Add(new PSNoteProperty("Status", statusResult.Status));
- firmware.Properties.Add(new PSNoteProperty("Connection", statusResult.Connection));
- firmware.Properties.Add(new PSNoteProperty("DownloadSize", statusResult.DownloadSize));
- firmware.Properties.Add(new PSNoteProperty("LastCheck", statusResult.LastCheck));
- firmware.Properties.Add(new PSNoteProperty("UpgradeMessage", statusResult.UpgradeMessage));
- firmware.Properties.Add(new PSNoteProperty("Updates", statusResult.Updates));
-
- WriteObject(firmware);
- break;
- }
- }
- catch (Exception ex)
- {
- HandleException(ex);
+ case "Health":
+ // Use our safe execution method
+ var healthResult = ExecuteAsyncTask(() => firmwareService.GetHealthAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || healthResult == null)
+ {
+ return;
+ }
+
+ WriteObject(healthResult.Health);
+ break;
+
+ case "Check":
+ // Use our safe execution method
+ var checkResult = ExecuteAsyncTask(() => firmwareService.CheckForUpdatesAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || checkResult == null)
+ {
+ return;
+ }
+
+ WriteObject($"Check for updates: {checkResult.Status}");
+ break;
+
+ default:
+ // Use our safe execution method
+ var statusResult = ExecuteAsyncTask(() => firmwareService.GetStatusAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || statusResult == null)
+ {
+ return;
+ }
+
+ var firmware = new PSObject();
+ firmware.Properties.Add(new PSNoteProperty("Status", statusResult.Status));
+ firmware.Properties.Add(new PSNoteProperty("Connection", statusResult.Connection));
+ firmware.Properties.Add(new PSNoteProperty("DownloadSize", statusResult.DownloadSize));
+ firmware.Properties.Add(new PSNoteProperty("LastCheck", statusResult.LastCheck));
+ firmware.Properties.Add(new PSNoteProperty("UpgradeMessage", statusResult.UpgradeMessage));
+ firmware.Properties.Add(new PSNoteProperty("Updates", statusResult.Updates));
+
+ WriteObject(firmware);
+ break;
}
}
}
diff --git a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseGatewayCmdlet.cs b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseGatewayCmdlet.cs
index 47c269f..27a3bcf 100644
--- a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseGatewayCmdlet.cs
+++ b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseGatewayCmdlet.cs
@@ -39,69 +39,81 @@ namespace PSOPNSenseAPI.Cmdlets
///
/// Processes the cmdlet
///
- protected override void ProcessRecord()
+ protected override void ProcessRecordInternal()
{
- try
- {
- var gatewayService = new GatewayService(ApiClient, Logger);
+ var gatewayService = new GatewayService(ApiClient, Logger);
- if (ParameterSetName == "ByUuid")
+ if (ParameterSetName == "ByUuid")
+ {
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => gatewayService.GetGatewayAsync(Uuid));
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
{
- var task = Task.Run(async () => await gatewayService.GetGatewayAsync(Uuid));
- var result = task.GetAwaiter().GetResult();
- WriteObject(result.Gateway);
+ return;
+ }
+
+ WriteObject(result.Gateway);
+ }
+ else
+ {
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => gatewayService.GetGatewaysAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
+ {
+ return;
+ }
+
+ if (IncludeStatus.IsPresent)
+ {
+ // Use our safe execution method
+ var statusResult = ExecuteAsyncTask(() => gatewayService.GetGatewayStatusAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || statusResult == null)
+ {
+ return;
+ }
+
+ foreach (var gateway in result.Rows)
+ {
+ var gatewayWithStatus = new PSObject();
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Uuid", gateway.Uuid));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Name", gateway.Name));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Interface", gateway.Interface));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("IpAddress", gateway.IpAddress));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("MonitorIp", gateway.MonitorIp));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Description", gateway.Description));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("IsDefault", gateway.IsDefault == "1"));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Disabled", gateway.Disabled == "1"));
+
+ if (statusResult.Items.ContainsKey(gateway.Name))
+ {
+ var status = statusResult.Items[gateway.Name];
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Status", status.Status));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("RTT", status.RTT));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("StdDev", status.StdDev));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Loss", status.Loss));
+ }
+ else
+ {
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Status", "Unknown"));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("RTT", "N/A"));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("StdDev", "N/A"));
+ gatewayWithStatus.Properties.Add(new PSNoteProperty("Loss", "N/A"));
+ }
+
+ WriteObject(gatewayWithStatus);
+ }
}
else
{
- var task = Task.Run(async () => await gatewayService.GetGatewaysAsync());
- var result = task.GetAwaiter().GetResult();
-
- if (IncludeStatus.IsPresent)
- {
- var statusTask = Task.Run(async () => await gatewayService.GetGatewayStatusAsync());
- var statusResult = statusTask.GetAwaiter().GetResult();
-
- foreach (var gateway in result.Rows)
- {
- var gatewayWithStatus = new PSObject();
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Uuid", gateway.Uuid));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Name", gateway.Name));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Interface", gateway.Interface));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("IpAddress", gateway.IpAddress));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("MonitorIp", gateway.MonitorIp));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Description", gateway.Description));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("IsDefault", gateway.IsDefault == "1"));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Disabled", gateway.Disabled == "1"));
-
- if (statusResult.Items.ContainsKey(gateway.Name))
- {
- var status = statusResult.Items[gateway.Name];
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Status", status.Status));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("RTT", status.RTT));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("StdDev", status.StdDev));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Loss", status.Loss));
- }
- else
- {
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Status", "Unknown"));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("RTT", "N/A"));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("StdDev", "N/A"));
- gatewayWithStatus.Properties.Add(new PSNoteProperty("Loss", "N/A"));
- }
-
- WriteObject(gatewayWithStatus);
- }
- }
- else
- {
- WriteObject(result.Rows, true);
- }
+ WriteObject(result.Rows, true);
}
}
- catch (Exception ex)
- {
- HandleException(ex);
- }
}
}
}
diff --git a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseRouteCmdlet.cs b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseRouteCmdlet.cs
index 5241448..e5c9017 100644
--- a/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseRouteCmdlet.cs
+++ b/src/PSOPNSenseAPI/Cmdlets/GetOPNSenseRouteCmdlet.cs
@@ -33,28 +33,35 @@ namespace PSOPNSenseAPI.Cmdlets
///
/// Processes the cmdlet
///
- protected override void ProcessRecord()
+ protected override void ProcessRecordInternal()
{
- try
- {
- var routeService = new RouteService(ApiClient, Logger);
+ var routeService = new RouteService(ApiClient, Logger);
- if (ParameterSetName == "ByUuid")
- {
- var task = Task.Run(async () => await routeService.GetRouteAsync(Uuid));
- var result = task.GetAwaiter().GetResult();
- WriteObject(result.Route);
- }
- else
- {
- var task = Task.Run(async () => await routeService.GetRoutesAsync());
- var result = task.GetAwaiter().GetResult();
- WriteObject(result.Rows, true);
- }
- }
- catch (Exception ex)
+ if (ParameterSetName == "ByUuid")
{
- HandleException(ex);
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => routeService.GetRouteAsync(Uuid));
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
+ {
+ return;
+ }
+
+ WriteObject(result.Route);
+ }
+ else
+ {
+ // Use our safe execution method
+ var result = ExecuteAsyncTask(() => routeService.GetRoutesAsync());
+
+ // Only continue if no exception occurred
+ if (ProcessingException != null || result == null)
+ {
+ return;
+ }
+
+ WriteObject(result.Rows, true);
}
}
}
diff --git a/src/PSOPNSenseAPI/PSOPNSenseAPI.psd1 b/src/PSOPNSenseAPI/PSOPNSenseAPI.psd1
index 0496d47..ff0ec85 100644
--- a/src/PSOPNSenseAPI/PSOPNSenseAPI.psd1
+++ b/src/PSOPNSenseAPI/PSOPNSenseAPI.psd1
@@ -3,7 +3,7 @@
RootModule = 'lib\PSOPNSenseAPI.dll'
# Version number of this module.
- ModuleVersion = '2025.04.15.1249'
+ ModuleVersion = '2025.04.15.1253'
# Supported PSEditions
CompatiblePSEditions = @('Desktop', 'Core')