Zerto APIs : Session API : PowerShell Samples
  
PowerShell Samples
For complete PowerShell samples, see “Examples”, on page 23
PowerShell Samples
Starting a Session with VMware vCenter Server or Microsoft SCVMM Credentials
The following code sample shows how to start a session with VMware vCenter Server or Microsoft SCVMM authentication.
$strZVMIP = "{ZVM IP}"
$strZVMPort = "{ZVM HTTPS port}"
$strZVMUser = "{ZVM user}"
$strZVMPwd = "{ZVM user password}"
## Perform authentication so that Zerto APIs can run. Return a session identifier that needs to be inserted in the header for subsequent requests.
function getxZertoSession ($userName, $password){
  $baseURL = "https://" + $strZVMIP + ":"+$strZVMPort
  $xZertoSessionURL = $baseURL +"/v1/session/add"
  $authInfo = ("{0}: {1}" -f $userName,$password)
  $authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo)
  $authInfo = [System.Convert]::ToBase64String($authInfo)
  $headers = @{Authorization=("Basic {0}" -f $authInfo)}
  $contentType = "application/json"
  $xZertoSessionResponse = Invoke-WebRequest -Uri $xZertoSessionURL -Headers $headers -Method POST -Body $body -ContentType $contentType
 
    #$xZertoSessionResponse = Invoke-WebRequest -Uri $xZertoSessionURL -Headers $headers -Body $body -Method POST
    return $xZertoSessionResponse.headers.get_item("x-zerto-session")
}
 
#Extract x-zerto-session from the response, and add it to the actual API:
$xZertoSession = getxZertoSession $strZVMUser $strZVMPwd
$zertoSessionHeader = @{"x-zerto-session"=$xZertoSession}
Starting a Session with Windows Credentials
To start a session with Windows authentication, replace the line in the above code:
String loginType = args.Length > 4 ? args[4] : "1";
with:
String loginType = args.Length > 4 ? args[4] : "0";
Ending a Session
The following code sample shows how to end a session:
private void LogOut() {
  String addSessionUri = m_baseAddress + "/session";
  HttpWebRequest request = WebRequest.Create(addSessionUri) as HttpWebRequest;
 
  //logging-out is about DELETING a session, with the DELETE http command
  request.Method = "DELETE";
  request.Timeout = 10000;
 
  //you need to set the id of the session to be deleted --> logged-out
  request.Headers.Add(c_authorizationHeader, m_sessionId);
 
  HttpWebResponse httpResponse = request.GetResponse() as HttpWebResponse;
 
  if (httpResponse.StatusCode == HttpStatusCode.OK) {
    m_sessionId = String.Empty;
    Console.WriteLine("\nLogged out - by deleting the session");
  }
  else {
    Console.WriteLine("Request {0} failed with code: {1}, {2}", request, httpResponse.StatusCode, httpResponse.StatusDescription);
  }
}