Post on 02-Nov-2014
description
transcript
vSphere PowerCLIThe best tool for automating vSphere
http://vmware.com/go/powercli
Introduction. About me.
Product Manager – APIs and platform.twitter.com/cshanklin (@cshanklin)
Did you know?Most of the world’s top virtualization
experts use twitter?
http://vmware.com/go/powercli
The Purpose of PowerCLI.
PowerCLI is a tool for automating all aspects of vSphere management and administration.
But PowerCLI is different because it’s purpose-built for use by administrators, not developers.
“Any knowledgeable vSphere administrator can look at PowerCLI code and immediately understand what it does.”
http://vmware.com/go/powercli
You need automation to survive the virtual world.
Virtual assets are extremely easy to create.
Some people call it “virtual sprawl”. But virtualization lets us do so much
more – more complexity is inevitable. Tools and skill sets must be upgraded to
match this rise in complexity.
http://vmware.com/go/powercli
Financial analysis – then.
Financial analysis – now.
PowerCLI changes the nature of your work.
In a lot of ways the current state of virtual management is like the accounting department from the 50s. A lot of manual labor.
Complex automation used to be only accessible to dedicated development teams.
But PowerCLI empowers you to do complex automation yourself.
http://vmware.com/go/powercli
How to get the most out of PowerCLI.
Remember that PowerCLI can automate anything in vSphere.Think about how these possibilities can
change the nature of the things you do every day.
Focus on increasing your productivity.Stop doing things manually.Start focusing on building automation tools
you can use again and again.http://vmware.com/go/powercli
Overview / Agenda. Getting to know you. Introduction to PowerShell. Introduction to PowerCLI. Managing VMs with PowerCLI. Managing ESX with PowerCLI. Managing Storage with PowerCLI. Managing Network with PowerCLI.
http://vmware.com/go/powercli
Overview / Agenda (cont). Other PowerCLI topics. Advanced: Intro to the API. Advanced Storage. Advanced Network. Advanced ESX. Other Advanced Topics.
http://vmware.com/go/powercli
Getting to know you.
How are you using PowerCLI today? Would you say you’re a beginner? Expert? How does PowerCLI integrate into your other
management practices? What things do you wish PowerCLI could do for
you? How do you manage physical + virtual? What is
lacking here? What key things did you hope to learn?
http://vmware.com/go/powercli
Getting to know you.
Where are you wasting your time?Provisioning?Change management?Troubleshooting?
What business pressures do you face?Supporting a wider variety of applications?Improving availability?Other things?
http://vmware.com/go/powercli
Intro To PowerShell
http://vmware.com/go/powercli
Top 5 things to know about PowerShell. The purpose. The cmdlets. The pipeline. The platforms. The products.
http://vmware.com/go/powercli
PowerShell: The Purpose. IT systems are getting more complex and inter-
connected. Virtualization leads to explosive growth in the
number of assets (network, app, etc) to manage.
Automation is becoming a valuable and needed skill for IT administrators.
PowerShell allows non-programmersto automate.
http://vmware.com/go/powercli
PowerShell: The cmdlets. PowerShell provides almost 200
commands, called cmdlets, natively. Close to 1,000 more commands are
available through various “snap-ins” (e.g. PowerCLI).
Within PowerShell, type “Get-Command” to see a listing of commands.
http://vmware.com/go/powercli
PowerShell: The Pipeline. The pipeline is how you compose
commands in PowerShell. Outputs of one command are
automatically made inputs of the next, based on type.
Example:Get-Process notepad | Stop-ProcessGet-VM myvm | Start-VM
http://vmware.com/go/powercli
PowerShell: The Platforms. PowerShell runs on all versions of
Windows since XP and up. Requires .NET 2.0. PowerShell is installed by default in
Windows 7 and Windows 2008 R2. All future versions of Windows will pre-
install it.
http://vmware.com/go/powercli
PowerShell: The Products. PowerShell support is required for all
Microsoft server applications.Exchange.Sharepoint.IIS.Many more.And, of course, VMware.
http://vmware.com/go/powercli
The top 9 most used cmdlets.Name Description
Foreach-Object
Execute code for each object in a collection.
Write-OutputPlace an object on the pipeline (or display on the screen if the pipeline is ending).
Out-File Write data to a file.
Where-Object Filter objects based on the given criteria.
Sort-Object Sort objects based on a specified property.
Get-Content Read data from a file.
Get-Childitem Get the child objects of a given object.
Select-ObjectSelect the specified properties from objects on the pipeline.
Read-Host Read user input.
The top 9 most used operators.Name Description
-eq Test to see if two objects are equal.
-gt True if object 1 is greater than object 2.
-and True if two Boolean conditions are both true.
-match Perform string matching.
-ne True if two objects are not equal.
-contains True if a list of objects contains a specified object.
-not Negate a Boolean condition.
-lt True if object 1 is less than object 2.
-or True if at least on Boolean condition is true.
How well do you know PowerShell? Would you say you’re more novice or
expert? Are you using PowerShell to manage
other things such as exchange? Do you view PowerShell as a strategic
direction for your IT OPS? Are the people picking up PowerShell
more “Windows people” or “UNIX people”? http://vmware.com/go/powercli
Demo
Most Used PowerShell Cmdlets and Operators.
http://vmware.com/go/powercli
3 Takeaways: Most used cmdlets.
PowerShell provides hundreds of commands that interoperate with VMware commands.
Microsoft continues to invest and expand PowerShell’s reach.
PowerShell + PowerCLI makes it possible to manage everything from virtual infrastructure to guest.
http://vmware.com/go/powercli
One bonus cmdlet you will need to automate!
Import-CSV. Imports a spreadsheet. Great for doing anything at large scale. Learn this pattern and technique you
won’t regret it!
http://vmware.com/go/powercli
Demo
Using Import-CSV.
Key cmdlets: Import-CSV Export-CSV Get-Content
http://vmware.com/go/powercli
3 Takeaways: Import-CSV.
Get familiar with Import-CSV! Two types of automation:
Make the same change to every object in a large set.
Make a different change to each object in a large set.
Import-CSV is an ideal choice for solving the second problem.
http://vmware.com/go/powercli
5 PowerShell tools you should use.
VESI (Virtualization EcoShell). PowerGUI. Virtu-Al.Net vSphere PowerPack. PowerShell WMI Explorer. PowerShell Plus.
http://vmware.com/go/powercli
Intro To PowerCLI
http://vmware.com/go/powercli
Top 5 things to know about PowerCLI. The purpose. The cmdlets. Cmdlet Tetris. The products. The future.
http://vmware.com/go/powercli
PowerCLI: The Purpose. You need automation.
Because it’s so easy to create virtual assets.
Because you need to keep up with the other guy.
PowerCLI is automation for everyone.Reduce the distance between person who
understands the problem and person who solves it.
PowerCLI is comprehensive. EverythingvCenter can do.
http://vmware.com/go/powercli
PowerCLI: The Cmdlets. 229 cmdlets in version 4.0 U1. Built on the vSphere Web Services API. Two ways to automate:
Simplified cmdlet approach.Advanced approach using Get-View (API).
More coming every 6 months or so.PowerCLI release philosophy is to release twice a
year and be very responsive to user feedback. Long-term goal to make Get-View
unnecessary.http://vmware.com/go/powercli
PowerCLI: Cmdlet Tetris. PowerShell commands follow the
pattern Verb-Noun or Verb-Object. For a given Object you will commonly
see these four commands:New-Object, Get-Object, Set-Object,
Remove-Object Look for this pattern to manage the full
lifecycle of a virtual object.http://vmware.com/go/powercli
PowerCLI: The Products. vCenter:
2.5, 4.0 ESX / ESXi
3.0, 3.5, 4.0 VMware Update Manager (preview)
http://vmware.com/go/powercli
PowerCLI: The Future. Continue to simplify automation until it
is truly accessible to everyone. Broaden the product portfolio to other
solutions such as SRM, vCloud, etc. Provide a more structured experience
(i.e. not “just a bunch of scripts on some network share”)
http://vmware.com/go/powercli
Making sense of it all.Cmdlet
Count by area
(4.0U1)
Provisioning
Change / Update
Report / Inventory
Report / Performance
ESX 10 26 17 3
Storage 2 9 6 3
Network 2 6 5 3
VM 12 30 15 3
Guest 3 12 4 3
Tools 2 1 0 3
V. Infrastructure
7 21 9 3
Availability 2 6 3 3
Total 40 111 59 24
Where do you feel the most pain? Configuring and maintaining ESX hosts? VMs? Reporting? Performance analysis? Troubleshooting?
http://vmware.com/go/powercli
Use Cases and Demos
http://vmware.com/go/powercli
PowerCLI Support Matrix (4.0 U1) (Latest)
Windows Vista (32 and 64 bit) Windows 2003 (32 and 64 bit) Windows XP
http://vmware.com/go/powercli
TIPS
PowerCLI Support Matrix (4.1) (Future!)
Windows 7 (32 and 64 bit) Windows 2008 (32 and 64 bit) Windows Vista (32 and 64 bit) Windows 2003 (32 and 64 bit) Windows XP
http://vmware.com/go/powercli
TIPS
3 ways to connect.
Use your username and password.Warning: don’t do this except interactively.
Use SSPI / Active Directory if you have it.
Use Import-PSCredential if you don’t.See http://poshcode.org/501
http://vmware.com/go/powercli
TIPS
Demo
A 5-minute introduction to PowerCLI.
Key cmdlets: Connect-VIServer Get-VMHost Get-VM
http://vmware.com/go/powercli
TIPS
3 Takeaways: 5 minute intro.
PowerCLI provides more than 200 commands and it’s growing all the time.
PowerCLI manages everything that vCenter manages and more.
PowerCLI makes automation easy enough that anyone can do it.
http://vmware.com/go/powercli
TIPS
Get-TheMost out of “Help”
Help is PowerShell’s built-in help system.
Everything you need to know is documented in the cmdlet itself.
Supports wildcards “Help *VM*” All PowerCLI cmdlets have examples.
“Help <cmdlet> -examples”“Help <cmdlet> -full”
http://vmware.com/go/powercli
TIPS
Get-TheMost out of “Get” cmdlets.
Learn how to string Get-Cmdlets together.Example: Get-Cluster X | Get-VMHost | Get-VM to
select all VMs in a cluster. PowerCLI cmdlets are designed to navigate
similar to the vSphere Client hierarchy.But PowerCLI can do things vSphere Client can’t.
You can learn this from them help but easierto just try it out.
Demo.http://vmware.com/go/powercli
TIPS
PowerCLI supports multiple connections.
Starting in PowerCLI 4.0 U1 you can connect to multiple vCenter or ESX servers at the same time.
Now you can automate across multiple vCenters or across multiple ESX even if vCenter is unavailable.
Demo.
http://vmware.com/go/powercli
TIPS
The top 9 VM-related cmdlets.Name Description
New-VM Create a new VM either from template or blank.
Get-VM Lists all VMs in a container.
Set-VM Changes VM settings such as memory size, etc.
Remove-VM Unregister or delete a VM.
Start-VM Start a VM.
Reset-VM Reboot a VM.
Get-VMGuest Gets a guest information including IP address, etc.
New-Snapshot Create a snapshot of a VM.
Get-Snapshot Enumerate VM snapshots.
VMS
Managing VMs with PowerCLI.
Provisioning. Change / Update.
Change its resource allocation (e.g. memory).
Change its networking.Add/remove storage.
VMware Tools.
http://vmware.com/go/powercli
VMS
What challenges do you face around VMs?
Do you tend to provision VMs in bunches or one-at-a-time?
What software do you use to provision? How do you provision lots of VMs? How often? Do you use templates or PXE-based builds? How are you increasing your VM
management ratios? How do you detect wasted VM resources?
http://vmware.com/go/powercli
VMS
3 ways to provision your VMs.
Creating blank VMs and PXE booting them.
Clone a template. Clone a VM while running.
http://vmware.com/go/powercli
VMS
Demo
Provisioning at large scales.
Key cmdlets: New-VM Get-Template Get-OSCustomizationSpec
http://vmware.com/go/powercli
VMS
3 Takeaways: Large-scale provisioning.
Whether you use templates or not, PowerCLI makes it easy to provision.
Even if you use static IP addresses PowerCLI can automate it.
Large-scale provisioning and Import-CSV were virtually made for each other.
http://vmware.com/go/powercli
VMS
Demo
Large-scale VM Updates.
Key cmdlets: Get-VM Set-VM
http://vmware.com/go/powercli
VMS
3 Takeaways: VM Updates.
Large-scale updates are easy with Set-VM.
Master Get-* and Where cmdlets to target exactly the VMs you want.
If you’re worried about the impact, use –whatif.
http://vmware.com/go/powercli
VMS
Demo
Dealing with snapshots.
Key cmdlets: Get-Snapshot Remove-Snapshot Where-Object
http://vmware.com/go/powercli
VMS
3 Takeaways: Snapshots.
Snapshots are the “silent datastore killer”.
Track their age and size with PowerCLI. Deleting lots of snapshots is a snap
(sorry).
http://vmware.com/go/powercli
VMS
The top 8 ESX-related cmdlets.Name Description
Add-VMHost Add an ESX host to vCenter.
Get-VMHost Enumerate ESX hosts in a container (e.g. cluster)
Restart-VMHost Restart an ESX host.
Get-VMHostHBA Get ESX Host Bus Adapters.
Get-VMHostFirmware Get a backup of an ESXi host.
Get-VMHostNetworkAdapter
Get ESX host network adapters including info like ESX IP address.
Set-VMHostNetworkAdapter
Change ESX host network adapters including IP, MAC address, etc.
Apply-VMHostProfile Configure ESX using Host Profiles.
ESX
Managing ESX with PowerCLI.
Provisioning (Host profiles or scripted) Change / Update.
Storage.Network.Security, etc.
Managing power and connection state.
http://vmware.com/go/powercli
ESX
What challenges do you face deploying ESX?
What software do you use to deploy? How do you track inventory and
monitor ESX? How do you manage the ESX / vCenter
relationship? How do you manage storage and
network to your ESX systems? How are you planning to deal with ESXi?
http://vmware.com/go/powercli
ESX
2 ways to provision your ESX hosts.
Host Profiles.Provision one server just the way you like it.“Stamp out” the configuration to other
servers. Home-grown scripts (covered later).
Run a custom script to do complete configuration of a server.
http://vmware.com/go/powercli
ESX
Demo
Dealing with Host Profiles.
Key cmdlets: Get-VMHostProfile Apply-VMHostProfile Test-VMHostProfileCompliance
http://vmware.com/go/powercli
ESX
3 Takeaways: Host Profiles.
Host Profiles simplify the process of creating identically configured ESX hosts.
The purpose of profiles is avoiding cost and complexity “I don’t have to worry about a million things.”
Host Profiles are a strategic direction for VMware and will continue to improve.
http://vmware.com/go/powercli
ESX
Why we cluster.
Clustering is the heart of VMware’s real value.High availability.Automated resource management and
balancing. PowerCLI gives complete and granular
control over cluster configuration.
http://vmware.com/go/powercli
ESX
Demo
Clustering your hosts for max availability.
Key cmdlets: New-Cluster Set-Cluster Move-VMHost
http://vmware.com/go/powercli
ESX
2 Takeaways: Clustering.
In the past all interesting VMware functionality happened at the host level. Recently this has been moving to cluster (eventually to datacenter).
PowerCLI gives you the tools you need to configure, monitor and audit your clusters.
http://vmware.com/go/powercli
ESX
You can also automate DRS rules.
Key cmdlets:New-DrsRuleGet-DrsRuleSet-DrsRuleRemove-DrsRule
http://vmware.com/go/powercli
ESX
The top 9 storage-related cmdlets.Name Description
New-Datastore Create a new NFS or VMFS datastore.
Get-Datastore Enumerate existing datastores.
Remove-Datastore
Remove a datastore.
Get-VMHostStorage
List ESX storage properties or rescan ESX storage.
Get-ScsiLun Enumerate SCSI LUNs visible to ESX.
Get-ScsiLunPath Enumerate the LUN paths for a SCSI LUN.
Get-VMHostHBA Enumerate an ESX host’s Host Bus Adapters.
Set-VMHostHBAConfigure an HBA including iSCSI authentication parameters.
vmstore: A filesystem-based datastore browser.
STORAGE
Managing Storage with PowerCLI.
Adding existing datastores or formatting new.
Rescanning storage. Capacity and utilization reports. Identifying datastores that are not
visible to the entire cluster.
http://vmware.com/go/powercli
STORAGE
What challenges do you face around storage?
Do you have a dedicated storage team? How well do storage and virtualization interact?
Do you have separate storage management tools?
How do you identify and resolve storage bottlenecks?
When users complain about slow applications, what do you do?
http://vmware.com/go/powercli
STORAGE
Storage VMotion is a snap.
Move-VM is a versatile command. If you use –Datastore you will Storage
VMotion.
http://vmware.com/go/powercli
STORAGE
Demo
VMotion and Storage VMotion with Move-VM.
Key cmdlets: Move-VM Get-VMHost Get-Datastore
http://vmware.com/go/powercli
STORAGE
3 Takeaways: Storage VMotion.
Performing a Storage VMotion can take a really long time.
Perfect reason to script it. Try to beat this simplicity:
Get-VM –Datastore ds1 | Move-VM –Datastore ds2
http://vmware.com/go/powercli
STORAGE
Save money with thin provisioning.
Allocate space as it is used rather than all at once.
Huge space savings at the cost of some performance.
You can provision new VMs thin or convert existing with PowerCLI.
http://vmware.com/go/powercli
STORAGE
Demo
Thin Provisioning.
Key cmdlets: New-VM New-Harddisk Set-Harddisk
http://vmware.com/go/powercli
STORAGE
3 Takeaways: Thin Provisioning.
Storage is expensive! Why pay for the parts you’re not using?
With simple PowerCLI scripts you can change existing VMs to use thin provisioning.
Or just build an easy report to see how much you’re using or how much you could save.
http://vmware.com/go/powercli
STORAGE
Demo
Adding NFS Datastores to ESX.
Key cmdlets: New-Datastore
http://vmware.com/go/powercli
STORAGE
2 Takeaways: NFS Datastores.
Adding and auditing NFS datastores is simple with PowerCLI.
Warning: NFS performance statistics are not available (coming in a future version of vSphere).
http://vmware.com/go/powercli
STORAGE
The top 9 network-related cmdlets.Name Description
New-VirtualSwitch Create a virtual switch (classic only!)
Get-VirtualSwitch Enumerate virtual switches.
New-VirtualPortGroup Create a portgroup with a virtual switch.
Set-VirtualPortGroup Modify a portgroup.
New-NetworkAdapter Create a new network adapter for a VM.
Get-NetworkAdapter Enumerate a VM’s network adapter.
Set-NetworkAdapterModify a VM’s network adapter properties (e.g. MAC)
Remove-NetworkAdapter
Remove a VM’s network adapter.
Set-VMHostNetworkAdapter
Modify an ESX host’s network adapter.
NETWORK
Managing Networking with PowerCLI.
Adding or configuring VMKernel. Moving VMs between virtual switches. Configuring virtual switch policies.
http://vmware.com/go/powercli
NETWORK
What challenges do you face around network?
How do you manage the interaction between virtual and physical switch? Example: VLAN, CDP.
How do you ensure consistent network configuration across ESX hosts?
Do you use trunking for max performance? Have you encountered problems doing this?
http://vmware.com/go/powercli
NETWORK
Demo
Moving VMs between networks.
Key cmdlets: Get-NetworkAdapter Set-NetworkAdapter
http://vmware.com/go/powercli
NETWORK
2 Takeaways: Changing VM Networks.
Moving VMs from one network to another is quick and easy.
If a virtual switch is re-created, on purpose or by accident, your VMs will all be disconnected. You can solve that with one line of PowerCLI.
http://vmware.com/go/powercli
NETWORK
Demo
Configuring Consistent Virtual Switches.
Key cmdlets: New-VirtualSwitch Get-VirtualSwitch
http://vmware.com/go/powercli
NETWORK
3 Takeaways: Virtual Switches.
Creating consistent virtual switches is key for many VMware features such as DRS.
Creating switches manually is insane, especially considering the simplicity of PowerCLI.
You can also set policy items like failover and load balancing (covered later). http://vmware.com/go/powercli
NETWORK
The top 5 reporting cmdlets.Name Description
Get-* Enumerate all sorts of virtual inventory.
Get-Stat Get performance statistic for any inventory item.
Get-VIEvent List all events.
Export-CSV Write objects to CSV-formatted output.
ConvertTo-Html
Convert objects to HTML.
REPORTS
Reporting with PowerCLI.
Three major categories of PowerCLI reports.Inventory-based reporting.Statistic-based reporting (i.e. performance)Event-based reporting.
http://vmware.com/go/powercli
REPORTS
Reporting with PowerCLI.
What reporting tools do you use today? Do you think they are good?
Do you use reports more for planning or more for reacting to problems?
Where do you feel you are “in the dark”?
http://vmware.com/go/powercli
REPORTS
Inventory-based reporting.
Relies on Get-* cmdlets as a starting point.
Generally combined with Export-CSV or ConvertTo-Html.
http://vmware.com/go/powercli
REPORTS
Report on your guest disk capacity.
Basic report. Sort by least % free space. Show all guests with <10% free space.
http://vmware.com/go/powercli
REPORTS
Demo
Reporting on Guest Disk Capacity.
Key cmdlets: Get-VM Get-Harddisk
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Guest Disks.
Relies on VMware Tools! Avoid a disaster by identifying disks
that are about to overflow. Also makes it easy to understand how
much thin provisioning would save you.
http://vmware.com/go/powercli
REPORTS
Reporting with custom attributes.
Custom attributes are extremely useful for tracking things unique to your deployment.Example: VM owner, app owner, etc.
Get-CustomAttribute.
http://vmware.com/go/powercli
REPORTS
Demo
Reporting with Custom Attributes.
Key cmdlets: Get-CustomAttribute Get-Inventory
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Custom Attributes.
If you’re not using custom attributes – start!
Audit your custom attributes to determine compliance (all the data is there and accurate)
You should set attributes as part of your provisioning process.
http://vmware.com/go/powercli
REPORTS
Demo
Security reporting using roles and permissions.
Key cmdlets: Get-VIUser Get-VIRole
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Roles and Permissions.
PowerCLI gives you all the tools you need to audit roles and permissions.
With Quest’s ActiveRoles you can load Active Directory information for more useful reports.
With PowerCLI you can easily duplicate roles and permissions between vCenter instances.
http://vmware.com/go/powercli
REPORTS
Statistic-based reporting.
Relies on Get-Stat as a starting point. Commonly you will rank the results. This can feed into other script logic or
be exported like an inventory report would be exported.
http://vmware.com/go/powercli
REPORTS
Get-TheMost out of Get-Stat. Get-StatType identifies available
statistics. Understanding instances is critical. Note: vCenter and ESX may report
different types of statistics.
http://vmware.com/go/powercli
REPORTS
Demo
Introduction to statistic-based reporting.
Key cmdlets: Get-Stat
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Reporting with Statistics.
Querying statistics help you identify and solve performance problems.
Stats on vCenter are determined by stat level. The higher the level the more stats you have.
If you query ESX directly all stats are available but for short periods (5 mins on 3.5, 1hr on 4.0)
http://vmware.com/go/powercli
REPORTS
Top 8 Most Interesting Statistics.Name Description
cpu.usage.average CPU usage as a percentage of total.
cpu.usagemhz.average CPU usage in MHz of CPU used.
cpu.ready.summationAmount of time a VM is ready to run but can’t due to not enough cores available.
mem.usage.average Average memory usage.
disk.read.average Average amount of data read from the disk.
disk.write.average Average amount of data written to disk.
disk.totalreadlatancy.average
Average LUN read latency in milliseconds.
disk.totalwritelatency.average
Average LUN write latency in milliseconds.
REPORTS
Demo
Most and least busy VMs and Hosts.
Key cmdlets: Get-Stat
http://vmware.com/go/powercli
REPORTS
2 Takeaways: Host and VM Usage.
Identifying overused resources it the first step to effective rebalancing.
With PowerCLI you get a complete picture all at once no matter how many hosts or VMs you have.
http://vmware.com/go/powercli
REPORTS
Event-based reporting.
Relies on Get-VIEvent as a starting point.
Most vSphere actions create events in order to generate an audit trail.
This audit trail can be followed and inspected for a large number of uses.
http://vmware.com/go/powercli
REPORTS
Demo
Introduction to event-based reporting.
Key cmdlets: Get-VIEvent
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Event-based reporting.
Events tell you who did what when. ESX retains a fixed number of events,
vCenter retains all events since a given date.
Before you report events be sure to understand your vCenter’s event retention policy.
http://vmware.com/go/powercli
REPORTS
Demo
When was that VM powered on?
Key cmdlets: Get-VIEvent
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Determining VM Poweron Date.
Just one of many reports you can do with events.
Others:If an outage occurs you can find which
modifications may have contributed to the outage using –Start and –Finish.
Track who logged in and when.
http://vmware.com/go/powercli
REPORTS
You can get your VM’s log file too.
Get to know vmstore: Use Copy-DatastoreItem to bridge the
gap between local and remote.
http://vmware.com/go/powercli
REPORTS
This report will make your manager love you (in a completely legal way).
Alan Renouf’s Daily Report. Reports:
Numbers of objects in inventory (VMs, hosts, etc)Datastores running out of space.Snapshots over X days old.Disconnected hosts.Lots more!
All emailed to you every morning! http://www.virtu-al.net/2009/11/04/vcheck-daily-
report-v3/
http://vmware.com/go/powercli
REPORTS
Stuff Alan’s Daily Report Will Tell You. Number of Hosts Number of VMs Number of Datastores Number of DRS Migrations for the last days Snapshots over x Days old Datastores with less than x% free space VMs created over the last x days VMs with No Tools VMs with CD-Roms connected VMs with CPU ready over x% Hosts in Maintenance Mode VC Error Events over the last x days VC Windows Event Log Errors for the last x days with VMware in the details VM active alerts Cluster Active Alerts vSphere check: Outdated VM Hardware (Less than V7) VMs in Inconsistent folders (the name of the folder is not the same as the name)
http://vmware.com/go/powercli
REPORTS
Sample Daily Report Output.REPORTS
The top 9 other cmdlets.Name Description
Move-VM VMotion or Storage VMotion a VM.
Set-ClusterMost advanced vSphere features operate on a cluster level. This cmdlet gives you control over clusters.
New-CustomAttribute
Custom attributes let you add your own notes and properties to vSphere items.
Set-AnnotationAnnotations define the value of an attribute for an object.
Get-VIRole This cmdlet makes it easy to audit roles.
Get-VIPermission This cmdlet makes it easy to audit permissions.
Import-VApp Importing a Virtual Appliance is simple with PowerCLI.
Invoke-VMScriptWith this command you can run scripts within your guests.
Get-View This cmdlet is the gateway to the vSphere API.
TIPS
Top 5 PowerCLI FAQs (With answers!)
How to upgrade VMware Tools with no reboot?
How to move only one disk during Storage VMotion?
How to change the ESX host’s root password?
How do I take lots of actions simultaneously?
How to get the VM’s UUID? http://vmware.com/go/powercli
TIPS
Top 5 PowerCLI FAQs (With answers!)
How to upgrade VMware Tools with no reboot?New in PowerCLI 4.0 U1, Update-Tools –
NoReboot How to move only one disk during Storage
VMotion?Use Set-HardDisk –Datastore.Bug: Requires the VM to be powered off. This is
fixed in 4.1.
http://vmware.com/go/powercli
TIPS
Top 5 PowerCLI FAQs (With answers!)
How to change the ESX host’s root password?Connect directly to the ESX host.Use Get-VMHostAccount / Set-VMHostAccount.
How do I take lots of actions simultaneously?Most PowerCLI commands support the –Runasync
flag, which causes jobs to run in the background.Use this along with Wait-Task.Demo.
http://vmware.com/go/powercli
TIPS
Top 5 PowerCLI FAQs (With answers!)
How to get the VM’s UUID?Inside the view property config.uuidGet-VM | Select Name, { ($_ | Get-
View).config.uuid }Or using object extensions (upcoming
feature).Demo.
http://vmware.com/go/powercli
TIPS
Secure your scripts with these tips.
You can configure PowerShell to not run unsigned scripts.
Set-ExecutionPolicy AllSigned PowerShell Plus has built-in script
signing.
http://vmware.com/go/powercli
TIPS
3 mistakes you need to avoid! Careful when using New-Snapshot!
Use –Memory if you want to revert to the snapshot without powering the VM off.
Careful when deleting that VM!If you don’t use –DeleteFromDisk it will
simply be unregistered. Don’t use Write-Host!
Except as debugging, instead useWrite-Output.
http://vmware.com/go/powercli
TIPS
4 tips to make your scripts more readable
Use object names rather than separate cmdlet calls.
Use line continuation (backticks) when necessary.
Factor code into functions. Use PowerGUI, VESI, or PowerShell Plus
for syntax highlighting.
http://vmware.com/go/powercli
TIPS
Demo
Maximizing readability and maintainability.
http://vmware.com/go/powercli
TIPS
3 Takeaways: Readability.
Readable code is maintainable code. Take maximum advantage of Object-By-
Name. The pipeline separates PowerShell from
other languages. Use it a lot and your readability will greatly improve.
http://vmware.com/go/powercli
TIPS
Demo
Speeding up your scripts.
http://vmware.com/go/powercli
TIPS
3 Takeaways: Speeding up your scripts.
PowerShell does not optimize scripts. Factor variables out manually.
Be aware of the performance penalties OBN introduces. If you have the object handy, don’t use its name.
If your scripts are slow, consider caching more objects client-side.
http://vmware.com/go/powercli
TIPS
1 feature you absolutely need to know.
Object Extensions. Is your favorite object missing a
property? Add it yourself! This will fundamentally change the way
you script and report. “PowerCLI 2.0” Demo.
http://vmware.com/go/powercli
TIPS
Demo (Future Features)
Simplifying Reporting With Object Extensions.
Key cmdlets: New-VIObjectExtensionProperty (Name subject to change)
http://vmware.com/go/powercli
TIPS
3 Takeaways: Object Extensions.
Object Extensions will radically simplify your scripts and reports.
If you ever wished an object had a certain property or field, find it in the API and you will soon be able to add it yourself.
Coming soon in PowerCLI 4.1.
http://vmware.com/go/powercli
TIPS
Learn to write a PowerShell Advanced Function
PowerShell Advanced Functions function almost exactly like PowerShell cmdlets.
You can write scripts that:Sit in the PowerShell pipeline.Interoperate with all PowerCLI cmdlets.
Demo. “help about_functions_advanced”. See “VI Toolkit Extensions” for samples.
http://vmware.com/go/powercli
TIPS
Learn to write a PowerShell Advanced Function
PowerShell Advanced Functions function almost exactly like PowerShell cmdlets.
You can write scripts that:Sit in the PowerShell pipeline.Interoperate with all PowerCLI cmdlets.
Demo. “help about_functions_advanced”. See “VI Toolkit Extensions” for samples.
http://vmware.com/go/powercli
TIPS
Anatomy of an advanced function.TIPS
function Advanced-Function { param( [Parameter(Mandatory=$true,...] [VMware.VimAutomation.Client20.VMHostImpl] $VMHost ) Begin { ... } Process { ... } End { ... }}
Initialize at the start of the pipeline (opt)
Process each object in the pipeline.
Called at the end of the pipeline (opt)
Sample advanced function: ESX Host Routes.
Demo.
http://vmware.com/go/powercli
TIPS
Resources
http://vmware.com/go/powercli
3 must-own resources:
Managing VMware Infrastructure with Windows PowerShell.
vSphere 4.0 Quick Start Guide. VMware vSphere Pro Series Training.
http://vmware.com/go/powercli
TIPS
http://vmware.com/go/powercli
The “PowerCLI Bible”TIPS
http://vmware.com/go/powercli
Lots of PowerCLI Samples.TIPS
New training from TrainSignal!TIPS
6 Amazing Blogs to Follow:Address Why it’s great:
http://www.virtu-al.net/ Alan Renouf has collected tons of great scripts into a PowerPack, including amazing reports.
http://lucd.info/ Luc Dekens is the world’s leading PowerCLI expert.
http://ict-freak.nl/ Arne Fokkema heeft veel grote scripts!
http://professionalvmware.com/
Cody Bunch is an automation master at a large, US based hosting and PAAS provider.
http://get-admin.com/blog/ Glenn Sizemore has a great collection of VMware and NetApp scripts.
http://blogs.vmware.com/vipowershell
The VMware PowerCLI blog.
TIPS
The most important resource of all:
The PowerCLI Community. http://vmware.com/go/powercli More than 500 scripts. Search a huge and growing
knowledgebase. Ask questions and get answers.
http://vmware.com/go/powercli
TIPS
By Sheer Coincidence.
PowerShell Master Class [3 dagar] Instructor: Thomas Lee, PowerShell MVP Begins 2010-03-09 http://www.labcenter.se/Lab/2056
http://vmware.com/go/powercli
TIPS
Advanced Stuff!
http://vmware.com/go/powercli
The vSphere API Stack.API
Managed objects and automation objects.
PowerCLI uses two object models.Automation objects: Small objects containing
only the most critical data. Returned by Get-* cmdlets (example Get-VM).
View objects: Full objects with no properties missing. Not optimized for usability.
You can easily transition between the two.Get-View: Automation to view object.Get-VIObjectByVIView: View to automation.
http://vmware.com/go/powercli
API
Explore the vSphere API with PowerCLI.
Get-View is your gateway to the API. You can pipe most objects to Get-View. Some objects have hard-coded names
and can must be loaded directly.E.g. Get-View ServiceContent
http://vmware.com/go/powercli
API
You can do anything with Get-View.
When you load a view with Get-View all its properties and methods are available to you.
You can see all this with PowerShell’s Get-Member cmdlet.
http://vmware.com/go/powercli
API
Demo
Use Get-View and Get-Member to explore the API.
Key cmdlets: Get-View Get-Member
http://vmware.com/go/powercli
API
4 Takeaways: Get-View.
Get-View opens the full power of the API to you.
You can do anything vCenter can do using this API.
But: you have to use the vSphere API, which can be quite challenging.
Refer to the docs:http://www.vmware.com/support/developer/vc-sdk/
visdk400pubs/ReferenceGuide/index.html
http://vmware.com/go/powercli
API
Surviving the vSphere API Documentation.
Most useful starting points: Search within:All managed objects – OR –All methods.
API has managed objects and data objects.Managed objects define methods, data
objects do not.
http://vmware.com/go/powercli
API
Surviving the vSphere API Documentation (cont)
When calling managed object methods you will generally need to supply some data objects.
Managed objects are returned by PowerCLI’s Get-View cmdlet.
Data objects are constructed by PowerShell’s New-Object cmdlet.New-Object
VMware.Vim.VirtualMachineConfigSpec
API
Using “Project Onyx”.
Onyx is a code generator. Sits between vSphere Client and
vCenter. Any UI click is automatically turned to
code.
http://vmware.com/go/powercli
API
“Project Onyx” Architecture.API
ESX or vCenter
Demo
Using Onyx.
http://vmware.com/go/powercli
API
3 Takeaways: Onyx.
Onyx makes it simple to understand what calls vSphere Client makes and when.
From this you can understand the best practices and tested code paths VMware uses.
Warning: You will need to re-factor code generated by Onyx.
http://vmware.com/go/powercli
API
Advanced VM management topics. PowerCLI can run commands inside
your guests. You can granularly control the
placement of memory and snapshot files.
Using View? PowerCLI gives you granular control over VM video memory.
http://vmware.com/go/powercli
VMS
2 ways to manage your guests. With PowerShell / PowerCLI you can
manage inside your guest too. Option 1: WMI over the network. Option 2: Invoke-VMScript and related
cmdlets via VMware Tools.
http://vmware.com/go/powercli
VMS
Demo
Guest management.
Key cmdlets: Invoke-VMScript Copy-GuestFile
http://vmware.com/go/powercli
VMS
3 Takeaways: Guest Management.
Run programs in your guest or copy files there.You could combine these to install software
agents, etc. Supports Windows or Linux. Works even if your VM’s network is
down or disconnected.
http://vmware.com/go/powercli
VMS
More advanced guest management: Customizing the scripts.
Certain guest cmdlets can be completely re-wired by substituting their scripts.
Script sources located at $env:PROGRAMFILES\VMware\Infrastructure\vSphere PowerCLI\Scripts
http://vmware.com/go/powercli
VMS
Demo
Changing swap and memory location.
Key cmdlets: Get-View
http://vmware.com/go/powercli
VMS
4 Takeaways: Changing swap location.
Take advantage of cheaper storage for less critical data.
Controllable on a per-cluster, per-host, or per-vm basis.
Changes location for both snapshot and virtual memory.
Warning: Decreases average reliability.
http://vmware.com/go/powercli
VMS
Advanced storage management topics.
All about iSCSI. Storage path reporting and
management. Telling the difference between shared
and unshared storage. Reporting on LUN performance. Configuring queue depth.
http://vmware.com/go/powercli
STORAGE
Adding iSCSI datastores.
Adding iSCSI to ESX is a good deal more complex.
But it offers more options and security features.
PowerCLI can add the storage with or without authentication.
http://vmware.com/go/powercli
STORAGE
Demo
Adding iSCSI to your hosts.
Key cmdlets: Get-VMHostStorage Get-ScsiLun New-Datastore
http://vmware.com/go/powercli
STORAGE
3 Takeaways: Using iSCSI.
iSCSI comes in two flavors, software and hardware.
To use software iSCSI you must enable the virtual iSCSI adapter.
iSCSI has richer security capabilities than NFS. This leads to higher complexity.
PowerCLI has very rich support for iSCSI. http://vmware.com/go/powercli
STORAGE
Two types of storage for your VMs.
VMDK-based virtual hard disks. Raw devices (RDM). Warning: Think hard before using RDM!
Won’t overcome size limitations!Won’t necessarily give you better
performance!
http://vmware.com/go/powercli
STORAGE
Demo
Finding and mounting raw devices.
Key cmdlets: Get-ScsiLun New-Harddisk
http://vmware.com/go/powercli
STORAGE
3 Takeaways: Raw Devices.
Raw devices are necessary in some applications such as MSCS.
PowerCLI makes it easy to mount, unmount and report on raw devices.
Warning: If you don’t need raw devices you probably shouldn’t use them.
http://vmware.com/go/powercli
STORAGE
Demo
Find VMs on unshared storage.
Key cmdlets: Get-View Get-Datastore Get-VM
http://vmware.com/go/powercli
STORAGE
3 Takeaways: Unshared VMs.
VMs on unshared storage can’t participate in many advanced vSphere features such as DRS.
If you’ve got hundreds or thousands of VMs you have to automate finding unshared VMs.
PowerCLI also makes it easy to solve the problem: with Move-VM.
http://vmware.com/go/powercli
STORAGE
Demo
Determining LUN Performance.
Key cmdlets: Get-Stat Warning: Doesn’t work with NFS
storage.
http://vmware.com/go/powercli
STORAGE
3 Takeaways: LUN Performance.
LUN latency is a key statistic to watch. If it gets too high, workloads will be affected.
There are no real standards but a pretty good suggestion is:Virtual desktops: Users will start complaining at about
20ms latency.Non-interactive, workloads: will be impacted around
40ms latency. Once you identify the problem, solve it
with PowerCLI’s Move-VM.
http://vmware.com/go/powercli
STORAGE
Configuring adapter queue depth.
By default your adapter’s queue depth is 32. This can be adjusted. Warning: adjustments require host reboots. Warning: May increasing queue depth may
worsen performance depending on your storage network and storage.
http://frankdenneman.wordpress.com/2009/03/04/increasing-the-queue-depth/
http://vmware.com/go/powercli
STORAGE
Demo
Configuring adapter queue depth.
Key cmdlets: Set-VMHostModule
http://vmware.com/go/powercli
STORAGE
3 Takeaways: Queue Depth.
Increasing queue depth can improve your storage performance.
It can also harm it, especially on LUNs shared by lots of hosts.
Be sure to read and understand all factors in play before making any changes.
http://vmware.com/go/powercli
STORAGE
Advanced network management.
Advanced switch and portgroup policies.
Creating and updating your service consoles.
http://vmware.com/go/powercli
NETWORK
Demo
Advanced Network Management.
Key cmdlets XXX need demo copied to desktop: Get-NicTeamingPolicy Set-NicTeamingPolicy
http://vmware.com/go/powercli
NETWORK
3 Takeaways: Advanced Network Management.
Policies can be set on a per-switch or per-portgroup basis.
Switch policies are inherited by portgroups unless they are explicitly overridden.
The right policy is critical to effective operation and high availability of your ESX hosts. PowerCLI helps you be consistent. http://vmware.com/go/powercli
NETWORK
Advanced ESX management.
ESX build scripts. Setting advanced configuration
parameters. Licensing.
http://vmware.com/go/powercli
ESX
ESX build scripts you can use.
Lance Berc’s “How To Configure Freshly Booted ESX with PowerShell”http://communities.vmware.com/thread/
161304 Stephen’s Campbell’s “Not Another ESX
Provisioning Script”http://communities.vmware.com/docs/DOC-
8170
http://vmware.com/go/powercli
ESX
Demo
Advanced Host Options.
Key cmdlets: Set-VMHostAdvancedConfiguration
http://vmware.com/go/powercli
ESX
3 Takeaways: Advanced Host Options.
There are hundreds of advanced host options.
Some vendors (example NetApp) recommend specific settings for some options. PowerCLI ensures you can set and audit these consistently.
Warning: advanced options regularly change between releases.
http://vmware.com/go/powercli
ESX
Demo
Licensing.
Key cmdlets: Get-View
http://vmware.com/go/powercli
ESX
3 Takeaways: Licensing.
Applying a license is a necessary step in any ESX build script.
Licensing changed a lot for vSphere. Different calls are needed depending on
if you are connected to ESX or vCenter.
http://vmware.com/go/powercli
ESX
Advanced Reporting.
Identifying performance bottlenecks. Searching and archiving log files. Mixing vSphere and Active Directory.
http://vmware.com/go/powercli
REPORTS
Demo
Identifying performance bottlenecks.
Key cmdlets: Get-Stat
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Performance Bottlenecks.
Bottlenecks occur when too many things compete for too few things.
PowerCLI can identify resources that have too many competitors.
PowerCLI can also easily move these around to balance workloads.
http://vmware.com/go/powercli
REPORTS
Demo
Archiving Log Files.
Key cmdlets: Copy-DatastoreItem
http://vmware.com/go/powercli
REPORTS
3 Takeaways: Archiving Log Files.
Retaining log files is critical for audit and compliance.
Log files are rotated (a.k.a. deleted) regularly.
The number of log files retained is customizable through PowerCLI.
http://vmware.com/go/powercli
REPORTS
6 Advanced FAQs (with answers!)
How can I reconfigure all my alarms to send SNMP traps?
How to find and register missing VMs? How to report on RDM? How to change DNS servers for ESX? How do I schedule a PowerCLI script? How about a script to respond to an
alarm?http://vmware.com/go/powercli
TIPS
Demo
Updating vCenter alarms.
Key cmdlets: Get-View
http://vmware.com/go/powercli
TIPS
2 Takeaways: vCenter Alarms.
If you’re deploying a lot of vCenter instances, PowerCLI will consistently reconfigure alarms just the way you want them.
LucD has a great script to move alarms from one container to another.http://lucd.info/?p=1799
http://vmware.com/go/powercli
TIPS
Demo
Find and register missing VMs.
Key cmdlets: Get-VM Get-View Get-Childitem
http://vmware.com/go/powercli
TIPS
2 Takeaways: Registering VMs.
Unregistering a VM rather than deleting it is a very common problem. This leads to wasted resources.
Warning: If you have two vCenters sharing the same storage, you will get false positives!
http://vmware.com/go/powercli
TIPS
Demo
Reporting on RDM.
Key cmdlets: Get-VM Get-ScsiLun
http://vmware.com/go/powercli
TIPS
1 Takeaway: RDM Reporting.
This simple report will help you ensure RDM is only being used by VMs that need it.
http://vmware.com/go/powercli
TIPS
Demo
Changing ESX IP address and DNS server.
Key cmdlets: Set-VMHostNetwork Set-VMHostNetworkAdapter
http://vmware.com/go/powercli
TIPS
2 Takeaways: Changing ESX IP and DNS.
Setting IP and DNS is another essential component of deploying ESX.
The same PowerCLI command lets you set IP and DNS attributes.
http://vmware.com/go/powercli
TIPS
How to schedule PowerCLI scripts.
Alan Renouf has a great writeup.http://www.virtu-al.net/2009/07/10/running-
a-powercli-scheduled-task/
http://vmware.com/go/powercli
TIPS
3 vSphere killers to regularly check.
Are any VMs waiting for answers? Automatically scanning for
configuration issues. DRS clusters with configuration
problems.
http://vmware.com/go/powercli
TIPS
Running scripts in response to alarms.
Fully documented 5 step process on the PowerCLI blog.
http://blogs.vmware.com/vipowershell/2009/09/how-to-run-powercli-scripts-from-vcenter-alarms.html
http://vmware.com/go/powercli
TIPS
Questions?
Download today: http://vmware.com/go/powercli
http://vmware.com/go/powercli