Here is the general workflow over a PSRemoting session over SSH, for example spawned with Invoke-Command -HostName foo { 'test' }:
sequenceDiagram
    box Client Machine
    actor C as Pwsh Client
    participant S1 as ssh client
    end| # Copyright: (c) 2025, Jordan Borean (@jborean93) <[email protected]> | |
| # MIT License (see LICENSE or https://opensource.org/licenses/MIT) | |
| # Added GetLastErrorRecord | |
| #Requires -Module @{ ModuleName = 'Ctypes'; ModuleVersion = '0.3.0' } | |
| using namespace System.ComponentModel | |
| using namespace System.Management.Automation | |
| using namespace System.Runtime.InteropServices | |
| using namespace System.Security.Principal | 
| # Copyright: (c) 2025, Jordan Borean (@jborean93) <[email protected]> | |
| # MIT License (see LICENSE or https://opensource.org/licenses/MIT) | |
| using namespace Microsoft.CodeAnalysis | |
| using namespace Microsoft.CodeAnalysis.CSharp | |
| using namespace Microsoft.CodeAnalysis.Emit | |
| using namespace Microsoft.CodeAnalysis.Text | |
| using namespace Microsoft.PowerShell.Commands | |
| using namespace System.Collections.Generic | |
| using namespace System.IO | 
| # Copyright: (c) 2025, Jordan Borean (@jborean93) <[email protected]> | |
| # MIT License (see LICENSE or https://opensource.org/licenses/MIT) | |
| using namespace System.Net | |
| using namespace System.Net.Security | |
| Function Disable-CertificateTrust { | |
| [CmdletBinding()] | |
| param () | 
| # Copyright: (c) 2025, Jordan Borean (@jborean93) <[email protected]> | |
| # MIT License (see LICENSE or https://opensource.org/licenses/MIT) | |
| using namespace System.IO | |
| using namespace System.Management.Automation | |
| using namespace System.Net | |
| using namespace System.Security.Cryptography | |
| Function Import-PemEncodedRsaKey { | |
| <# | 
| # Copyright: (c) 2025, Jordan Borean (@jborean93) <[email protected]> | |
| # MIT License (see LICENSE or https://opensource.org/licenses/MIT) | |
| using namespace System.DirectoryServices | |
| using namespace System.Formats.Asn1 | |
| using namespace System.Management.Automation | |
| using namespace System.Numerics | |
| using namespace System.Security.Cryptography.X509Certificates | |
| Function Get-CertificateTemplateInformation { | 
| # Copyright: (c) 2025, Jordan Borean (@jborean93) <[email protected]> | |
| # MIT License (see LICENSE or https://opensource.org/licenses/MIT) | |
| Function Get-LapsADUpdateTime { | |
| <# | |
| .SYNOPSIS | |
| Gets the Windows LAPS Update Time. | |
| .DESCRIPTION | |
| Gets the Windows LAPS Update Time for the specified computer account. The output value is a DateTime object representing the update time as a UTC date time. | 
| # Copyright: (c) 2025, Jordan Borean (@jborean93) <[email protected]> | |
| # MIT License (see LICENSE or https://opensource.org/licenses/MIT) | |
| Function New-CommonTaskTriggerProp { | |
| [OutputType([hashtable])] | |
| [CmdletBinding()] | |
| param ( | |
| [Parameter()] | |
| [switch] | |
| $Disable, | 
| $k32 = New-CtypesLib Kernel32.dll | |
| $free = $total = $totalFree = [int64]0 | |
| $res = $k32.SetLastError().GetDiskFreeSpaceExW( | |
| $k32.MarshalAs('C:\', 'LPWStr'), | |
| [ref]$free, | |
| [ref]$total, | |
| [ref]$totalFree) | |
| if (-not $res) { | |
| throw [System.ComponentModel.Win32Exception]::new($k32.LastError) | 
| using System; | |
| using System.Management.Automation.Remoting; | |
| using System.Reflection; | |
| using System.Threading; | |
| using System.Threading.Tasks; | |
| #nullable enable | |
| /* | |
| This code uses internal APIs of the PowerShell remoting system to create the |