TMConsole.Provider.Zerto.psm1
## Add required Class Type Libraries Add-Type -AssemblyName Microsoft.PowerShell.Commands.Utility # class ZertoSession { # ## A Name parameter to identify the session in other -ZertoSessions functions # [String]$Name # # Zerto Server hostname # [String]$ZertoServer # # Zerto Server hostname # [Int]$ZertoPort # # ZertoVersion drives the selection of compatible APIs to use # [String]$ZertoVersion # # Logged in Zerto User's Context (indicates loggedin-ness) # [PSCustomObject]$UserContext # # ZertoWebSession Variable. Maintained by the Invoke-WebRequest function's capability # $ZertoWebSession # ## Tracks non-changing items to reduce HTTP lookups, and increase speed of scripts. # ## DataCache is expected to be a k/v pair, where the V could be another k/v pair, # ## However, it's implementation will be more of the nature to hold the list of object calls from the API # ## like 'credentials' = @(@{...},@{...}); 'actions' = @(@{...},@{...}) # ## Get-Zerto* functions will cache unless a -NoCache switch is provided # [Hashtable]$DataCache # ## Should PowerShell ignore the SSL Cert on the Zerto Server? # [Bool]$AllowInsecureSSL # ZertoSession() { # $this.Name = 'Default' # $this.AllowInsecureSSL = $false # $this.DataCache = @{} # $this.UserContext = $null # $this.ZertoPort = 9669 # $this.ZertoWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession # } # ZertoSession([String]$_name = 'Default') { # $this.Name = $_name # $this.AllowInsecureSSL = $false # $this.DataCache = @{} # $this.UserContext = $null # $this.ZertoPort = 9669 # $this.ZertoWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession # } # ZertoSession([String]$_name = 'Default', [String]$_server, [Bool]$_allowInsecureSSL = $false) { # $this.Name = $_name # $this.AllowInsecureSSL = $_allowInsecureSSL # $this.ZertoServer = $_server # $this.ZertoPort = 9669 # $this.DataCache = @{} # $this.UserContext = $null # $this.ZertoWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession # } # ZertoSession([String]$_name = 'Default', [String]$_server, [int]$_port, [Bool]$_allowInsecureSSL = $false) { # $this.Name = $_name # $this.AllowInsecureSSL = $_allowInsecureSSL # $this.ZertoServer = $_server # $this.ZertoPort = $_port # $this.DataCache = @{} # $this.UserContext = $null # $this.ZertoWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession # } # } ## Dot-source the classes $ClassesFile = Get-Item (Join-Path $PSScriptRoot 'lib' 'Classes' 'Zerto.Classes.ps1') . $ClassesFile ## Load all files in the lib directory $LibraryFiles = Get-ChildItem (Join-Path $PSScriptRoot 'lib') -Exclude 'Classes' | Get-ChildItem -Recurse -Force -File # For Each $Library File, load it foreach ($LibraryFile in $LibraryFiles) { . ($LibraryFile.FullName) } |