Public/Connect-PrismServer.ps1

<#
    .DESCRIPTION
    Wrapper for Nutanix API version 0.3.
 
    .NOTES
    Author: Timothy Rasiah
#>


if ($PSVersionTable.PSVersion -ge [System.Version]"7.0") {
    function Connect-PrismServer {
        [CmdletBinding()]
        param (
            [Parameter(Mandatory=$true)]
            [String]$Server,
            [Int]$Port = 9440,
            [Parameter(Mandatory=$true)]
            [String]$Username,
            [Parameter(Mandatory=$true)]
            [System.Security.SecureString]$Password
        )

        # https://www.nutanix.dev/reference/prism_central/v3/authentication
        # create the HTTP Basic Authorization header
        $pair = $Username + ":" + ($Password | ConvertFrom-SecureString -AsPlainText)
        $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
        $base64 = [System.Convert]::ToBase64String($bytes)
        $basicAuthValue = "Basic $base64"

        $Global:DefaultNutanixV3Connection = @()
        $Global:DefaultNutanixV3Connection += [PrismSession]@{
            "BaseUrl"   = "https://$($Server):$($Port)/api/nutanix/v3"
            "BasicAuth" = "$($basicAuthValue)"
        }
    }
}
else {
    function Connect-PrismServer {
        [CmdletBinding()]
        param (
            [Parameter(Mandatory=$true)]
            [String]$Server,
            [Int]$Port = 9440,
            [Parameter(Mandatory=$true)]
            [PSCredential]$Credential
        )

        $Domain = $Credential.GetNetworkCredential().Domain
        $Username = $Credential.GetNetworkCredential().UserName
        $Password = $Credential.GetNetworkCredential().Password
        
        # https://www.nutanix.dev/reference/prism_central/v3/authentication
        # create the HTTP Basic Authorization header
        $pair = $Username + ":" + $Password
        $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
        $base64 = [System.Convert]::ToBase64String($bytes)
        $basicAuthValue = "Basic $base64"

        $Global:DefaultNutanixV3Connection = @()
        $Global:DefaultNutanixV3Connection += [PrismSession]@{
            "BaseUrl"   = "https://$($Server):$($Port)/api/nutanix/v3"
            "BasicAuth" = "$($basicAuthValue)"
        }
    }

}