Share via


Speichern Sie einen Dienst in der Bibliothek und danach erneut bereitstellen Sie (Skript)

 

Veröffentlicht: Juli 2016

Gilt für: System Center 2012 R2 Virtual Machine Manager, System Center 2012 - Virtual Machine Manager

Sie können einen bereitgestellten Dienst in der Bibliothek speichern und erneut bereitstellen einen gespeicherten Dienst aus der Bibliothek. Um einen Dienst in der Bibliothek speichern, speichern Sie alle virtuellen Maschinen für diesen Dienst in der Bibliothek. die Dienstdefinition beibehalten wird, und der Dienst wird in der Bibliothek angezeigt. Um einen gespeicherten Dienst erneut bereitstellen, Sie jeden virtuellen Computer im Dienst bereitstellen Ihrer VMM Umgebung.

Haftungsausschluss

Das folgende Skript ruft alle virtuellen Computer für den angegebenen Dienst ab und speichert sie auf den Bibliothekserver mit der höchsten Bewertung. Nachdem alle virtuellen Computer gespeichert sind, hält das Skript um ermöglichen es Ihnen, stellen Sie sicher, dass der Dienst in der Bibliothek gespeichert wurde. Klicken Sie dann erneut das Skript stellt den Dienst bereit aller gespeicherten virtuellen Computer auf den am besten bewerteten Host bereitzustellen. Wenn Sie die virtuellen Maschinen auf einem bestimmten Host bereitstellen möchten, können Sie diesen Hostnamen für die Variable $VMHost bereitstellen.

  
<#  
  Description:   This script stores all of the virtual machines for the specified  
                 service to the best-rated library server. The script then pauses.  
                 When it resumes, the script re-deploys each of the virtual machines  
                 for the service to the best-rated host, thereby re-dedeploying the  
                 service.  
#>  
  
# Get the service you want to store in the library.  
$Service = Get-SCService -Name "Service01"  
  
# Get all the virtual mnachines for the service.  
$VMs = Get-SCVirtualMachine -Service $Service  
  
# Get the library server with the highest rating.  
$LibServers = @(Get-SCLibraryServer)  
$RatedLibServers = Get-SCLibraryRating -LibraryServer $LibServers | where {$_.Rating -gt 0} | sort -property rating -descending  
If ($RatedLibServers.Count -eq 0) {throw "No library servers meet the placement requirements."}  
$LibServer = $RatedLibServers[0].Library  
$SharePath = "\\$LibServer\Services"  
  
# Store all virtual machines in the service to the library server.  
ForEach ($VM in $VMs)  
{  
   If ($_.Status -eq "Running")  
   {  
      Stop-SCVirtualMachine -VM $VM  
   }  
  
   Else  
   {  
      Save-SCVirtualMachine -VM $VM -LibraryServer $LibServer -SharePath $SharePath -RunAsynchronously -JobVariable "StoringVMS"  
   }  
}  
  
# Display progress of storing virtual machines.  
While ($StoringVMs.status -eq "Running")  
{  
   Write-Progress -Activity "Storing virtual machines" -Status $StoringVMs.CurrentStep  
   Start-Sleep -Seconds 5  
}  
  
# Ensure that the service is stored in the library before continuing.  
While ($Service.DeploymentState -ne "Stored")  
{  
   Start-Sleep -Seconds 5  
}  
  
# Re-deploy the service.  
  
ForEach ($VM in $VMs)  
{  
   # Get the host with the highest rating for the virtual machine.  
   $VMHosts = Get-SCVMHost  
   $HostRatings = @(Get-SCVMHostRating -VMHost $VMHosts -VM $VM | where {$_.Rating -gt 0} | sort -Property Rating -Descending)  
   If ($HostRatings.Count -eq 0) {throw "No hosts meet the placement requirements."}  
   $VMHost = $HostRatings[0].vmhost  
  
   # Deploy the virtual machine.  
   Write-Host "Deploying virtual machine $VM on host $VMHost."  
   Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath" -StartVMOnTarget -RunAsynchronously  
}