Describe "InvokeOnRunspace method argument error handling" -tags "Feature" { BeforeAll { $command = [System.Management.Automation.PSCommand]::new() $localRunspace = $host.Runspace } It "Null argument exception should be thrown for null PSCommand argument" { try { [System.Management.Automation.HostUtilities]::InvokeOnRunspace($null, $localRunspace) throw "InvokeOnRunspace method did not throw expected PSArgumentNullException exception" } catch { $_.FullyQualifiedErrorId | Should Be "PSArgumentNullException" } } It "Null argument exception should be thrown for null Runspace argument" { try { [System.Management.Automation.HostUtilities]::InvokeOnRunspace($command, $null) throw "InvokeOnRunspace method did not throw expected PSArgumentNullException exception" } catch { $_.FullyQualifiedErrorId | Should Be "PSArgumentNullException" } } } Describe "InvokeOnRunspace method as nested command" -tags "Feature" { It "Method should successfully invoke command as nested on busy runspace" { $command = [System.Management.Automation.PSCommand]::new() $command.AddScript('"Hello!"') $currentRunspace = $host.Runspace $results = [System.Management.Automation.HostUtilities]::InvokeOnRunspace($command, $currentRunspace) $results[0] | Should Be "Hello!" } } Describe "InvokeOnRunspace method on remote runspace" -tags "Feature" { BeforeAll { if ($IsWindows) { $script:remoteRunspace = New-RemoteRunspace } } AfterAll { if ($script:remoteRunspace) { $script:remoteRunspace.Dispose(); } } It "Method should successfully invoke command on remote runspace" -Skip:(!$IsWindows) { $command = [System.Management.Automation.PSCommand]::new() $command.AddScript('"Hello!"') $results = [System.Management.Automation.HostUtilities]::InvokeOnRunspace($command, $script:remoteRunspace) $results[0] | Should Be "Hello!" } }