added multiple podfederation functions
This commit is contained in:
@@ -10088,5 +10088,391 @@ function get-hvhealth {
|
|||||||
[System.gc]::collect()
|
[System.gc]::collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function new-hvpodfederation {
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Initiates a Horizon View Pod Federation (Cloud Pod Architecture)
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Starts the initialisation of a Horizon View Pod Federation. Other pod's can be joined to this federation to form the Cloud Pod Architecture
|
||||||
|
|
||||||
|
.PARAMETER HvServer
|
||||||
|
Reference to Horizon View Server to query the virtual machines from. If the value is not passed or null then
|
||||||
|
first element from global:DefaultHVServers would be considered in-place of hvServer
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
new-hvpodfederation
|
||||||
|
Returns health for the connectionserver(s)
|
||||||
|
|
||||||
Export-ModuleMember Add-HVDesktop,Add-HVRDSServer,Connect-HVEvent,Disconnect-HVEvent,Get-HVPoolSpec,Get-HVInternalName, Get-HVEvent,Get-HVFarm,Get-HVFarmSummary,Get-HVPool,Get-HVPoolSummary,Get-HVMachine,Get-HVMachineSummary,Get-HVQueryResult,Get-HVQueryFilter,New-HVFarm,New-HVPool,Remove-HVFarm,Remove-HVPool,Set-HVFarm,Set-HVPool,Start-HVFarm,Start-HVPool,New-HVEntitlement,Get-HVEntitlement,Remove-HVEntitlement, Set-HVMachine, New-HVGlobalEntitlement, Remove-HVGlobalEntitlement, Get-HVGlobalEntitlement, Set-HVApplicationIcon, Remove-HVApplicationIcon, Get-HVGlobalSettings, Set-HVGlobalSettings, Set-HVGlobalEntitlement, Get-HVResourceStructure, Get-hvlocalsession, Get-HVGlobalSession, Reset-HVMachine, Get-HVHealth
|
.NOTES
|
||||||
|
Author : Wouter Kursten
|
||||||
|
Author email : wouter@retouw.nl
|
||||||
|
Version : 1.0
|
||||||
|
|
||||||
|
===Tested Against Environment====
|
||||||
|
Horizon View Server Version : 7.3.2,7.4
|
||||||
|
PowerCLI Version : PowerCLI 6.5, PowerCLI 6.5.1
|
||||||
|
PowerShell Version : 5.0
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(
|
||||||
|
SupportsShouldProcess = $false,
|
||||||
|
ConfirmImpact = 'High'
|
||||||
|
)]
|
||||||
|
|
||||||
|
param(
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
$HvServer = $null
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
$services = Get-ViewAPIService -hvServer $hvServer
|
||||||
|
if ($null -eq $services) {
|
||||||
|
Write-Error "Could not retrieve ViewApi services from connection object"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
$services.PodFederation.PodFederation_Initialize()
|
||||||
|
|
||||||
|
Write-Output "The Pod Federation has been initiated. Please wait a couple of minutes and refresh any open admin consoles to use the newly available functionality."
|
||||||
|
|
||||||
|
[System.gc]::collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove-hvpodfederation {
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Uninitiates a Horizon View Pod Federation (Cloud Pod Architecture)
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Starts the uninitialisation of a Horizon View Pod Federation. It does NOT remove a pod from a federation.
|
||||||
|
|
||||||
|
.PARAMETER HvServer
|
||||||
|
Reference to Horizon View Server to query the virtual machines from. If the value is not passed or null then
|
||||||
|
first element from global:DefaultHVServers would be considered in-place of hvServer
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Starts the Uninitiates a Horizon View Pod Federation.
|
||||||
|
Unintialises
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Author : Wouter Kursten
|
||||||
|
Author email : wouter@retouw.nl
|
||||||
|
Version : 1.0
|
||||||
|
|
||||||
|
===Tested Against Environment====
|
||||||
|
Horizon View Server Version : 7.3.2,7.4
|
||||||
|
PowerCLI Version : PowerCLI 6.5, PowerCLI 6.5.1
|
||||||
|
PowerShell Version : 5.0
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(
|
||||||
|
SupportsShouldProcess = $false,
|
||||||
|
ConfirmImpact = 'High'
|
||||||
|
)]
|
||||||
|
|
||||||
|
param(
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
$HvServer = $null
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
$services = Get-ViewAPIService -hvServer $hvServer
|
||||||
|
if ($null -eq $services) {
|
||||||
|
Write-Error "Could not retrieve ViewApi services from connection object"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
$services.PodFederation.PodFederation_Uninitialize()
|
||||||
|
|
||||||
|
Write-Output "The uninitialisation of the Pod Federation has been started. Please wait a couple of minutes and refresh any open admin consoles to see the results."
|
||||||
|
|
||||||
|
[System.gc]::collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
function get-hvpodfederation {
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Returns information about a Horizon View Pod Federation (Cloud Pod Architecture)
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Returns information about a Horizon View Pod Federation (Cloud Pod Architecture)
|
||||||
|
|
||||||
|
.PARAMETER HvServer
|
||||||
|
Reference to Horizon View Server to query the virtual machines from. If the value is not passed or null then
|
||||||
|
first element from global:DefaultHVServers would be considered in-place of hvServer
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
get-hvpodfederation
|
||||||
|
Returns information about a Horizon View Pod Federation
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Author : Wouter Kursten
|
||||||
|
Author email : wouter@retouw.nl
|
||||||
|
Version : 1.0
|
||||||
|
|
||||||
|
===Tested Against Environment====
|
||||||
|
Horizon View Server Version : 7.3.2,7.4
|
||||||
|
PowerCLI Version : PowerCLI 6.5, PowerCLI 6.5.1
|
||||||
|
PowerShell Version : 5.0
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(
|
||||||
|
SupportsShouldProcess = $false,
|
||||||
|
ConfirmImpact = 'High'
|
||||||
|
)]
|
||||||
|
|
||||||
|
param(
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
$HvServer = $null
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
$services = Get-ViewAPIService -hvServer $hvServer
|
||||||
|
if ($null -eq $services) {
|
||||||
|
Write-Error "Could not retrieve ViewApi services from connection object"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
$podfederationinfo=$services.PodFederation.PodFederation_Get()
|
||||||
|
return $podfederationinfo
|
||||||
|
|
||||||
|
[System.gc]::collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
function register-hvpod {
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Registers a pod in a Horizon View Pod Federation (Cloud Pod Architecture)
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Registers a pod in a Horizon View Pod Federation. You have to be connected to the pod you are joining to the federation.
|
||||||
|
|
||||||
|
.PARAMETER ADUserName
|
||||||
|
User principal name of user
|
||||||
|
|
||||||
|
.PARAMETER remoteconnectionserver
|
||||||
|
Servername of a connectionserver that already belongs to the PodFederation
|
||||||
|
|
||||||
|
.PARAMETER ADPassword
|
||||||
|
Password of the type Securestring. Can be created with:
|
||||||
|
$password = Read-Host 'Domain Password' -AsSecureString
|
||||||
|
|
||||||
|
.PARAMETER HvServer
|
||||||
|
Reference to Horizon View Server to query the virtual machines from. If the value is not passed or null then
|
||||||
|
first element from global:DefaultHVServers would be considered in-place of hvServer
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
C:\PS>$adpassword = Read-Host 'Domain Password' -AsSecureString
|
||||||
|
C:\PS>register-hvpod -remoteconnectionserver "servername" -username "user\domain" -password $adpassword
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
register-hvpod -remoteconnectionserver "servername" -username "user\domain"
|
||||||
|
It will now ask for the password
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Author : Wouter Kursten
|
||||||
|
Author email : wouter@retouw.nl
|
||||||
|
Version : 1.0
|
||||||
|
|
||||||
|
===Tested Against Environment====
|
||||||
|
Horizon View Server Version : 7.3.2,7.4
|
||||||
|
PowerCLI Version : PowerCLI 6.5, PowerCLI 6.5.1
|
||||||
|
PowerShell Version : 5.0
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(
|
||||||
|
SupportsShouldProcess = $false,
|
||||||
|
ConfirmImpact = 'High'
|
||||||
|
)]
|
||||||
|
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[String]
|
||||||
|
$remoteconnectionserver,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[ValidatePattern("^.+?[@\\].+?$")]
|
||||||
|
[String]
|
||||||
|
$ADUserName,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[SecureString]
|
||||||
|
$ADpassword,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
$HvServer = $null
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
$services = Get-ViewAPIService -hvServer $hvServer
|
||||||
|
if ($null -eq $services) {
|
||||||
|
Write-Error "Could not retrieve ViewApi services from connection object"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$ADPassword) {
|
||||||
|
$ADPassword= Read-Host 'Please provide the Active Directory password for user $AdUsername' -AsSecureString
|
||||||
|
}
|
||||||
|
|
||||||
|
#$unsecurepassword=$ADPassword | ConvertFrom-SecureString
|
||||||
|
$vcPassword = New-Object VMware.Hv.SecureString
|
||||||
|
$enc = [system.Text.Encoding]::UTF8
|
||||||
|
$vcPassword.Utf8String = $enc.GetBytes(($ADPassword | ConvertFrom-SecureString))
|
||||||
|
|
||||||
|
$services.PodFederation.PodFederation_join($remoteconnectionserver,$user,$svcpassword)
|
||||||
|
write-host "This pod has been joined to the podfederation."
|
||||||
|
|
||||||
|
[System.gc]::collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
function unregister-hvpod {
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Removes a pod from a podfederation
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Starts the uninitialisation of a Horizon View Pod Federation. It does NOT remove a pod from a federation.
|
||||||
|
|
||||||
|
.PARAMETER Podname
|
||||||
|
The name of the pod to be removed.
|
||||||
|
|
||||||
|
.PARAMETER Force
|
||||||
|
This can be used to forcefully remove a pod from the pod federation. This can only be done while connected to one of the other pods in the federation
|
||||||
|
|
||||||
|
.PARAMETER HvServer
|
||||||
|
Reference to Horizon View Server to query the virtual machines from. If the value is not passed or null then
|
||||||
|
first element from global:DefaultHVServers would be considered in-place of hvServer
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Unregister-hvpod -podname PODNAME
|
||||||
|
Checks if you are connected to the pod and gracefully unregisters it from the podfedaration
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Unregister-hvpod -podname PODNAME -force
|
||||||
|
Checks if you are connected to the pod and gracefully unregisters it from the podfedaration
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Author : Wouter Kursten
|
||||||
|
Author email : wouter@retouw.nl
|
||||||
|
Version : 1.0
|
||||||
|
|
||||||
|
===Tested Against Environment====
|
||||||
|
Horizon View Server Version : 7.3.2,7.4
|
||||||
|
PowerCLI Version : PowerCLI 6.5, PowerCLI 6.5.1
|
||||||
|
PowerShell Version : 5.0
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(
|
||||||
|
SupportsShouldProcess = $false,
|
||||||
|
ConfirmImpact = 'High'
|
||||||
|
)]
|
||||||
|
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]
|
||||||
|
$PodName,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[switch]
|
||||||
|
$force=$false,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
$HvServer = $null
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
$services = Get-ViewAPIService -hvServer $hvServer
|
||||||
|
if ($null -eq $services) {
|
||||||
|
Write-Error "Could not retrieve ViewApi services from connection object"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
$pods=$services.pod.pod_list()
|
||||||
|
$pod=$pods | where-object {$_.displayname -like "$podname"}
|
||||||
|
if ($force -eq $false){
|
||||||
|
if ($pod.localpod -eq $False){
|
||||||
|
Write-Error "You can only gracefully remove a pod when connected to that pod, please connect to a connection server in pod $podname"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
elseif ($pod.localpod -eq $True){
|
||||||
|
write-host "Gracefully removing $podname from the federation"
|
||||||
|
$services.PodFederation.PodFederation_Unjoin()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elseif ($force -eq $true){
|
||||||
|
if ($pod.localpod -eq $True){
|
||||||
|
Write-Error "You can only forcefully remove a pod when connected to a different pod, please connect to a connection server in another pod then $podname"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
elseif ($pod.localpod -eq $false){
|
||||||
|
write-host "Forcefully removing $podname from the federation"
|
||||||
|
$services.PodFederation.PodFederation_eject($pod.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[System.gc]::collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
function set-hvpodfederation {
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Used to change the name of a Horizon View Pod Federation (Cloud Pod Architecture)
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Used to change the name of a Horizon View Pod Federation (Cloud Pod Architecture)
|
||||||
|
|
||||||
|
.PARAMETER Name
|
||||||
|
The new name of the Pod Federation.
|
||||||
|
|
||||||
|
.PARAMETER HvServer
|
||||||
|
Reference to Horizon View Server to query the virtual machines from. If the value is not passed or null then
|
||||||
|
first element from global:DefaultHVServers would be considered in-place of hvServer
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
set-hvpodfederation -name "New Name"
|
||||||
|
Will update the name of the current podfederation.
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Author : Wouter Kursten
|
||||||
|
Author email : wouter@retouw.nl
|
||||||
|
Version : 1.0
|
||||||
|
|
||||||
|
===Tested Against Environment====
|
||||||
|
Horizon View Server Version : 7.3.2,7.4
|
||||||
|
PowerCLI Version : PowerCLI 6.5, PowerCLI 6.5.1
|
||||||
|
PowerShell Version : 5.0
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(
|
||||||
|
SupportsShouldProcess = $false,
|
||||||
|
ConfirmImpact = 'High'
|
||||||
|
)]
|
||||||
|
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]
|
||||||
|
$name,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
$HvServer = $null
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
$services = Get-ViewAPIService -hvServer $hvServer
|
||||||
|
if ($null -eq $services) {
|
||||||
|
Write-Error "Could not retrieve ViewApi services from connection object"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
$podservice=new-object vmware.hv.podfederationservice
|
||||||
|
$podservicehelper=$podservice.read($services)
|
||||||
|
$podservicehelper.getDatahelper().setdisplayname($name)
|
||||||
|
$podservice.update($services, $podservicehelper)
|
||||||
|
get-hvpodfederation
|
||||||
|
|
||||||
|
[System.gc]::collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
Export-ModuleMember Add-HVDesktop,Add-HVRDSServer,Connect-HVEvent,Disconnect-HVEvent,Get-HVPoolSpec,Get-HVInternalName, Get-HVEvent,Get-HVFarm,Get-HVFarmSummary,Get-HVPool,Get-HVPoolSummary,Get-HVMachine,Get-HVMachineSummary,Get-HVQueryResult,Get-HVQueryFilter,New-HVFarm,New-HVPool,Remove-HVFarm,Remove-HVPool,Set-HVFarm,Set-HVPool,Start-HVFarm,Start-HVPool,New-HVEntitlement,Get-HVEntitlement,Remove-HVEntitlement, Set-HVMachine, New-HVGlobalEntitlement, Remove-HVGlobalEntitlement, Get-HVGlobalEntitlement, Set-HVApplicationIcon, Remove-HVApplicationIcon, Get-HVGlobalSettings, Set-HVGlobalSettings, Set-HVGlobalEntitlement, Get-HVResourceStructure, Get-hvlocalsession, Get-HVGlobalSession, Reset-HVMachine, Get-HVHealth, new-hvpodfederation, remove-hvpodfederation, get-hvpodfederation, register-hvpod, unregister-hvpod, set-hvpodfederation
|
||||||
|
|||||||
Reference in New Issue
Block a user