Private/Test-UnityConnection.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Function Test-UnityConnection {
  [CmdletBinding()]
  Param (
    [Parameter(Mandatory = $false,HelpMessage = 'EMC Unity Session')]
    [Array]$session = ($global:DefaultUnitySession | where-object {$_.IsConnected -eq $true})
  )
  Begin {
    Write-Debug -Message "[$($MyInvocation.MyCommand)] Executing function"
  }

  Process {
    Foreach ($Sess in $session) {

      Write-Verbose "Processing Array: $($sess.Server)"

      $URI = 'https://'+$sess.Server+'/api/types/system/instances'

      Write-Verbose "URI: $URI"

      Try {
        $request = Invoke-WebRequest -Uri $URI -ContentType "application/json" -Websession $sess.Websession -Headers $sess.headers -Method 'GET'
      }

      Catch {
        $global:DefaultUnitySession |
          where-object {$_.SessionId -eq $sess.SessionId} |
            foreach {
              $currentObject = $_
              $currentObject.IsConnected = $false
              $currentObject
            } | Out-Null
        Return $false
      }
    }
    Return $True
  }
  End {}
}