次の方法で共有


(スクリプト) をコンピューター層でのスケール

 

適用対象: System Center 2012 R2 Virtual Machine Manager,System Center 2012 - Virtual Machine Manager

サービスに拡張することによって、デプロイ済みのサービスで使用されているリソースの量を減らすことができます。 サービスでの規模の設定は、コンピューターの層からバーチャル マシンを削除したり、仮想マシンの状態を変更できます。 コンピューター層はで設定してスケール可能かどうかを定義する、 InstanceMinimumCount コンピューター層テンプレートのパラメーター。

このトピックの「スクリプトにには、次の 2 つのパラメーター セットにはが含まれています。 両方のパラメーター セットでは、サービスとコンピューター層を指定する必要があります。 ただしを使用して、仮想マシンを削除することを指定できる、 RemoveVM 切り替えるには、またはバーチャル マシンを使用してアクションを実行、 VMAction パラメーター。

免責事項

次のスクリプトでは、サービスから仮想マシンの削除を引き起こさないこと、層の最小マシン数未満になる場合に、サービスを確認することによって、層で拡張することがあるかどうかを確認します。 スクリプトは、仮想マシンでは、コンピューター層、および削除のいずれかで実行しているか、実行されていない状態の選択で、仮想マシンを配置する直前に作成された仮想マシンを検索します。

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