Share via


Bei einer Computer-Ebene (Skript)

 

Betrifft: System Center 2012 R2 Virtual Machine Manager, System Center 2012 - Virtual Machine Manager

Sie können die Menge der Ressourcen, die von einem bereitgestellten Dienst verwendet wird, die durch die Skalierung im Dienst reduzieren. Um einen Dienst zu skalieren, können Sie das Entfernen einer virtuellen Maschine aus einer Computerebene oder ändern Sie den Status des virtuellen Computers. Sie definieren, ob eine Computerebene in kann durch Festlegen skaliert werden der InstanceMinimumCount -Parameter für eine Vorlage.

Das Skript in diesem Thema enthält zwei Parameter. Beide Parametersätze müssen Sie die Dienst und Computer-Ebene angeben. Sie können jedoch angeben, dass der virtuelle Computer entfernt werden, mit der RemoveVM wechseln oder eine Aktion auf dem virtuellen Computer mithilfe der VMAction Parameter.

Haftungsausschluss

Das folgende Skript überprüft, ob Sie Skalierung auf einer Ebene, indem sichergestellt wird, dass das Entfernen einer virtuellen Maschine vom Dienst nicht den Dienst unter der Anzahl der Mindestanzahl der Computer für die Ebene zu wechseln. Anschließend sucht das Skript die zuletzt erstellte virtuelle Maschine, die in der Computerebene und entweder entfernt den virtuellen Computer ausgeführt wird, oder wird die virtuelle Maschine in einem inaktiven Status.

#   Description:   The script verifies that you are able to scale in a tier and, if so,
#                  the script locates the most recently created virtual machine running
#                  on the computer tier and either removes the virtual machine or stops,
#                  pauses, stores, or saves the state of the virtual machine.

Param (
   [parameter(Mandatory=$true,ParameterSetName="RemoveVM")]
   [Switch]
   $RemoveVM,

   [parameter(Mandatory=$true,ParameterSetName="RetainVM")]
   [ValidateSet("Stop","Pause","SaveState","Store")]
   [String[]]
   $VMAction,

   [parameter(Mandatory=$true)]
   [String]
   $Service=$(throw "Please provide the name of a service."),

   [parameter(Mandatory=$true)]
   [String]
   $ComputerTier=$(throw "Please provide the name of a computer tier."),

   [parameter(Mandatory=$false,ParameterSetName="RetainVM")]
   [String]
   $LibraryServer,

   [parameter(Mandatory=$false,ParameterSetName="RetainVM")]
   [String]
   $LibraryPath
   )

# Get the service and the computer tier.
$ServiceInstance = Get-SCService -Name $Service
$Tier = Get-SCComputerTier -Service $ServiceInstance | where {$_.Name -eq $ComputerTier}

# Ensure that you are able to scale the tier in. 
If ($Tier.VMs.count -le $Tier.InstanceMinimumCount) {throw "You have reached the instance minimum for this tier."}

# Find the most recently created virtual machine in the tier that is running.
$VMs = @(Get-SCVirtualMachine | where {$_.ComputerTier -eq $Tier -and $_.Status -eq "Running"}) | sort -Property CreationTime -Descending
$VM = $VMs[0]

If ($RemoveVM)
{
   Stop-SCVirtualMachine -VM $VM -Force
   Remove-SCVirtualMachine -VM $VM
}
Else
{
   If ($VMAction -eq "Stop")
   {
      Stop-SCVirtualMachine -VM $VM
   }

   ElseIf ($VMAction -eq "Pause")
   {
      Suspend-SCVirtualMachine -VM $VM
   }

   ElseIf ($VMAction -eq "SaveState")
   {
      Stop-SCVirtualMachine -VM $VM -SaveState
   }

   ElseIf ($VMAction -eq "Store")
   {
      Save-SCVirtualMachine -VM $VM -LibraryServer $LibraryServer -SharePath $LibraryPath
   }

   Else
   {
      throw "You did not provide a valid action for the virtual machine."
   }
}