1 / 32

Hyper-V Scripts and Snips From T he Field

Hyper-V Scripts and Snips From T he Field. Rob McShinsky Dartmouth Hitchcock Medical Center VirtuallyAware.com. Who Am I?. Sr. System Engineer – Dartmouth Hitchcock Medical Center Microsoft MVP (Virtual Machine) Advisory Board Member and Contributor for TechTarget

altessa
Télécharger la présentation

Hyper-V Scripts and Snips From T he Field

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hyper-V Scripts and Snips From The Field Rob McShinsky Dartmouth Hitchcock Medical Center VirtuallyAware.com

  2. Who Am I? • Sr. System Engineer – Dartmouth Hitchcock Medical Center • Microsoft MVP (Virtual Machine) • Advisory Board Member and Contributor for TechTarget • Blogger – VirtuallyAware.com • Twitter - @VirtuallyAware VirtuallyAware.com

  3. PowerShell’s Role In Hyper-V? • If you are serious about running Hyper-V, you NEED to know how to utilize the various PowerShell CMDlets(Hyper-V, SCVMM) • Get Information about your VMs or overall environment for reporting or troubleshooting • Set values on one or hundreds of VMs • Perform coordinated tasks based on certain information gathered VirtuallyAware.com

  4. What Are We Going To Talk About? • PowerShell CMDLets for Hyper-V in Windows 2008 R2, System Center Virtual Machine Manger, and Hyper-V 3.0 in Windows Server 8 • Powershell for Administration. Sometimes Quick and Dirty, but gets the job done. • How PowerShell can fill most any management gap that might be found in the Hyper-V Manager or SCVMM console. • These scripts are meant to be used as is or as starting points and examples to customize within your Hyper-V Environment. • Feel free to ask questions or disagree. VirtuallyAware.com

  5. How To Get The PowerShell Modules Hyper-V (RTM, R2, R2 SP1) Not included by default. • http://pshyperv.codeplex.com/releases • http://www.VirtuallyAware.com (Scripts download, right hand side of page) • Launch by: • Opening a PowerShell window and typing “Import-Module HyperV” System Center Virtual Machine Manager (SCVMM) • Built-in when SCVMM console is installed • Launch by: • Clicking on Powershell Icon on top of console or by typing • Opening a PowerShell “Add-PSSnapinMicrosoft.SystemCenter.VirtualMachineManager” Hyper-V 3.0 • Built-in • Launch by: • opening a Powershell window and typing “Import-Module Hyper-V” VirtuallyAware.com

  6. Get VM name from VM ID • Troubleshooting: Many times, eventlog entries will identify the VM that had the issue by its VM ID. • Translating the VM ID to the name of the VM allows you to narrow your troubleshooting VirtuallyAware.com

  7. (Hyper-V) get-vm | ? {$_.name -eq "EABF5B51-446F-463D-9E16-06841A7B1648"} | flelementname • (SCVMM) get-vm | ? {$_.VMid -eq "EABF5B51-446F-463D-9E16-06841A7B1648"} | ft name • (Hyper-V 3.0) – Same as SCVMM get-vm | ? {$_.VMid -eq"0bd618d9-8e39-4336-9d9b-0bdd4664d8b8”}| ft name Use Case: SCVMM Console Showing Incorrect VM Performance Stats

  8. Finding misconfigured VMs with Emulated network cards • Another common setup mistake by admins. • Using default create “New Virtual Machine” option uses Emulated (non-optimized/parent partition routed) virtual network adapter. • Optimizing your network traffic of your VMs and reducing Host/parent partition cpu utilization would require changing these to Synthetic network adapters. VirtuallyAware.com

  9. Examples to list VMs with Emulated virtual network adapters. • (Hyper-V) Get-VMNIC -server <HOSTNAME> -legacy | ftVMElementName, ResourceSubType Or Get-VMNIC -server <HOSTNAME>| ? {$_.ResourceSubType -like "*emulated*"} | ft VMElementName, ResourceSubType • (SCVMM) Get-VirtualNetworkAdapter-all | where {$_.virtualnetworkadaptertype -eq "emulated" } |ftname,VirtualNetworkAdapterType,ethernetaddress • (Hyper-V 3.0) Get-VMNetworkAdapter -all | ? {$_.name -like "legacy*"} | ftVMname,Name Note: Virtual Server 2005 VMs will all come back as Emulated. To differentiate look at some other attribute in the Get-VirtualNetworkAdapter. Many times default MAC Address will be different between VS 2005, Vmware and Hyper-V. • Example with ‘ethernetaddress’ attribute listed to filter out VS 2005 VMs (SCVMM) Get-VirtualNetworkAdapter -all | where {$_.virtualnetworkadaptertype -eq "emulated" -and $_.ethernetaddress -like "00:15*"} |ftname,VirtualNetworkAdapterType,ethernetaddress

  10. Finding VM from MAC address • At times if you using dynamic assignment of MAC addresses there can be times when a duplicate MAC Address if found. • As a result of a P2V where the MAC Address of the physical hardware is carried forward to the VM and then at some later date the physical hardware gets repurposed. • Commonly a popup and eventlog entry will be seen that states that there was a MAC Address conflict, giving you the MAC Address in the event. VirtuallyAware.com

  11. Example to find VM name from MAC Address • (Hyper-V) Get-VMNIC -server <SERVERNAME> | ? {$_.address -eq "00155DF3CFD5"} | ftvmelementname, address • (SCVMM) Get-VirtualNetworkAdapter-all | ? {$_.ethernetaddress -eq"00:03:ff:07:e7:dc"} | ftname,ethernetaddress • (Hyper-V 3.0) Get-VMNetworkAdapter -all |? {$_.macaddress -eq "00155DF24800"} | ftvmname,macaddress

  12. Finding VMs with Snapshots • Snapshots can pose a hidden disk space utilization problem if left unmanaged. • Full volumes can affect all VMs sharing a particular volume (Pause – Critical) • Demo VirtuallyAware.com

  13. (Hyper-V) Get-VMSnapshot -server <SERVERNAME> | ftelementname,systemname Note: SystemName returns VMID. Use previous script to get vm name from VMID. • (SCVMM) get-vm | where {$_.LastRestoredVMCheckpoint -like "*"} | ft name, LastRestoredVMCheckpoint, hostname • (Hyper-V 3.0) get-vm | Get-VMSnapshot | ftvmname,name,creationtime

  14. Finding VMs with Unmerged VHD files • Hyper-V Checkpoints/Snapshot “files” do not disappear when deleted from the management console. • A common admin mistake is to remove the checkpoint/snapshot, but forget to shutdown the VM to allow the merging of the AVHD changed to merge into the parent VHD. • Result is that the .AVHD file can keep dynamically building using up valuable disk space. VirtuallyAware.com

  15. (Hyper-V) get-vmdisk -server <SERVERNAME> | ? {$_.diskpath -like "*.avhd"} | ftvmelementname, diskpath • (SCVMM) get-vm | get-virtualharddisk | ? {$_.location -like "*.avhd"} | ft name, location, hostname -a • (Hyper-V 3.0) Not a problem in Hyper-V 3.0 since Checkpoints/Snapshots Live Merge without downtime!!!! To see that the .AVHD(X) location Before deleting the Checkpoint/Snapshot. get-vm | Get-VMHardDiskDrive | ftvmname, path -a

  16. Finding VMs with ISOs mounted (and dismounting) • Cleaning up ISO files that are mounted to VMs is just a good practice as it can cause problems with Migrating VMs if Delegation is not setup correctly. • You may also have a file lock on a remote ISO file that you want to move or delete that is attached to a VM. But which one? VirtuallyAware.com

  17. (Hyper-V) • Get VMs with ISO mounted Get-VMDisk -server <SERVERNAME>| ? {$_.diskpath -like "*.iso"} | ftvmelementname,diskpath–a

  18. (SCVMM) • Get VMs with ISO mounted get-vm | get-virtualdvddrive |? {$_.iso -like "*"} | ft name, iso -a • Remove all ISO files from VMs get-vm | get-virtualdvddrive |? {$_.iso -like "*"} | set-virtualdvddrive -nomedia • Remove VMGuest ISO Only (All maybe to broad) get-vm | get-virtualdvddrive |? {$_.iso -like "vmg*"} | set-virtualdvddrive -nomedia

  19. (Hyper-V 3.0) • Get VMs with ISO mounted get-vm| get-VMDvdDrive | ? {$_.path –like”*.iso”} | ftvmname, path • Remove all ISO files from VMs get-vm |get-VMDvdDrive | ? {$_.path -like "*} | Set-VMDvdDrive -path $null • Remove VMGuest ISO Only (All maybe to broad) get-vm |get-VMDvdDrive | ? {$_.path -like “*vmguest.iso”} | Set-VMDvdDrive -path $null

  20. Integration Services Installs • Coordination of installation of Integration Components for all VMs on a Particular Host in mass (SCVMM) • Upgraded a Host that now needs all VM Integration Components install. • Administrator error. Not installing or updating Integration Components • Older Template from another version of Hyper-V. VirtuallyAware.com

  21. (SCVMM) $SH = Read-Host "Enter Source Host Name to Update all VMs" $VMM = Get-VMMServer “VMM_SERVERNAME" #Set this to the name of your SCVMM server $VMs = Get-Vm | ? {$_.hostname -like "$SH*"} #Get all the VMs on the SCVMM Server foreach ($VM in $VMs) { if ($VM.Status -eq ‘Running’) { #Only Work with those Vms that are Off Write-Host ‘Starting with ‘$VM.Name Shutdown-VM $VM #Machine needs to be off for this to work Set-VM –VM $VM –InstallVirtualizationGuestServices $TRUE Start-VM $VM } }

  22. Integration Services Installs • Coordination of installation of Integration Components for a list of VMs (SCVMM) • Targeted VMs on Various Hosts. VirtuallyAware.com

  23. (SCVMM) Foreach($VM in get-content servers.txt) { if ($VM.Status -eq ‘Running’) { #Only Work with those Vms that are Off Write-Host ‘Starting with ‘$VM.Name Shutdown-VM $VM #Machine needs to be off for this to work Set-VM –VM $VM –InstallVirtualizationGuestServices $TRUE Start-VM $VM } }

  24. Live Migrate VMs • Live Migration is works very well but with Hyper-V in Windows Server 2008 R2 SP1, you are limited to one live migration off the host. • Can change that, but with PowerShell we an automate the synchronous Live Migration from one host to another. • SCVMM comes with a Maintenance Mode option, but what if you wanted to preserve the mix of VMs that are currently on a node of your Hyper-V cluster VirtuallyAware.com

  25. Utilizes the FailoverClusterCMDLet Import-Module FailoverClusters $CL = Read-Host "Enter Cluster Alias Name" $SH = Read-Host "Enter Source Host Name" $DH = Read-Host "Enter Destination Host Name" get-cluster "$CL" | Get-Clusternode "$SH" | Get-ClusterGroup | Move-ClusterVirtualMachineRole -node "$DH"

  26. (SCVMM) Add-PSSnapinMicrosoft.SystemCenter.VirtualMachineManager $VMM = Read-Host "Enter Name of VMM Server" $SH = Read-Host "Enter Source Host Name" $DH = Read-Host "Enter Destination Host Name" Get-VMMServer -computername $VMM Get-VM | ? {$_.hostname -like "$SH*"} | Move-VM -VMHost "$DH*"

  27. Live Migrate Particular VMs • There are times when you might want to only Live Migrate particular VMs on a host. • Need to find common attributes between all the VMs you want to Live Migrate from one host to another • CSV Redirection and VM placement demo. VirtuallyAware.com

  28. (SCVMM) Add-PSSnapinMicrosoft.SystemCenter.VirtualMachineManager $VMM = Read-Host "Enter Name of VMM Server" $SH = Read-Host "Enter Source Host Name" $DH = Read-Host "Enter Destination Host Name" $Vol = Read-Host "Enter Volume/CSV Volume to Move VMs to Destination Host" Get-VMMServer -computername $VMM Get-VM | ? {$_.hostname -like "$SH*"} | ? {$_.Location -like "*$Vol*"} | Move-VM -VMHost "$DH*"

  29. What Else Can You Do? • A Lot more • Look for CMDLets associated with VMs, Hosts, Clusters and Experiment! (Remember to Import the Module or Add Snapin first. • (Hyper-V and SCVMM) Help Get Help Add Help New Help Set-VM -full Help Move-VM -full VirtuallyAware.com

  30. Articles • SCVMM PowerShell scripts simplify administrative tasks • Top Hyper-V PowerShell cmdlets for basic tasks • SCVMM Console Showing Incorrect VM Performance Stats • Using SCVMM PowerShell Cmdlets To Customize Hyper-V LiveMigrations • Overcoming Hyper-V Live Migration Limitations with PowerShell CMDLets • Add Possible Owner to a Cluster Shared Volume • Script Snip: “I am trying to find out how I can get the number of processors for a non-active VM” • SCVMM Script Snip VirtuallyAware.com

  31. Questions VirtuallyAware.com

  32. Contact and Blogs • My Bog– VirtuallyAware.com • Twitter - @VirtuallyAware • Email – Rob@VirtuallyAware.com • Other Hyper-V 3.0 Resources: • Virtualization Team - http://blogs.technet.com/b/virtualization/ • Ben Armstrong - http://blogs.msdn.com/b/virtual_pc_guy/ • Aiden Finn - http://www.aidanfinn.com/ • Hyper-V.nu – http://www.hyper-v.nu • Thomas Maurer - http://www.thomasmaurer.ch/ • KristianNese- http://kristiannese.blogspot.com/ VirtuallyAware.com

More Related