Scala In un livello di Computer (Script)

 

Si applica a: System Center 2012 R2 Virtual Machine Manager, System Center 2012 - Virtual Machine Manager

È possibile ridurre la quantità di risorse utilizzato da un servizio distribuito tramite la scalabilità del servizio. Per scalare in un servizio, è possibile rimuovere una macchina virtuale da un livello di computer o modificare lo stato della macchina virtuale. Definire se un livello di computer può essere scalato impostando il InstanceMinimumCount parametro per un modello di livello di computer.

Lo script in questo argomento include due set di parametri. Entrambi i set di parametri è necessario fornire il livello di servizio e il computer. Tuttavia, è possibile specificare che la macchina virtuale deve essere rimossa mediante il RemoveVM passare oppure eseguire un'azione sulla macchina virtuale utilizzando il VMAction parametro.

Dichiarazione di non responsabilità

Lo script seguente controlla se l'utente è in grado di scalare in un livello, garantendo che la rimozione di una macchina virtuale dal servizio non causerà il servizio può essere inferiore al numero minimo di computer per il livello. Lo script individua quindi la macchina virtuale creata più di recente che è in esecuzione nel livello computer e una consente di rimuovere la macchina virtuale o pone la macchina virtuale in una scelta degli Stati non in esecuzione.

  
#   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."  
   }  
}  
  

Vedere anche

Scalabilità orizzontale un livello di Computer (Script)