Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #region: Workaround for SelfSigned Cert and force TLS 1.2
- add-type @”
- using System.Net;
- using System.Security.Cryptography.X509Certificates;
- public class TrustAllCertsPolicy : ICertificatePolicy {
- public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate,WebRequest request, int certificateProblem) {
- return true;
- }
- }
- “@
- [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
- [System.Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
- #endregion
- #region Set the stage
- $Credentials = Get-Credential -Message "Enter credentials for SRS"
- $Headers = @{
- "accept" = "application/json"
- "content-type" = "application/json"
- }
- #endregion
- #region Logon
- Write-Host "Logging on..."
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/auth/login"
- Method = "POST"
- Headers = $Headers
- Credential = $Credentials
- }
- $Logon = Invoke-WebRequest @WebRequest
- $Headers.Add('X-SRS-API-KEY', $Logon.Headers['X-SRS-API-KEY'])
- #endregion
- #region Create Runspace
- Write-Host "Creating a new runspace..."
- $Body = @{
- name = 'MyRunSpace'
- run_vc_connection_script = $true
- }
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/runspaces"
- Method = "POST"
- Headers = $Headers
- Credential = $Credentials
- }
- $WebRequest.Add('Body', ($Body | ConvertTo-Json))
- $RunSpace = Invoke-WebRequest @WebRequest
- $RunSpace = $RunSpace.Content | ConvertFrom-Json
- #endregion
- #region Check runspace status
- Write-Host "Checking the runspace status..."
- while ($RunSpace.state -eq 'Creating') {
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/runspaces/$($RunSpace.id)"
- Method = 'GET'
- Headers = $headers
- Credential = $Credentials
- }
- $getRunSpace = Invoke-WebRequest @WebRequest
- $RunSpace = $getRunSpace.Content | ConvertFrom-Json
- }
- Write-Host "New runspace is ready..."
- #endregion
- #region Run script
- Write-Host "Running the script..."
- $Body = @{
- runspace_id = $RunSpace.Id
- name = "MyScript"
- script = "Get-VM"
- script_parameters = @()
- }
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/script-executions"
- Method = "POST"
- Headers = $Headers
- Credential = $Credentials
- }
- $WebRequest.Add('Body', ($Body | ConvertTo-Json))
- $RunScript = Invoke-WebRequest @WebRequest
- $RunScript = $RunScript.Content | ConvertFrom-Json
- #endregion
- #region Check script status
- Write-Host "Checking script status..."
- while ($RunScript.state -eq 'running') {
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/script-executions/$($RunScript.id)"
- Method = 'GET'
- Headers = $Headers
- }
- $GetScript = Invoke-WebRequest @WebRequest
- $RunScript = $GetScript.Content | ConvertFrom-Json
- }
- Write-Host "Script is ready..."
- #endregion
- #region Retrieve Script output
- Write-Host "Retrieving script output..."`n
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/script-executions/$($RunScript.id)/Output"
- Method = 'GET'
- Headers = $Headers
- }
- $ScriptOutput = Invoke-WebRequest @WebRequest
- $ScriptOutput.Content | ConvertFrom-Json
- #endregion
- #region Retrieve Script streams
- Write-Host `n"Retrieving script streams..."
- $Status = 'information','error','warning','debug','verbose'
- $Status | ForEach-Object -Process {
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/script-executions/$($RunScript.id)/streams/$($_)"
- Method = 'GET'
- Headers = $headers
- }
- $Stream = Invoke-WebRequest @WebRequest
- if ($Stream.Content -ne '[]') {
- $out = ($Stream.Content | ConvertFrom-Json).message | Out-String
- switch($_){
- 'information' {Write-Information -MessageData $out}
- 'error' {Write-Error -Message $out}
- 'warning' {Write-Warning -Message $out}
- 'debug' {Write-Debug -Message $out}
- 'verbose' {Write-Verbose -Message $out}
- }
- }
- }
- #endregion
- #region Remove Runspace
- Write-Host "Removing runspace..."
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/runspaces/$($RunSpace.id)"
- Method = "DELETE"
- Headers = $Headers
- Credential = $Credentials
- }
- $WebRequest.Add('Body', ($Body | ConvertTo-Json))
- $RunSpace = Invoke-WebRequest @WebRequest
- $RunSpace = $RunSpace.Content | ConvertFrom-Json
- #endregion
- #region Logout
- Write-Host "Logging out..."
- $WebRequest = @{
- Uri = "https://srs.local.lab/api/auth/logout"
- Method = "POST"
- Headers = $Headers
- Credential = $Credentials
- }
- $Logout = Invoke-WebRequest @WebRequest
- #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement