Initial commit for HCX PowerShell Module
This commit is contained in:
88
Modules/VMware.HCX/VMware.HCX.psd1
Normal file
88
Modules/VMware.HCX/VMware.HCX.psd1
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
#
|
||||||
|
# Module manifest for module 'VMware.HCX'
|
||||||
|
#
|
||||||
|
# Generated by: wlam@vmware.com
|
||||||
|
#
|
||||||
|
# Generated on: 09/11/18
|
||||||
|
#
|
||||||
|
|
||||||
|
@{
|
||||||
|
|
||||||
|
# Script module or binary module file associated with this manifest.
|
||||||
|
RootModule = 'VMware.HCX.psm1'
|
||||||
|
|
||||||
|
# Version number of this module.
|
||||||
|
ModuleVersion = '1.0.0'
|
||||||
|
|
||||||
|
# Supported PSEditions
|
||||||
|
# CompatiblePSEditions = @()
|
||||||
|
|
||||||
|
# ID used to uniquely identify this module
|
||||||
|
GUID = '88898ed6-26e8-4dfa-a9de-10d3a12571de'
|
||||||
|
|
||||||
|
# Author of this module
|
||||||
|
Author = 'William Lam'
|
||||||
|
|
||||||
|
# Company or vendor of this module
|
||||||
|
CompanyName = 'VMware'
|
||||||
|
|
||||||
|
# Copyright statement for this module
|
||||||
|
Copyright = '(c) 2018 VMware. All rights reserved.'
|
||||||
|
|
||||||
|
# Description of the functionality provided by this module
|
||||||
|
Description = 'PowerShell Module for Managing Hybrid Cloud Extension (HCX) on VMware Cloud on AWS'
|
||||||
|
|
||||||
|
# Minimum version of the Windows PowerShell engine required by this module
|
||||||
|
PowerShellVersion = '6.0'
|
||||||
|
|
||||||
|
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
|
||||||
|
FunctionsToExport = 'Connect-HcxServer', 'Get-HcxCloudConfig', 'Connect-HcxVAMI', 'Get-HcxVAMIVCConfig'
|
||||||
|
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
|
||||||
|
CmdletsToExport = @()
|
||||||
|
|
||||||
|
# Variables to export from this module
|
||||||
|
VariablesToExport = '*'
|
||||||
|
|
||||||
|
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
|
||||||
|
AliasesToExport = @()
|
||||||
|
|
||||||
|
# DSC resources to export from this module
|
||||||
|
# DscResourcesToExport = @()
|
||||||
|
|
||||||
|
# List of all modules packaged with this module
|
||||||
|
# ModuleList = @()
|
||||||
|
|
||||||
|
# List of all files packaged with this module
|
||||||
|
# FileList = @()
|
||||||
|
|
||||||
|
# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
|
||||||
|
PrivateData = @{
|
||||||
|
|
||||||
|
PSData = @{
|
||||||
|
|
||||||
|
# Tags applied to this module. These help with module discovery in online galleries.
|
||||||
|
# Tags = @()
|
||||||
|
|
||||||
|
# A URL to the license for this module.
|
||||||
|
# LicenseUri = ''
|
||||||
|
|
||||||
|
# A URL to the main website for this project.
|
||||||
|
# ProjectUri = ''
|
||||||
|
|
||||||
|
# A URL to an icon representing this module.
|
||||||
|
# IconUri = ''
|
||||||
|
|
||||||
|
# ReleaseNotes of this module
|
||||||
|
# ReleaseNotes = ''
|
||||||
|
|
||||||
|
} # End of PSData hashtable
|
||||||
|
|
||||||
|
} # End of PrivateData hashtable
|
||||||
|
|
||||||
|
# HelpInfo URI of this module
|
||||||
|
# HelpInfoURI = ''
|
||||||
|
|
||||||
|
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
|
||||||
|
# DefaultCommandPrefix = ''
|
||||||
|
|
||||||
|
}
|
||||||
176
Modules/VMware.HCX/VMware.HCX.psm1
Normal file
176
Modules/VMware.HCX/VMware.HCX.psm1
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
Function Connect-HcxServer {
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created by: William Lam
|
||||||
|
Date: 09/16/2018
|
||||||
|
Organization: VMware
|
||||||
|
Blog: http://www.virtuallyghetto.com
|
||||||
|
Twitter: @lamw
|
||||||
|
===========================================================================
|
||||||
|
|
||||||
|
.SYNOPSIS
|
||||||
|
Connect to the HCX Enterprise Manager
|
||||||
|
.DESCRIPTION
|
||||||
|
This cmdlet connects to the HCX Enterprise Manager
|
||||||
|
.EXAMPLE
|
||||||
|
Connect-HcxServer -Server $HCXServer -Username $Username -Password $Password
|
||||||
|
#>
|
||||||
|
Param (
|
||||||
|
[Parameter(Mandatory=$true)][String]$Server,
|
||||||
|
[Parameter(Mandatory=$true)][String]$Username,
|
||||||
|
[Parameter(Mandatory=$true)][String]$Password
|
||||||
|
)
|
||||||
|
|
||||||
|
$payload = @{
|
||||||
|
"username" = $Username
|
||||||
|
"password" = $Password
|
||||||
|
}
|
||||||
|
$body = $payload | ConvertTo-Json
|
||||||
|
|
||||||
|
$hcxLoginUrl = "https://$Server/hybridity/api/sessions"
|
||||||
|
|
||||||
|
if($PSVersionTable.PSEdition -eq "Core") {
|
||||||
|
$results = Invoke-WebRequest -Uri $hcxLoginUrl -Body $body -Method POST -UseBasicParsing -ContentType "application/json" -SkipCertificateCheck
|
||||||
|
} else {
|
||||||
|
$results = Invoke-WebRequest -Uri $hcxLoginUrl -Body $body -Method POST -UseBasicParsing -ContentType "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
if($results.StatusCode -eq 200) {
|
||||||
|
$hcxAuthToken = $results.Headers.'x-hm-authorization'
|
||||||
|
|
||||||
|
$headers = @{
|
||||||
|
"x-hm-authorization"="$hcxAuthToken"
|
||||||
|
"Content-Type"="application/json"
|
||||||
|
"Accept"="application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
$global:hcxConnection = new-object PSObject -Property @{
|
||||||
|
'Server' = "https://$server/hybridity/api";
|
||||||
|
'headers' = $headers
|
||||||
|
}
|
||||||
|
$global:hcxConnection
|
||||||
|
} else {
|
||||||
|
Write-Error "Failed to connect to HCX Manager, please verify your vSphere SSO credentials"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Get-HcxCloudConfig {
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created by: William Lam
|
||||||
|
Date: 09/16/2018
|
||||||
|
Organization: VMware
|
||||||
|
Blog: http://www.virtuallyghetto.com
|
||||||
|
Twitter: @lamw
|
||||||
|
===========================================================================
|
||||||
|
|
||||||
|
.SYNOPSIS
|
||||||
|
Returns the Cloud HCX information that is registerd with HCX Manager
|
||||||
|
.DESCRIPTION
|
||||||
|
This cmdlet returns the Cloud HCX information that is registerd with HCX Manager
|
||||||
|
.EXAMPLE
|
||||||
|
Get-HcxCloudConfig
|
||||||
|
#>
|
||||||
|
If (-Not $global:hcxConnection) { Write-error "HCX Auth Token not found, please run Connect-HcxServer " } Else {
|
||||||
|
$cloudConfigUrl = $global:hcxConnection.Server + "/cloudConfigs"
|
||||||
|
|
||||||
|
if($PSVersionTable.PSEdition -eq "Core") {
|
||||||
|
$cloudvcRequests = Invoke-WebRequest -Uri $cloudConfigUrl -Method GET -Headers $global:hcxConnection.headers -UseBasicParsing -SkipCertificateCheck
|
||||||
|
} else {
|
||||||
|
$cloudvcRequests = Invoke-WebRequest -Uri $cloudConfigUrl -Method GET -Headers $global:hcxConnection.headers -UseBasicParsing
|
||||||
|
}
|
||||||
|
|
||||||
|
$cloudvcData = ($cloudvcRequests.content | ConvertFrom-Json).data.items
|
||||||
|
|
||||||
|
$tmp = [pscustomobject] @{
|
||||||
|
Name = $cloudvcData.cloudName;
|
||||||
|
Version = $cloudvcData.version;
|
||||||
|
Build = $cloudvcData.buildNumber;
|
||||||
|
HCXUUID = $cloudvcData.endpointId;
|
||||||
|
}
|
||||||
|
$tmp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Connect-HcxVAMI {
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created by: William Lam
|
||||||
|
Date: 09/16/2018
|
||||||
|
Organization: VMware
|
||||||
|
Blog: http://www.virtuallyghetto.com
|
||||||
|
Twitter: @lamw
|
||||||
|
===========================================================================
|
||||||
|
|
||||||
|
.SYNOPSIS
|
||||||
|
Connect to the HCX Enterprise Manager VAMI
|
||||||
|
.DESCRIPTION
|
||||||
|
This cmdlet connects to the HCX Enterprise Manager VAMI
|
||||||
|
.EXAMPLE
|
||||||
|
Connect-HcxVAMI -Server $HCXServer -Username $VAMIUsername -Password $VAMIPassword
|
||||||
|
#>
|
||||||
|
Param (
|
||||||
|
[Parameter(Mandatory=$true)][String]$Server,
|
||||||
|
[Parameter(Mandatory=$true)][String]$Username,
|
||||||
|
[Parameter(Mandatory=$true)][String]$Password
|
||||||
|
)
|
||||||
|
|
||||||
|
$pair = "${Username}:${Password}"
|
||||||
|
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
|
||||||
|
$base64 = [System.Convert]::ToBase64String($bytes)
|
||||||
|
$basicAuthValue = "Basic $base64"
|
||||||
|
|
||||||
|
$headers = @{
|
||||||
|
"authorization"="$basicAuthValue"
|
||||||
|
"Content-Type"="application/json"
|
||||||
|
"Accept"="application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
$global:hcxVAMIConnection = new-object PSObject -Property @{
|
||||||
|
'Server' = "https://${server}:9443";
|
||||||
|
'headers' = $headers
|
||||||
|
}
|
||||||
|
$global:hcxVAMIConnection
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Get-HcxVAMIVCConfig {
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created by: William Lam
|
||||||
|
Date: 09/16/2018
|
||||||
|
Organization: VMware
|
||||||
|
Blog: http://www.virtuallyghetto.com
|
||||||
|
Twitter: @lamw
|
||||||
|
===========================================================================
|
||||||
|
|
||||||
|
.SYNOPSIS
|
||||||
|
Returns the onPrem vCenter Server registered with HCX Manager
|
||||||
|
.DESCRIPTION
|
||||||
|
This cmdlet returns the onPrem vCenter Server registered with HCX Manager
|
||||||
|
.EXAMPLE
|
||||||
|
Get-HcxVAMIVCConfig
|
||||||
|
#>
|
||||||
|
If (-Not $global:hcxVAMIConnection) { Write-error "HCX Auth Token not found, please run Connect-HcxVAMI " } Else {
|
||||||
|
$vcConfigUrl = $global:hcxVAMIConnection.Server + "/api/admin/global/config/vcenter"
|
||||||
|
|
||||||
|
if($PSVersionTable.PSEdition -eq "Core") {
|
||||||
|
$vcRequests = Invoke-WebRequest -Uri $vcConfigUrl -Method GET -Headers $global:hcxVAMIConnection.headers -UseBasicParsing -SkipCertificateCheck
|
||||||
|
} else {
|
||||||
|
$vcRequests = Invoke-WebRequest -Uri $vcConfigUrl -Method GET -Headers $global:hcxVAMIConnection.headers -UseBasicParsing
|
||||||
|
}
|
||||||
|
$vcData = ($vcRequests.content | ConvertFrom-Json).data.items
|
||||||
|
|
||||||
|
$tmp = [pscustomobject] @{
|
||||||
|
Name = $vcData.config.name;
|
||||||
|
Version = $vcData.config.version;
|
||||||
|
Build = $vcData.config.buildNumber;
|
||||||
|
UUID = $vcData.config.vcuuid;
|
||||||
|
HCXUUID = $vcData.config.uuid;
|
||||||
|
}
|
||||||
|
$tmp
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user