Upload files to "VMware"
This commit is contained in:
parent
b69f3dc9e2
commit
19c58e60f3
118
VMware/getdrsgroupfunction.ps1
Normal file
118
VMware/getdrsgroupfunction.ps1
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
Function Get-DrsGroup {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Retrieves DRS groups from a cluster.
|
||||
|
||||
.DESCRIPTION
|
||||
Retrieves DRS groups from a cluster.
|
||||
|
||||
.PARAMETER Cluster
|
||||
Specify the cluster for which you want to retrieve the DRS groups
|
||||
|
||||
.PARAMETER Name
|
||||
Specify the name of the DRS group you want to retrieve.
|
||||
|
||||
.EXAMPLE
|
||||
Get-DrsGroup -Cluster $Cluster -Name "VMs DRS Group"
|
||||
Retrieves the DRS group "Vms DRS Group" from cluster $Cluster.
|
||||
|
||||
.EXAMPLE
|
||||
Get-Cluster | Get-DrsGroup
|
||||
Retrieves all the DRS groups for all clusters.
|
||||
|
||||
.INPUTS
|
||||
ClusterImpl
|
||||
|
||||
.OUTPUTS
|
||||
ClusterVmGroup
|
||||
ClusterHostGroup
|
||||
|
||||
.COMPONENT
|
||||
VMware vSphere PowerCLI
|
||||
#>
|
||||
|
||||
param([parameter(Mandatory=$true, ValueFromPipeline=$true)]$Cluster,
|
||||
[string] $Name="*")
|
||||
|
||||
process {
|
||||
$Cluster = Get-Cluster -Name $Cluster
|
||||
if($Cluster) {
|
||||
$Cluster.ExtensionData.ConfigurationEx.Group | `
|
||||
Where-Object {$_.Name -like $Name}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Function Add-VMToDrsGroup {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Adds a virtual machine to a cluster VM DRS group.
|
||||
|
||||
.DESCRIPTION
|
||||
Adds a virtual machine to a cluster VM DRS group.
|
||||
|
||||
.PARAMETER Cluster
|
||||
Specify the cluster for which you want to retrieve the DRS groups
|
||||
|
||||
.PARAMETER DrsGroup
|
||||
Specify the DRS group you want to retrieve.
|
||||
|
||||
.PARAMETER VM
|
||||
Specify the virtual machine you want to add to the DRS Group.
|
||||
|
||||
.EXAMPLE
|
||||
Add-VMToDrsGroup -Cluster $Cluster -DrsGroup "VM DRS Group" -VM $VM
|
||||
Adds virtual machine $VM to the DRS group "VM DRS Group" of cluster $Cluster.
|
||||
|
||||
.EXAMPLE
|
||||
Get-Cluster MyCluster | Get-VM "A*" | Add-VMToDrsGroup -Cluster MyCluster -DrsGroup $DrsGroup
|
||||
Adds all virtual machines with a name starting with "A" in cluster MyCluster to the DRS group $DrsGroup of cluster MyCluster.
|
||||
|
||||
.INPUTS
|
||||
VirtualMachineImpl
|
||||
|
||||
.OUTPUTS
|
||||
Task
|
||||
|
||||
.COMPONENT
|
||||
VMware vSphere PowerCLI
|
||||
#>
|
||||
|
||||
param([parameter(Mandatory=$true)] $Cluster,
|
||||
[parameter(Mandatory=$true)] $DrsGroup,
|
||||
[parameter(Mandatory=$true, ValueFromPipeline=$true)] $VM)
|
||||
|
||||
begin {
|
||||
$Cluster = Get-Cluster -Name $Cluster
|
||||
}
|
||||
|
||||
process {
|
||||
if ($Cluster) {
|
||||
if ($DrsGroup.GetType().Name -eq "string") {
|
||||
$DrsGroupName = $DrsGroup
|
||||
$DrsGroup = Get-DrsGroup -Cluster $Cluster -Name $DrsGroup
|
||||
}
|
||||
if (-not $DrsGroup) {
|
||||
Write-Error "The DrsGroup $DrsGroupName was not found on cluster $($Cluster.name)."
|
||||
}
|
||||
else {
|
||||
if ($DrsGroup.GetType().Name -ne "ClusterVmGroup") {
|
||||
Write-Error "The DrsGroup $DrsGroupName on cluster $($Cluster.Name) doesn't have the required type ClusterVmGroup."
|
||||
}
|
||||
else {
|
||||
$VM = $Cluster | Get-VM -Name $VM
|
||||
If ($VM) {
|
||||
$spec = New-Object VMware.Vim.ClusterConfigSpecEx
|
||||
$spec.groupSpec = New-Object VMware.Vim.ClusterGroupSpec[] (1)
|
||||
$spec.groupSpec[0] = New-Object VMware.Vim.ClusterGroupSpec
|
||||
$spec.groupSpec[0].operation = "edit"
|
||||
$spec.groupSpec[0].info = $DrsGroup
|
||||
$spec.groupSpec[0].info.vm += $VM.ExtensionData.MoRef
|
||||
|
||||
$Cluster.ExtensionData.ReconfigureComputeResource_Task($spec, $true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue