diff --git a/ZertoApiWrapper/Private/Invoke-ZertoRestRequest.ps1 b/ZertoApiWrapper/Private/Invoke-ZertoRestRequest.ps1 index c7bdf12..51d23d5 100644 --- a/ZertoApiWrapper/Private/Invoke-ZertoRestRequest.ps1 +++ b/ZertoApiWrapper/Private/Invoke-ZertoRestRequest.ps1 @@ -11,29 +11,22 @@ function Invoke-ZertoRestRequest { [switch]$returnHeaders ) $callerErrorActionPreference = $ErrorActionPreference - if ( Test-Path Env:zertoConnectionInformation ) { - $zertoConnectionInformation = $(Get-Item -Path Env:zertoConnectionInformation).value | ConvertFrom-Json - } else { + if ( -not (Test-Path variable:script:zvmServer -and Test-Path variable:script:zvmPort) ) { Write-Error -Message "Zerto Connection does not Exist. Please run Connect-ZertoServer first to establish a connection" break - } - if ( Test-Path Env:zertoAuthorizationHeaders ) { - $json = $(Get-Item Env:zertoAuthorizationHeaders).value | ConvertFrom-Json - $headers = @{} - $json.psobject.properties | ForEach-Object { $headers[$_.Name] = $_.Value } + if ( Test-Path variable:script:zvmHeaders ) { + $headers = $script:zvmHeaders } else { $headers = $null } - if ( (Test-Path Env:zertoAuthorizationHeaders) -and $([datetime]$zertoConnectionInformation.lastAction).addMinutes(30) -lt $(get-date) ) { + if ( (Test-Path variable:script:zvmHeaders) -and $([datetime]$script:zvmLastAction).addMinutes(30) -lt $(get-date) ) { Write-Error -Message "Authorization Token has Expired or Does not exist in Env variables. Please re-authorize to the Zerto Virtual Manager" break } else { - $submittedURI = "https://{0}:{1}/{2}/{3}" -f $zertoConnectionInformation.zertoServer, $zertoConnectionInformation.zertoPort, $apiVersion, $uri + $submittedURI = "https://{0}:{1}/{2}/{3}" -f $script:zvmServer, $script:zvmPort, $apiVersion, $uri try { - $lastAction = (get-date).Ticks + $script:zvmLastAction = (get-date).Ticks $apiRequestResults = Invoke-RestMethod -Uri $submittedURI -Headers $headers -Method $method -Body $body -ContentType $contentType -Credential $credential -SkipCertificateCheck -ResponseHeadersVariable responseHeaders -TimeoutSec 100 - $zertoConnectionInformation.lastAction = $lastAction - Set-Item -Path Env:zertoConnectionInformation -Value $($zertoConnectionInformation | ConvertTo-Json -Compress) } catch { Write-Error -ErrorRecord $_ -ErrorAction $callerErrorActionPreference } diff --git a/ZertoApiWrapper/Public/Connect-ZertoServer.ps1 b/ZertoApiWrapper/Public/Connect-ZertoServer.ps1 index 1fc6be2..704b757 100644 --- a/ZertoApiWrapper/Public/Connect-ZertoServer.ps1 +++ b/ZertoApiWrapper/Public/Connect-ZertoServer.ps1 @@ -18,14 +18,18 @@ function Connect-ZertoServer { [System.Management.Automation.PSCredential] $credential ) - $zertoConnectionInformation = @{"zertoServer" = $zertoServer; "zertoPort" = $zertoPort; "LastAction" = $(get-date).Ticks} - Set-Item Env:zertoConnectionInformation -Value ($zertoConnectionInformation | ConvertTo-Json -Compress) + Set-Variable -Name zvmHost -Scope Script -Value $zertoServer + Set-Variable -Name zvmPort -Scope Script -Value $zertoPort + Set-Variable -Name zmvLastAction -Scope Script -Value $(get-date).Ticks + # $zertoConnectionInformation = @{"zertoServer" = $zertoServer; "zertoPort" = $zertoPort; "LastAction" = $(get-date).Ticks} + # Set-Item Env:zertoConnectionInformation -Value ($zertoConnectionInformation | ConvertTo-Json -Compress) $body = '{"AuthenticationMethod": "1"}' $uri = "session/add" $results = Invoke-ZertoRestRequest -uri $uri -credential $credential -returnHeaders -body $body -method POST $zertoAuthorizationHeaders = @{"x-zerto-session" = $results.Headers['x-zerto-session'][0].ToString(); "Accept" = "application/json"} - Set-Item Env:zertoAuthorizationHeaders -Value ($zertoAuthorizationHeaders | ConvertTo-Json -Compress) - $zertoLocalSiteInfo = Get-ZertoLocalSite - Set-Item Env:zertoLocalSiteInfo -Value ($zertoLocalSiteInfo | ConvertTo-Json -Compress) + Set-Variable -Name zvmHeaders -Scope Script -Value $zertoAuthorizationHeaders + # Set-Item Env:zertoAuthorizationHeaders -Value ($zertoAuthorizationHeaders | ConvertTo-Json -Compress) + Set-Variable -Name zvmLocalInfo -Scope Script -Value (Get-ZertoLocalSite) + # Set-Item Env:zertoLocalSiteInfo -Value ($zertoLocalSiteInfo | ConvertTo-Json -Compress) return $zertoAuthorizationHeaders } diff --git a/ZertoApiWrapper/Public/Disconnect-ZertoServer.ps1 b/ZertoApiWrapper/Public/Disconnect-ZertoServer.ps1 index 807739f..ad9c682 100644 --- a/ZertoApiWrapper/Public/Disconnect-ZertoServer.ps1 +++ b/ZertoApiWrapper/Public/Disconnect-ZertoServer.ps1 @@ -2,7 +2,9 @@ function Disconnect-ZertoServer { [cmdletbinding()] $uri = "session" Invoke-ZertoRestRequest -uri $uri -method DELETE - Remove-Item Env:zertoAuthorizationHeaders - Remove-Item Env:zertoConnectionInformation - Remove-Item Env:zertoLocalSiteInfo + Clear-Variable -Name zvmServer -Scope Script + Clear-Variable -Name zvmPort -Scope Script + Clear-Variable -Name zvmLastAction -Scope Script + Clear-Variable -Name zvmHeaders -Scope Script + Clear-Variable -Name zvmLocalInfo -Scope Script } diff --git a/ZertoApiWrapper/Public/Install-ZertoVra.ps1 b/ZertoApiWrapper/Public/Install-ZertoVra.ps1 index 0f7de94..06fdf59 100644 --- a/ZertoApiWrapper/Public/Install-ZertoVra.ps1 +++ b/ZertoApiWrapper/Public/Install-ZertoVra.ps1 @@ -28,7 +28,7 @@ function Install-ZertoVra { #TODO - Test to see if VRA already exists! $vraName = "Z-VRA-{0}" -f $hostName if ( -not (Get-ZertoVra -vraName $vraName) ) { - $siteIdentifier = ((Get-Item Env:zertoLocalSiteInfo).value | ConvertFrom-Json).SiteIdentifier + $siteIdentifier = $script:zertoLocalInfo.SiteIdentifier $hostIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -hosts | Where-Object {$_.VirtualizationHostName -eq $hostName} | Select-Object hostIdentifier -ExpandProperty hostIdentifier $networkIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -networks | Where-Object {$_.VirtualizationNetworkName -eq $networkName} | Select-Object NetworkIdentifier -ExpandProperty NetworkIdentifier $datastoreIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -datastores | Where-Object {$_.DatastoreName -eq $datastoreName} | Select-Object DatastoreIdentifier -ExpandProperty DatastoreIdentifier @@ -51,7 +51,7 @@ function Install-ZertoVra { $vraBasicNetwork['VraIPConfigurationTypeApi'] = "Dhcp" } $vraBasic['VraNetworkDataApi'] = $vraBasicNetwork - if ($PSCmdlet.ShouldProcess("Host $hostName with the following data $($vraBasic | convertto-json)")) { + if ($PSCmdlet.ShouldProcess("Preforming operation 'Install-Vra' on Host $hostName with the following data \n $($vraBasic | convertto-json)")) { Invoke-ZertoRestRequest -uri "vras" -method POST -body $($vraBasic | ConvertTo-Json) } } else {