Invoking PSRemotely
Invoking PSRemotely to run remote ops validation, is very similar to Pester's Invoke-Pester.
Run all the PSRemotely tests placed in a folder
Invoke-PSRemotely C:\EnvironmentValidation
Run a specific PSRemotely test
Invoke-PSRemotely -Script C:\EnvironmentValidation\ComputeNodeTests.PSRemotely.ps1
Run a specific PSRemotely test and supply parameters & arguments to the PSRemotely file.
Invoke-PSRemotely -Script @{
Path='C:\EnvironmentValidation\StorageNodeTests.PSRemotely.ps1';
Parameters = @{Credential=$(Get-Credential)};
Arguments = @(.\EnvironmentData.json)
}
This command runs C:\EnvironmentValidation\StorageNodeTests.PSRemotely.ps1 file. The PSRemotely file is expecting the path to configuration data file (.json or .psd1) and Credential to be used to open PSSession to the nodes. It runs the tests in the StorageNodeTests.PSRemotely.ps1 file using the following parameters:
C:\EnvironmentValidation\StorageNodeTests.PSRemotely.ps1 .\EnvironmentData.json -Credential <CredentialObject>
````
## Run failed tests on the Remote nodes
Now while working with ops validation, you might have scripts or DSC configuration in place which fix the issue.
So suppose, you ran the tests like below to begin with against your compute nodes in the Environment :-
```powershell
Invoke-PSRemotely -Script C:\EnvironmentValidation\ComputeNodeTests.PSRemotely.ps1
And suppose the ops validation tests named "TestDNSConnectivity" failed on the remote node named 'ComputeNode1'. You have fixed the issue and want to only run the failed test on the node, you can use the below method :-
$TestsTobeRunObejct = [pscustomobject]@{NodeName='ComputeNode1';Tests=@(@{Name='TestDNSConnectivity'})}
Invoke-PSRemotely -JSONInput $($TestsTobeRunObejct | ConvertTo-Json)
The above JSON input object instructs PSRemotely to use the earlier created PSSession to connect to the node and run the required tests on the remote node.