Quantcast
Channel: VMware PowerCLI Blog
Viewing all 146 articles
Browse latest View live

New Release – DSC Resources for VMware 2.0

$
0
0

The Desired State Configuration (DSC) Resources for VMware was released late last year. This initial release was able to leverage the PowerShell DSC engine in order to declare configurations for a handful of ESXi host settings and a couple vCenter server settings. The response to these resources has been amazing! So amazing that over the last 7 months, there have been 64 issues and 74 pull requests. A result of all of that feedback, input, and code contributions brings us to the next release, version 2.0 of the DSC Resources for VMware!

The DSC Resources for VMware version 2.0 contains a number of new resources, lots of improvements, and a new way to access them. First and foremost, as requested, these resources are now available on the PowerShell Gallery! There are also a number of examples which have been added to the repository since the first release. In the root of the repo, there’s an ‘Examples’ folder which contains some examples of combining multiple resources into a single configuration. Then, within the resource itself, there’s a folder by the name of ‘Configurations’. This folder has example configurations of using these resources with configuration management utilities like Ansible, Chef, and Puppet. Lastly, there are 14 new resources for us to use!

Let’s walk through some of the new resources.

New Resources

These newly added resources can be easily categorized into the following buckets: Inventory, vSphere Standard Switch (vSS), and VMHost.

The new Inventory resources, which allow us to manage the existence of these object types, are:

  • Cluster
  • HACluster
  • DRSCluster
  • DatacenterFolder
  • Datacenter
  • Folder

The following is an example of using the Folder resource to manage a VM based folder, named Management, along with a folder nested in the first folder:

Folder "Folder_Management" {
    Server = $Server
    Credential = $Credential
    Name = Management
    Location = ''
    DatacenterName = 'DemoLab'
    DatacenterLocation = ''
    Ensure = 'Present'
    FolderType = 'VM'
    DependsOn = "[Datacenter]DemoLab"
}

Folder Folder_Management_VMware {
    Server = $Server
    Credential = $Credential
    Name = 'VMware'
    Location = 'Management'
    DatacenterName = 'DemoLab'
    DatacenterLocation = ''
    Ensure = 'Present'
    FolderType = 'VM'
    DependsOn = "[Folder]Folder_Management"
}

The new vSS resources, which allow us to manage a VMHost’s vSS configuration, are:

  • VMHostVss
  • VMHostVssBridge
  • VMHostVssSecurity
  • VMHostVssShaping
  • VMHostVssTeaming

The following is an example of using the VMHostVss resource to manage a vSS on a particular VMHost:

VMHostVss "esx01_vSS" {
    Name = $vmHost
    Server = $Server
    Credential = $Credential
    Ensure = 'Present'
    VssName = 'vSS_DSC'
    Mtu = 1500
}

The new VMHost resources, which have been added to the already existing set of resources that manage VMHosts, are:

  • VMHostService
  • VMHostSettings
  • VMHostSyslog
  • VMHostAccount

The following is an example of using the VMHostService resource to manage an ESXi host’s SSH service to ensure it is running and the policy is set to automatic:

VMHostService "esx01_ssh" {
    Name = $Name
    Server = $Server
    Credential = $Credential
    Key = 'TSM-SSH'
    Policy = 'Automatic'
    Running = $true
}

Here’s a demo which combines a number of the new resources for the following configuration:
Datacenter: DemoLab
Folder Structures:
Development
- Linux
- Windows
Management
- Linux
- Windows
- VMware
Production
- Linux
- Windows

PowerCLI DSC v2 Resources Demo

Summary

The DSC Resources for VMware have only been available for a short period of time, however they have made a tremendous impact! Over the last 7 months, there have been 64 issues and 74 pull requests to the GitHub repository. Today, we’re taking the culmination of that input and releasing the 2.0 version of these resources. This adds an additional 14 resources, a number of functionality improvements, and they have been added to the PowerShell Gallery!

I also want to say a special thank you to some of our community contributors: Luc Dekens, for his immense contributions to this release including having a hand in at least 8 of the new resources as well as Brett Johnson and Markus Fischbacher for their contributions as well!

To get started, it is now as simple to install as:

Find-Module -Name VMware.vSphereDSC | Install-Module

Demo: DSC Resource Installation

For more information on this release, see the latest release page on the DSC Resources for VMware GitHub page.

Let us know in the comments how you’re using these in your environment and what resources you’re looking for next!

The post New Release – DSC Resources for VMware 2.0 appeared first on VMware PowerCLI Blog.


New Release: VMware PowerCLI 11.3.0

$
0
0

Today marks the release of VMware PowerCLI 11.3.0 and this one brings the count up to 732 different cmdlets. The combination of all these cmdlets allow us to manage and automate a majority of the VMware ecosystem! The HCX module receives the bulk of the new cmdlets, however there is also a new cmdlet to interact with the vSphere Storage Policy Based Management (SPBM) APIs. There is a new way to view opaque network types and a high-level method of promoting instant clones to full clones. Last, but certainly not least, this release also includes a handful of updates for reported issues and two deprecations.

PowerCLI 11.3.0 comes with the following updates:

  • Added 22 new cmdlets for HCX and SPBM management
  • Added support for vSphere 6.7 Update 2 to the VMware.VIM module
  • Added support for opaque networks to the Get-VirtualNetwork cmdlet
  • Added support for the creation of additional network adapter types
  • Added support for the high-level promotion of instant clones
  • Updated the handling of a Cluster’s ‘SpbmEnabled’ status
  • Updated the handling of bulk tagging assignments

Let’s take a more in-depth look at some of the updates.

Tag Improvements

vSphere tags are always a popular discussion. Normally, the conversation ends up being about performance. This update, with PowerCLI 11.3, allows us to make use of the backend API where we can perform bulk assignment of tags. This means that the New-TagAssignment cmdlet has been updated to allow for arrays to be passed for either the Entity or Tag properties. In my test environments, I am able to report anywhere from a 12x to 18x improvement in performance. Of course, the performance will vary by environment. The following is an example of running the same set of 100 vSphere tags to a single VM. In PowerCLI 11.3, the task took 1.771 seconds whereas in PowerCLI 11.2, it took 32.495 seconds. That’s a pretty impressive improvement.

Example: Bulk Tag Assignment Operations

For more information about general vSphere tag performance with PowerCLI, check out a recently released blog from the Performance team: Writing Performant Tagging Code

New Cmdlets for HCX

VMware HCX is best thought of as a swiss army knife – a single tool with multiple options to move your workloads in and out of the cloud. The HCX module was introduced just earlier this year, in PowerCLI 11.2.0, as the 21st module for PowerCLI. New in PowerCLI version 11.3.0, the module receives an additional 21 cmdlets to interact with your HCX deployment. A majority of the new cmdlets deal with profiles, which are used as a site’s deployment configurations for items like storage, compute, and networking. There are also new cmdlets to manage the HCX Service Mesh, which is composed of the source and destination sites.

A complete list of the newly added cmdlets:

  • Get/New/Remove/Set-HCXComputeProfile
  • Get-HCXInventoryCompute
  • Get-HCXInventoryDatastore
  • Get-HCXInventoryDVS
  • Get-HCXInventoryNetwork
  • Get-HCXNetworkBacking
  • Get/New/Remove/Set-HCXNetworkProfile
  • Get/New/Remove/Set-HCXServiceMesh
  • Get-HCXStorageProfile
  • New-HCXComputeProfileDVS
  • New-HCXComputeProfileNetwork
  • New-HCXServiceMeshDVS

More information on using the HCX module can be found in the following blog post: Getting Started with the HCX Module

Opaque Network Support

Another improvement to the PowerCLI 11.2 release was the addition of a new object type for opaque networks. These network types are the result of logical switches that have been created in NSX-T. That update allowed us to retrieve these objects through only low-level, direct API access, commands. With PowerCLI 11.3, the Get-VirtualNetwork cmdlet has been updated so we can now view opaque networks with a high-level cmdlet!

An example of using Get-VirtualNetwork to display distributed, opaque, and standard networks:
Example: Showing all types of virtual networks

For some additional information about working with opaque networks in vCenter, see the following blog: Configuring VMs with Opaque Networks

Instant Clone Promotion

Instant Clone is a functionality which has been around VMware in one form or another for quite a while. First discussed as “VMFork”, going back as early as 2014, this allows us to immediately create a child VM based off of a presently powered on VM, which we can then viewe as a cloned VM in vCenter. vSphere 6.7 was the first release to have this available as a public feature, though it was only available through the API. This is where PowerCLI, and specifically version 11.3, comes into play because we can now make use of the Set-VM cmdlet combined with the PromoteDisks parameter against one of the available child VMs to create a fully cloned VM object. The selling point is that afterwards, there is no longer a dependency on that parent VM!

Look for more information about this great new functionality in a future blog post.

SPBM Updates

The last big update we’re going to cover is for those looking to automate the management of vSphere Storage Policy Based Management (SPBM) policies. The first update comes in the form of a new cmdlet named Get-SpbmView. This cmdlet gives us direct access to the available APIs for SPBM. In the example below, we can see the usage of this cmdlet to list out the available services and start to interact with the Replication Manager service to see the available methods.

Example: Get-SpbmView Usage

The other update is to how the Get/Set-SpbmEntityConfiguration cmdlet operates. Both of these cmdlets can now display or modify policies for datastores. However, there is also a deprecation for cluster objects and whether they display an “SpbmEnabled” status. This is due to a change, which happened as of vSphere 6.0, where clusters always have a status of “Enabled.” Here is an example of using the Get-SpbmEntityConfiguration to display information about the specified datastore.

Example: Viewing SPBM Policies for datastores

Summary

The second release of the year is here in the form of PowerCLI 11.3.0. This release adds 22 new cmdlets to help automate workload migrations and granular management of SPBM policies. There are new ways to manage network-based objects, whether those are networks themselves or network adapter types. We can also now upgrade an instant clone to a full clone with an easy to use, high-level cmdlet. Lastly, bulk tag assignment is now a supported mechanism of the New-TagAssignment cmdlet.

For more information on changes made in VMware PowerCLI 11.3.0, including improvements, security enhancements, and deprecated features, see the VMware PowerCLI Change Log. For more information on specific product features, see the VMware PowerCLI 11.3.0 User’s Guide. For more information on specific cmdlets, see the VMware PowerCLI 11.3.0 Cmdlet Reference.

Remember, updating your PowerCLI modules is now as easy as ‘Update-Module VMware.PowerCLI’.
Example: Update-Module -Name VMware.PowerCLI

Let us know in the comments what you’re most excited about!

The post New Release: VMware PowerCLI 11.3.0 appeared first on VMware PowerCLI Blog.

Check Out VMware Code’s Talking Code

$
0
0

Talking Code
There’s a new(-ish) series going on through VMware Code, it’s called Talking Code. This series has been taking a look at new features, such as Code Capture, as well as how to accomplish certain tasks in short, demo-based videos. PowerCLI has been featured in several of these videos already posted to the VMware Code blog and will continue to be included going forward.

Here’s a sampling of some of the PowerCLI based videos already available:

For a complete list of the videos in the Talking Code series, see the: Talking Code Archive

If there’s anything you would like to see covered in the future, let us know in the comments!

The post Check Out VMware Code’s Talking Code appeared first on VMware PowerCLI Blog.

PowerCLI at VMworld US 2019

$
0
0

VMworld US Banner

Would you believe it, VMworld is already right around the corner! This year, VMworld has all kinds of sessions related to PowerCLI. From the introduction and deep dive sessions to more specifically focused sessions on VMware Cloud on AWS, vSphere update lifecycle, vSAN, and even Horizon View. There’s also a very special session given by a member of the PowerCLI engineering team which gives a special look at how new features are added automatically! Plus, a bunch of community sourced sessions and the always fantastic Hands-on-Lab! If you haven’t already registered, the time is quickly ticking away!

Schedule builder is already live, so make sure to add the following sessions to your schedule and catch up with the PowerCLI team and all of the amazing PowerCLI community members! And if the session is already full, don’t worry. Join the waitlist and help us move these sessions to larger rooms!

Breakout Sessions

Session: HBI1743BU – Introduction to PowerCLI
Date: Monday, August 26, 02:30 PM – 03:30 PM
Speakers: Brian Bunke & Kyle Ruddy
Brian and Kyle will show how PowerCLI is one of the easiest ways to manage your environment and how you can easily get started in your own environments.

Session: HBI1729BU – PowerCLI Deep Dive
Date: Thursday, August 29, 12:00 PM – 01:00 PM
Speakers: Luc Dekens & Kyle Ruddy
Luc and Kyle are back with another edition of the PowerCLI Deep Dive, where they’ll show you some of the advanced methods they use to make even the hardest of tasks look easy.

Session: HBI1463BU – VMware Cloud on AWS: Advanced Automation Techniques
Date: Wednesday, August 28, 01:00 PM – 02:00 PM
Speakers: William Lam & Kyle Ruddy
William and Kyle will walk you through the available APIs and tooling for VMware Cloud on AWS, then demonstrate they can be used to automate all aspects of the SDDC lifecycle and workload consumption.

Session: HCI1864BU – Automating vSAN from CLI to API: PowerCLI, Govc, and Beyond
Date: Wednesday, August 28, 09:30 AM – 10:30 AM
Speakers: Cedric Rajendran & Dharmesh Bhatt
Cedric and Dharmesh will show how to automate some of the routine vSAN tasks using the wide variety of APIs and CLIs available and at your disposal.

Session: HCI1825BU – Automate VMware HCI Deployments at Any Scale with PowerCLI
Date: Wednesday, August 28, 02:00 PM – 03:00 PM
Speakers: Shane Limbach & Jase McCarty
Shane and Jase will show you how to harness the power of PowerCLI to build, manage, and report on your vSAN environment regardless of scale.

VMware {code} Sessions

Session: CODE2214U – How PowerCLI Makes Configuration Management Easy
Date: Tuesday, August 27, 01:00 PM – 02:00 PM
Speaker: Kyle Ruddy
Kyle will cover some configuration management principles and then dive in to show the latest ways PowerCLI is using PowerShell DSC to make vSphere configuration management easy.

Session: CODE1817UR – Automating vCenter Server Appliance Update Lifecycle
Date: Wednesday, August 28, 09:00 AM – 09:30 AM
Speaker: David Stamen
David will show off his new community module for PowerCLI which can be used to ease the lifecycle management of the vCenter Server Appliance.

Session: CODE2649U – How PowerCLI Gives Day 1 Access to the Latest VMware APIs
Date: Wednesday, August 28, 04:00 PM – 04:30 PM
Speaker: Nikola Klinkachev
Nikola, an engineer on the PowerCLI team, will provide a “look behind the curtain” when it comes to how PowerCLI can automatically interact with the latest and greatest APIs.

Session: CODE1316UR – Horizon 7 Automation 101: How to Get Started with the Horizon API
Date: Wednesday, August 28, 09:30 AM – 10:00 AM
Date: Thursday, August 29, 09:00 AM – 09:30 AM
Speaker: Jack McMichael
Jack will provide an overview of the Horizon 7 API and how PowerCLI can be leveraged to simplify the automation process for those Horizon environments.

VMTN TechTalk Sessions

Session: VMTN5040U – Beginning PowerShell from Cmdlet to Function
Date: Tuesday, August 27, 05:30 PM – 05:45 PM
Speaker: Mike Nelson
Mike will cover a quick introduction to PowerShell, as well as PowerCLI, to help you down the path of getting started with PowerShell.

Session: VMTN5004U – ReportCardPS – Create Pretty Reports Using PowerCLI and Clarity
Date: Wednesday, August 28, 01:00 PM – 01:15 PM
Speaker: Justin Sider
Justin will show you how to easily combine the reporting power of PowerCLI with the UI stylings of clarity to create amazing reports.

Session: VMTN5026U – Automating VDI Tasks, the story of the life of a VDI admin
Date: Thursday, August 29, 01:00 PM – 01:30 PM
Speaker: Chris Hildebrandt
Chris will tell you his personal story of how he learned to automate his daily tasks with, amongst other things, PowerCLI to make him more productive as a VDI administrator.

Hands on Labs

Lab: SPL-2012-01-SDC_U – VMware vSphere Automation – PowerCLI
Date: Anytime the HOL area is open and available
Get hands-on with VMware PowerCLI. Gain familiarity with the tool, and then dive deeper into the functionality available with real world examples. Both new and experienced users are sure to learn something new about automating their environments.

Session: ELW-2012-01-SDC_U – Expert-Led Workshop – VMware vSphere Automation – PowerCLI
Date: Tuesday, August 27, 02:15 PM – 03:45 PM
Date: Thursday, August 29, 08:30 AM – 10:00 AM
Speaker: Peter Kieren
Peter will show attendees how to get hands-on with VMware PowerCLI. You will gain familiarity with the tool, and then dive deeper into the functionality available with real world examples.

Summary

VMworld US 2019 continues to be the premier event to learn about PowerCLI. Come hear directly from the PowerCLI team, as well as numerous community members, how you can harness PowerCLI to automate even the most difficult of tasks.

Make sure you’re registered for VMworld today!

The post PowerCLI at VMworld US 2019 appeared first on VMware PowerCLI Blog.

New Release: PowerCLI 11.4.0

$
0
0

August is always a great month when it comes to new releases, and this year is no different. Even before VMworld, there have already been announcements for vSphere 6.7 Update 3, NSX-T 2.4.2, and a new version of HCX. The PowerCLI team has one more exciting release for you in the form of PowerCLI 11.4.0!

PowerCLI 11.4.0 comes with a bunch of new improvements. The Horizon View module has been updated to support the newest release of Horizon View which is version 7.9. There are a handful of updates to the Storage module, including updates and three new cmdlets. Lastly, there are numerous updates to cmdlets in the HCX module.

PowerCLI 11.4.0 comes with the following updates:

  • Add support for Horizon View 7.9
  • Added new cmdlets to the Storage module
  • Updated Storage module cmdlets
  • Updated HCX module cmdlets

Let’s take a closer look at some of the updates.

Storage Module Updates

The Storage module received a number of new updates, many of which are there to support brand new features released with vSAN 6.7U3! The first improvement is to the Get/Set-VsanClusterConfiguration cmdlets. These two cmdlets can now access and make use of the newly added functionalities of Proactive Rebalance and vSphere Update Manager baseline preference.

Example of Get-VsanClusterConfiguration and Set-VsanClusterConfiguration in action:
PowerCLI 11.4.0 - Storage Module Updates

It’s worth noting that those new properties will return no information, nor can you change them, until your vSAN cluster has been updated to version 6.7 U3, as noted in the above error message.

The Storage module also has a couple new cmdlets. The first is the Add-VsanObjectToRepairQueue cmdlet. This cmdlet can repair vSAN objects that are referenced when using the command. This functionality was formerly available with the Repair-VsanObject cmdlet, however this particular cmdlet has been modified to be an alias for Add-VsanObjectToRepairQueue. The other two new cmdlets are Get-VsanResyncingOverview and Get-VsanEnterMaintenanceMode. Both of these cmdlets operate only against vSAN clusters of version 6.7U3 or newer.

HCX Module Updates

The HCX module has seen a flurry of activity since its initial release, and PowerCLI 11.4.0 continues that trend. There are six cmdlets which have been updated to add new capabilities. The Get-HCXAppliance cmdlet returns new information about the current version of an appliance as well as any available versions which exist. This can be combined with the New-HCXAppliance cmdlet that will allow us to upgrade an appliance to one of the available versions. The Get-HCXContainer cmdlet now adds the ability to list containers of a “OrgVdc” type. The Get-HCXNetwork cmdlet adds the ability to view two more types of networks, NsxtSegment and OrgVdcNetwork. Then, there is the New-HCXNetworkExtension cmdlet that can now work with networks of type NsxtSegment. Lastly, we have Get-HCXServiceMesh which has a new property available to view the status of several services.

Example of Get-HCXAppliance and Get-HCXServiceMesh, specifically viewing the new ServiceStatus property:
PowerCLI 11.4.0 - HCX Module Updates

A couple other issues were addressed with the HCX module as well. The Cmdlet Reference has been updated to reflect the .NET object type of an HCX Migration. Get-HCXServiceMesh and Get-HCXInterconnectStatus have both been updated to remedy issues. Lastly, the DestinationNetworkValue property now properly appears for replication objects.

Summary

This release of PowerCLI has some significant updates. PowerCLI 11.4.0 introduces new support for Horizon View 7.9, new functionality for vSAN 6.7 Update 3 objects, and numerous updates to the HCX module!

For more information on changes made in VMware PowerCLI 11.4.0, including improvements, security enhancements, and deprecated features, see the VMware PowerCLI Change Log. For more information on specific product features, see the VMware PowerCLI 11.4.0 User’s Guide. For more information on specific cmdlets, see the VMware PowerCLI 11.4.0 Cmdlet Reference.

Remember, updating your PowerCLI modules is now as easy as ‘Update-Module VMware.PowerCLI’.

Let us know in the comments what you’re looking forward to most!

The post New Release: PowerCLI 11.4.0 appeared first on VMware PowerCLI Blog.

PowerCLI at VMworld Europe 2019

$
0
0

VMworld US Banner

It feels like VMworld US was just yesterday and yet, here we are, a month away from VMworld Europe! This year, VMworld continues to have all kinds of sessions related to PowerCLI. From the always popular PowerCLI Deep Dive to more specifically focused sessions on VMware Cloud on AWS, vSphere update lifecycle, vSAN, and even Horizon View. There’s also a very special session given by a member of the PowerCLI engineering team which gives an in-depth look at how new features are added automatically! If you haven’t already registered, the time is quickly slipping away!

Schedule builder is already live, so make sure to add the following sessions to your schedule and catch up with the PowerCLI team and all of the amazing PowerCLI community members!

Breakout Sessions

Session: HBI1729BE – PowerCLI Deep Dive
Date: Thursday, November 7, 10:30 – 11:30
Speakers: Luc Dekens & Kyle Ruddy
Luc and Kyle are back with another edition of the PowerCLI Deep Dive, where they’ll show you some of the advanced methods they use to make even the hardest of tasks look easy.

Session: HBI1463BE – VMware Cloud on AWS: Advanced Automation Techniques
Date: Wednesday, November 6, 15:30 – 16:30
Speakers: William Lam & Kyle Ruddy
William and Kyle will walk you through the available APIs and tooling for VMware Cloud on AWS, then demonstrate they can be used to automate all aspects of the SDDC lifecycle and workload consumption.

Session: HCI1864BE – Automating vSAN from CLI to API: PowerCLI, Govc, and Beyond
Date: Thursday, November 7, 09:00 – 10:00
Speakers: Andreas Scherr & Cedric Rajendran
Andreas and Cedric will show how to automate some of the routine vSAN tasks using the wide variety of APIs and CLIs available and at your disposal.

VMware {code} Sessions

Session: CODE2214E – How PowerCLI Makes Configuration Management Easy
Date: Tuesday, Novmeber 5, 11:00 – 12:00
Speaker: Kyle Ruddy
Kyle will cover some configuration management principles and then dive in to show the latest ways PowerCLI is using PowerShell DSC to make vSphere configuration management easy.

Session: CODE1817E – Automating vCenter Server Appliance Update Lifecycle
Date: Wednesday, November 6, 15:00 – 15:25
Speaker: David Stamen
David will show off his new community module for PowerCLI which can be used to ease the lifecycle management of the vCenter Server Appliance.

Session: CODE2649E – How PowerCLI Gives Day 1 Access to the Latest VMware APIs
Date: Wednesday, November 6, 17:00 – 17:25
Speaker: Nikola Klinkachev
Nikola, an engineer on the PowerCLI team, will provide a “look behind the curtain” when it comes to how PowerCLI can automatically interact with the latest and greatest APIs.

Session: CODE1316E – Horizon 7 Automation 101: How to Get Started with the Horizon API
Date: Thursday, November 7, 10:00 – 10:25
Speaker: Wouter Kursten
Wouter will provide an overview of the Horizon 7 API and how PowerCLI can be leveraged to simplify the automation process for those Horizon environments.

VMTN TechTalk Sessions

Session: VMTN5092E – Clones as a Service
Date: Wednesday, November 6, 12:45 – 13:00
Speaker: Dan Belmonte
Dan will cover how both linked clones and instant clones can be incredibly useful for development environments and how PowerCLI can be used to create them.

Hands on Labs

Lab: SPL-2012-01-SDC_E – VMware vSphere Automation – PowerCLI
Date: Anytime the HOL area is open and available
Get hands-on with VMware PowerCLI. Gain familiarity with the tool, and then dive deeper into the functionality available with real world examples. Both new and experienced users are sure to learn something new about automating their environments.

Session: ELW-2012-01-SDC_E – Expert-Led Workshop – VMware vSphere Automation – PowerCLI
Date: Monday, November 4, 14:00 – 15:30
Date: Thursday, November 07, 11:45 – 13:15
Speaker: Peter Kieren
Peter will show attendees how to get hands-on with VMware PowerCLI. You will gain familiarity with the tool, and then dive deeper into the functionality available with real world examples.

Summary

VMworld Europe continues to be the premier event in EMEA to learn about PowerCLI. Come hear directly from the PowerCLI team, as well as numerous community members, how you can harness PowerCLI to automate even the most difficult of tasks.

Make sure you’re registered for VMworld today!

The post PowerCLI at VMworld Europe 2019 appeared first on VMware PowerCLI Blog.

New Release – PowerCLI 11.5.0

$
0
0

The days are ticking away until VMworld Europe, but we have some exciting news that we just couldn’t keep quiet about! PowerCLI version 11.5.0 is here and it is a huge release! More than 20 cmdlets have been added. There are new properties available for the objects we all know and love, one of which has been requested for years. A big update for the VMC module, support for Horizon 7.10.0, and so much more.

PowerCLI 11.5.0 comes with the following updates:

  • Added cmdlets for Content Library management
  • Added cmdlets for vCenter alarm management
  • Added cmdlets for VMware Cloud on AWS SDDC management
  • Updated Get-*Service output
  • Updated New-VM parameters for networking
  • Updated performance for Tag based operations
  • Updated properties of Virtual Machine object
  • Updated support for Horizon 7.10.0
  • Updated support for HCX migration types

Let’s dig in on some of these updates!

Content Library Management Update

Content Library’s features and capabilities have been going through some impressive updates over the last few versions of vSphere. It was one of the first services available through the vSphere Automation (REST) API and has maintained a steady stream of improvements. The latest update added some long-awaited support for templates! PowerCLI is improving the management of the Content Library with eight new cmdlets!

The new cmdlets for Content Library management are as follows:

  • New-ContentLibraryItem
  • Set-ContentLibraryItem
  • Remove-ContentLibraryItem
  • Export-ContentLibraryItem
  • New-ContentLibrary
  • Set-ContentLibrary
  • Get-ContentLibrary
  • Remove-ContentLibrary

Here’s a brief example of viewing the available Content Libraries and the contents within a specified Content Library.
Example: Content Library cmdlet usage

Look for a blog to be released shortly to dive deeper in to the use of these cmdlets!

vCenter Alarm Management Update

Managing vCenter alarms always comes up as one of those things that could be improved when using PowerCLI. There’s a solid set of alarm-based cmdlets which already exist. However, as evidenced by a PowerCLI session at VMworld in 2017 where we dug into some examples only available by the API, those cmdlets didn’t give quite give us everything we needed. PowerCLI 11.5 adds 6 new cmdlets and 3 updated cmdlets to help manage alarm definitions, create alarm triggers, and pull information about available event types and metrics.

These new cmdlets are as follows:

  • New-AlarmDefinition
  • Remove-AlarmDefinition
  • New-AlarmTrigger
  • Get-AlarmTrigger
  • Get-EventType
  • Get-Metric

The updated cmdlets are as follows:

  • New-AlarmAction
  • New-AlarmActionTrigger
  • Set-AlarmDefinition

Here’s a sneak peak at these new cmdlets in action, creating a new vCenter alarm definition:
Example: New alarm definition created

More details on these new vCenter alarm management cmdlets will be released in future blog post shortly.

VMware Cloud on AWS Module Update

The module for managing VMware Cloud on AWS (VMC) is one of PowerCLI’s newest modules. Initially it was released as a low-level module, which interacted directly with the available VMC APIs. As of PowerCLI 11.5, the VMC module introduces eight new cmdlets to make the management process easier. There’s a cmdlet to easily retrieve high-level information about our SDDCs. We can deploy an SDDC in a single command, down from the 20+ lines it took before. There are also cmdlets to streamline the process of retrieving information about our AWS linked accounts!

The new cmdlets are as follows:

  • Get-VmcSddc
  • Set-VmcSddc
  • New-VmcSddc
  • Remove-VmcSddc
  • Add-VmcSddcHost
  • Remove-VmcSddcHost
  • Get-AwsAccount
  • Get-AwsVpcSubnet

Here’s a quick example of how we can compress all those lines of code to deploy and view an SDDC down to, essentially, two lines:
Example: VMware cmdlet usage to create an SDDC

For more details on these new VMC cmdlets, see the following blog: What’s New with the VMware Cloud on AWS Module

VMware Core Module Update

The Core module received a handful of upgrades outside of just the new cmdlets for Content Library and vCenter alarms.

The usage of tags within vSphere environments continues to steadily increase, as well as requests to make the management of those tags more performant. Previously, as of PowerCLI 11.3, the ability to perform batch operations was added. PowerCLI 11.5 builds on that and adds some additional, general, performance improvements to several cmdlets. The Get-Tag cmdlet and Tag parameter for Get-VM have both been updated, as well as Get/Remove-TagAssignment.

There are a couple highly requested updates for some of the standard VM cmdlets too! The ability to configure a new VM’s portgroup, when deploying from template, has been added through the usage of either NetworkName or Portgroup parameters when using New-VM. As of vSphere 6.7, there’s been a new property of VirtualMachine vSphere objects called CreateDate. As of PowerCLI 11.5, the VirtualMachine .Net object now also has a CreateDate property!

Example: Viewing CreateDate property

Note: Only vSphere 6.7 environments and newer support this property. On vSphere 6.5 and older environments, the property may be blank. An additional caveat, this property is also only supported on VMs which have been created since that environment was on vSphere 6.7 or newer. VMs that have been migrated from older environments will show an older date, generally 1/1/70 12:00:00 AM.

Summary

PowerCLI 11.5.0 has been released and there are tons of new updates! There are more than 20 new cmdlets and 9 cmdlets which have been improved. Support has been added for Horizon 7.10.0 as well as two new migrations types for HCX, Replication Assisted vMotion (RAV) and OS Assisted Migration (OSAM). Plus, when you’re working with a service’s underlying API service, the listing of available services has been updated for easier viewing. The third release of PowerCLI is one you’ll want to update to today!

For more information on changes made in VMware PowerCLI 11.5.0, including improvements, security enhancements, and deprecated features, see the VMware PowerCLI Change Log. For more information on specific product features, see the VMware PowerCLI 11.5.0 User’s Guide. For more information on specific cmdlets, see the VMware PowerCLI 11.5.0 Cmdlet Reference.

Remember, updating your PowerCLI modules is now as easy as:

Update-Module VMware.PowerCLI

Example: Update to PowerCLI 11.5.0

Let us know in the comments what you’re looking forward to most!

The post New Release – PowerCLI 11.5.0 appeared first on VMware PowerCLI Blog.

What’s New for the VMware Cloud on AWS Module

$
0
0

PowerCLI’s 11.5 was a big release for several reasons. One of those reasons is due to the introduction of some new cmdlets for use with the VMware Cloud on AWS service! These cmdlets are all high-level, which allows us to interact with our SDDCs in a much easier fashion than before.

The new cmdlets in the VMC module are:

  • Get-VmcSddc
  • Set-VmcSddc
  • New-VmcSddc
  • Remove-VmcSddc
  • Add-VmcSddcHost
  • Remove-VmcSddcHost
  • Get-AwsAccount
  • Get-AwsVpcSubnet

Let’s walk through how to use these within your own VMware Cloud on AWS Organization, as we manage each part of an SDDC’s lifecycle.

Creating New 1 Host SDDC

The first cmdlet we’ll walkthrough using is the one which creates a new SDDC, New-VmcSddc. This cmdlet requires fairly minimal information such as SDDC name, AWS region, and how many hosts the SDDC should have. We also have the ability to specify the management subnet CIDR as a parameter too, but that parameter is optional.

One big item of note, at the time of the PowerCLI 11.5 release, it can only provision one host SDDCs without an AWS account being linked. We do plan to improve the cmdlet in a future release to support all SDDC deployment configurations.

Here’s an example of creating a VMware Cloud on AWS single host SDDC where we don’t link an AWS account:

New-VmcSddc -Name KR-SDDC -Region US_EAST_1 -HostCount 1 -SkipAccountLinking

Example: Creating a new 1-host SDDC

Creating New 3-Host SDDC

We can also create a standard, 3 host or larger, SDDC which requires an AWS account be linked. There are two new cmdlets which simplifies this process from more than 10 lines of code down to 2 lines.

The first thing we’ll need to obtain, the AWS account we’ll be using. That information can be found with the following command:

Get-AwsAccount

Example: listing out an AWS account

We’ll store that output in a variable and move on to the next step, which is to pick out our desired AWS VPC Subnet. We can use a single cmdlet to do this, however we will need to reference the AWS Account and which region the VPC should reside.

We can find the available VPC subnets with the following command:

Get-AwsVpcSubnet -AwsAccount $awsAcct -Region US_EAST_1

Example: List available AWS VPC subnets

At this point, we have all the information needed to create our SDDC. With some minimal updates to the command from the previous section, we can create a new 3 host SDDC, have it linked to our AWS account, and using our requested VPC subnet with the following code:

New-VmcSddc -Name KR-SDDC -Region US_EAST_1 -HostCount 3 -AwsAccount $awsAcct -AwsVpcSubnet $vpcSub

Example: New SDDC - 3 Hosts

Viewing SDDC Information

We’ve created two SDDCs in the prior sections, now it’s time to find out what information about each of these SDDCs are available. The Get-VmcSddc cmdlet will turn several lines of API interaction into a single line.

We can find out some basic information about our newly created SDDCs with the following command:

Get-VmcSddc

Example: List SDDCs

The above shows some great high-level information. However, if you’ve seen the API response, there’s a lot more information available to us. We can find some additional information about a particular SDDC by piping that command to Format-List. An example:

Get-VmcSddc | Format-List

Example: Detailed SDDC View

The above examples shows some important information, such as AWS region, how many hosts the SDDC has, what version the SDDC is on, and even the URL to reach the vCenter server. One thing you may notice is missing though, ExtensionData! This property, and all the information it provides us, is something that is not available at this point in time. We hope to add it in a future release.

In the meantime, you can take the information provided here and simplify the process to retrieve the rest of the properties which make up the SDDC object from the API level. An example to do that is as follows:

$vmcSddc = Get-VmcSddc -Name KR-SDDC-02
$orgId = $vmcSddc.Uid.Split('/')[2].Split('=')[1]
$sddcId = $vmcSddc.Id 
$sddcSvc = Get-VmcService -Name com.vmware.vmc.orgs.sddcs
$sddc = $sddcSvc.Get($orgId, $sddcId)

Example: Retrieving all the SDDC information from the API

Host Capacity Management

One of the amazing parts about a service such as VMware Cloud on AWS is that we can add and remove ESXi hosts to our SDDC in a matter of minutes! We now have two cmdlets to make the management of our ESXi hosts as simple as a one-liner.

We can add a single new host to our SDDC with the following command:

Add-VmcSddcHost -Sddc KR-SDDC-02 -HostCount 1

Example: Add a new host to the SDDC

Similarly, we can also remove a single host from our SDDC with the following command:

Remove-VmcSddcHost -Sddc KR-SDDC-02 -HostCount 1

Example: Removing a host from a SDDC

In the above examples you’ll also notice the flexibility to several different methods of input for each command, whether that be variables or even using a pipeline.

Removing SDDCs

Completing the lifecycle management of an SDDC is the removal of our created SDDC. Much like the prior create and retrieve cmdlets, we also have a cmdlet to delete an SDDC.

We can now remove our SDDC with the following command:

Remove-VmcSddc –Sddc KR-SDDC-02

Example: Remove SDDC

More Updates

There are a couple other cmdlets worth discussing when it comes to using PowerCLI with VMware Cloud on AWS. One of the more popular requests was to rename an SDDC. This was recently enabled through the API and PowerCLI can also make this change in a high-level cmdlet.

We can update the name of our SDDC with the following command:

Set-VmcSddc -Sddc KR-SDDC-01 -Name KR-SDDC

Example: Update the name of an SDDC

An existing cmdlet was also updated to help us out when it comes to retrieving, and even reporting, on tasks within our Organization. Get-Task now supports these VMC based tasks. If you’ve had a change to view the tasks for any given Organization, unlike vSphere tasks, they are available for quite a long time so the output could be unexpectedly longer than expected.

We can retrieve the tasks of our Organization with the following command:

Get-Task

Example: Retrieve tasks

Each of these tasks are objects, so we can take one of those tasks and expand the available properties with Format-List by using the following command:

Get-Task | Select-Object -First 1 | Format-List

Example: List additional properties of a task

Summary

The release of PowerCLI 11.5 added a ton of functionality when it comes to VMware Cloud on AWS. We can manage the entire lifecycle of an SDDC with high-level cmdlet. We can also pull task-based information from an existing cmdlet!

Update to the latest version of PowerCLI with the following command:
Example: Update to PowerCLI 11.5.0

Let us know in the comments what cmdlets we should be adding next!

The post What’s New for the VMware Cloud on AWS Module appeared first on VMware PowerCLI Blog.


What’s New for vSphere Alarm Management

$
0
0

One of the hot topics at VMworld EU was around alarm management and the new cmdlets which were recently made available. There has been a solid set of alarm-based cmdlets that already exist and have been part of PowerCLI for many years. However, as evidenced by a PowerCLI session at VMworld in 2017 where we dug into some examples only available by the API, those cmdlets didn’t give quite give us everything we needed. Therefore, PowerCLI 11.5 added 6 new cmdlets and 3 updated cmdlets to help manage alarm definitions, create alarm triggers, and pull information about available event types and metrics.

These new cmdlets are as follows:

  • New-AlarmDefinition
  • Remove-AlarmDefinition
  • New-AlarmTrigger
  • Get-AlarmTrigger
  • Get-EventType
  • Get-Metric

The updated cmdlets are as follows:

  • New-AlarmAction
  • New-AlarmActionTrigger
  • Set-AlarmDefinition

Let’s run through creating a new alarm with these cmdlets.

VM Reconfiguration Alarm Creation

There’s been a migration over the years to treat VM workloads in a more disposable fashion. This means that instead of making changes or updates directly to the deployed VM, we would destroy and re-deploy a new VM with the new configuration. Therefore, we’re looking to create an alarm when any VM has been reconfigured.

To create this alarm, we will need to make use of a couple of the new cmdlets that were introduced with PowerCLI 11.5. Namely: Get-EventType, New-AlarmTrigger, and New-AlarmDefintion

First, we need to find the particular event type related to a VM reconfiguration event. There are over 400 different event types, so we’ll want to get a little more specific by using a filter.

Filter Example:

Get-EventType | Where-Object {$_.Description -like "*reconfig*"}

Example: Viewing a filtered list of Event types

Looking through the response, we can see the last event type is the one we happen to be looking to use.

Next, we need to create an alarm trigger which will be based off of the event type we found in the prior step. For this we will use New-AlarmTrigger. This new cmdlet will have two other parameters we will need to populate as well, EntityStatus and EntityType. The EntityStatus parameter controls what the alarm severity will be. The available statuses are listed here: EntityStatus values Example: an EntityStatus of “yellow” is a warning. The EntityType parameter controls what object types the alarm can be referenced against. Example: VirtualMachine, HostSystem

For our use case, we’re going to use the following code to create a warning when a VM reconfigure task has been performed:

$alarmTriggerInput = @{
    EventType = $vmReconfigEvt
    EntityStatus = "Yellow"
    EntityType = "VirtualMachine"
}
$alarmTrigger = New-AlarmTrigger @alarmTriggerInput

Lastly, we will be defining our alarm with the New-AlarmDefinition cmdlet. There are a few parameters which we’ll use to define this new alarm, including: Name, Description, AlarmTrigger, and Entity. The first two are describing our new alarm. The AlarmTrigger parameter is referencing the trigger we built in the prior step. The Entity parameter is not quite as straightforward. This parameter is actually describing at what level the alarm should be applied. Example: to apply this alarm to only a specific cluster, the entity would be for that cluster object. For this use case, we want the alarm to apply across the entire vSphere environment so we will apply it to the top-level folder named “Datacenters”.

The code to create this new alarm will look like the following:

$vmReconfigEvt = Get-EventType | Where-Object {$_.Description -eq "VM reconfigured"}

$alarmTriggerInput = @{
    EventType = $vmReconfigEvt
    EntityStatus = "Yellow"
    EntityType = "VirtualMachine"
}
$alarmTrigger = New-AlarmTrigger @alarmTriggerInput

$alarmDefInput = @{
    Name = "VM Reconfiguration"
    Description = "Alarm to monitor virtual machine reconfiguration events"
    AlarmTrigger = $alarmTrigger
    Entity = Get-Folder -Type Datacenter -NoRecursion
}
New-AlarmDefinition @alarmDefInput

Example: Creating a new alarm based on VM reconfiguration events

If we switch over to the vSphere Client, we can also see our newly created alarm there:

Example: Newly created alarm as viewed in the vSphere Client

That’s it! Our new alarm is created and enabled by default for usage in our environment.

Listing Active Alarms

The next question is normally “how do we list the alarms with PowerCLI?” Unfortunately, there is not a function to list these alarms easily. However, almost every top-level, managed object (technically, ManagedEntity) has a property available at the vSphere API level that we can reference to easily discover any active alarms. This property is known as the TriggeredAlarmState. When it comes to PowerCLI, this property is available through an object’s ExtensionData.

Going back to our vSphere environment, we can modify a VM in PowerCLI and see that our newly created alarm does work as planned by referencing that TriggeredAlarmState property:
Example: Modifying a VM and viewing the TriggeredAlarmState property

Then, in the vSphere Client, we will also see the following:
Example: Alarm as viewed in the vSphere Client

The output from the TriggeredAlarmState property feels like it’s being pulled directly from the vSphere API and doesn’t easily give us some important information which we can easily turn into a report. I created a new advanced function and shared it on the VMware Code Sample Exchange and on the PowerCLI Community repo, it’s called Get-TriggeredAlarm.

Get-TriggeredAlarm in action:
Example: Get-TriggeredAlarm usage

The code for Get-TriggeredAlarm:

Summary

The latest version of PowerCLI 11.5 gave us a number of updates, including a handful of new and updated cmdlets which allows us to streamline the process of automating vSphere alarm management. These 6 new cmdlets and 3 updated cmdlets help manage alarm definitions, create alarm triggers, and pull information about available event types and metrics. This blog took a look at how to easily create a new alarm, including identifying a particular event and creating an alarm trigger, as well as how to report back alarms that are already active for particular vSphere objects.

Install PowerCLI 11.5 today and let us know in the comments what you’d like to see added next when it comes to vSphere alarm management!

The post What’s New for vSphere Alarm Management appeared first on VMware PowerCLI Blog.

What’s New for Content Library Management

$
0
0

Welcome to the new year from the PowerCLI team! The first blog of the year is to look at some of the improvements to the way we manage one of the hidden gems of vSphere, Content Library. Little known fact, Content Library was one of the very first services in vCenter which was offered through a REST API as part of the vSphere 6.0 release! Since then, there’s been numerous updates and improvements to the Content Library. These updates have been discussed in the following blog by my teammate Nigel Hickey: The Evolution of Content Library

Late last year, we released PowerCLI 11.5. This new version included quite a few updates and number of new cmdlets to manage things like vCenter Alarms, VMware Cloud on AWS, and Content Library.

The new cmdlets for Content Library management are as follows:

  • New-ContentLibraryItem
  • Set-ContentLibraryItem
  • Remove-ContentLibraryItem
  • Export-ContentLibraryItem
  • New-ContentLibrary
  • Set-ContentLibrary
  • Get-ContentLibrary
  • Remove-ContentLibrary

As part of a tandem blog post with Nigel, we’re going to walk through interacting with a Content Library. Nigel will handle the tasks from the vSphere Client side over on the vSphere blog post “Creating and Using Content Library” and I’ll be showing how to do those same tasks with the new PowerCLI cmdlets here!

Creating a Local Content Library

First things first, in order to manage a Content Library, we need to create one. Luckily, one of the new cmdlets turns this process from roughly a 10-line process into, essentially, a one-liner!

The key pieces of information we need to make note of prior to creating a new local Content Library by running the New-ContentLibrary cmdlet:

  • Name
  • Description (optional, but recommended)
  • Whether publishing should be enabled
  • Datastore location

For my environment, I can use the following code to create a new local Content Library:

$contentLibraryInput = @{
    Name = "PowerCLI Publisher"
    Description = "PowerCLI Publisher Library"
    Published = $true
    Datastore = Get-Datastore -Name "Datastore Name"
}
New-ContentLibrary @contentLibraryInput

Demo: Creating a Content Library

Adding Items to Content Library

A Content Library can be used to store and share a number of things. From VMs to templates, scripts to certificates, we can import and make use of these items from any vCenter which has access. The first item we’ll be adding to our new Content Library is going to be a PowerShell script, which is small and simple to import.

For this task, we will want to identify a script to import and get familiar with the new cmdlet, New-ContentLibraryItem. This cmdlet has a couple parameters we will need to populate:

  • ContentLibrary: the Content Library we are looking to interact with
  • Files: the file/s to be imported to the Content Library
  • Name: the name of the item displayed in the Content Library

I’ll be referencing a script from one of the last PowerCLI blogs, Get-TriggeredAlarms.ps1, which I have stored in a local git repository.

We can use the following code to create a new Content Library item by importing our PowerCLI script:

$contentLibraryItem = @{
    ContentLibrary = Get-ContentLibrary -Name "PowerCLI Publisher"
    Files = Get-Item -Path "./Documents/GitHub/kmr-PowerCLI-Example-Scripts/Scripts/Get-TriggeredAlarm.ps1"
    Name = "PowerCLI - Get Triggered Alarms"
}
New-ContentLibraryItem @contentLibraryItem

Sample: Import Content Library Item

Exporting Items from Content Library

We have created a Content Library and imported our first item. The next step would be to use that item. There’s no native way to run, or even modify, our imported script, so we will want to export the script so we can run it from our local PowerShell session. In order to do this, we will use another new cmdlet named Export-ContentLibraryItem

There are two main parameters we will need to use for this task:

  • ContentLibraryItem: the item we’re looking to export
  • Destination: this is the location of where the item should be downloaded and stored to

We can use the following code to export our script from the Content Library:

$contentLibraryItem = @{
    ContentLibraryItem = Get-ContentLibraryItem -Name "PowerCLI - Get Triggered Alarms"
    Destination = "./Downloads"
}
Export-ContentLibraryItem @contentLibraryItem

Sample: Export Content Library Item

Remove Item from Content Library

For our last task, we’re going to complete the lifecycle of a Content Library item by removing our PowerCLI script. In order to accomplish this task, PowerCLI has another new cmdlet which can simplify this task to a single line by using Remove-ContentLibraryItem

There’s only one parameter we need to be concerned with, and that is the following:

  • ContentLibraryItem: this is the item we’re looking to remove

We can use the following code to remove our script from the Content Library:

Get-ContentLibraryItem -Name "PowerCLI - Get Triggered Alarms" | Remove-ContentLibraryItem

Sample: Remove Content Library Item

Summary2h>

Content Library is one of those vSphere features with so much untapped potential. This blog post took a look at how the release of PowerCLI 11.5 can streamline the management of a Content Library and the entire lifecycle of those items it contains.

Let us know in the comments how you’re using PowerCLI to automate the Content Library!

More information about PowerCLI 11.5’s release: New Release – PowerCLI 11.5.0
More information about performing these tasks in the vSphere Client: Creating and Using Content Library

The post What’s New for Content Library Management appeared first on VMware PowerCLI Blog.

Getting (re)Started with PowerActions

$
0
0

The vSphere HTML5 Web Client Fling version 5 has been released and there is a much-awaited surprise: PowerActions is back!

PowerActions is the easiest way to run PowerCLI commands and scripts directly from the vSphere Client. Its first appearance was at VMworld in 2013! It was then introduced in 2014 with a PowerCLI Console and the ability to access a PowerCLI Script Library directly through the vSphere Web Client. However, since that time, the vCenter Server has changed dramatically. The Windows vCenter has evolved into a vCenter Server Appliance (VCSA). The vSphere Web Client has been deprecated and been replaced with the HTML5 based vSphere Client.

To help aid us in the process of these transitions was the introduction of a fantastic utility known as the vSphere HTML5 Web Client Fling. This fling allowed us to introduce the latest and greatest functionalities outside of the normal vSphere release cycle. A little more than a year ago, the fling introduced the concept of a Developer Center. This centrally located area has been the target for all kinds of resources that developers and automation specialists look for. To date, there has been the introduction of Code Capture and the API Explorer. This latest update to the fling re-introduces PowerActions.

In the spirit of the original, this version of PowerActions comes with two distinct areas within the Developer Center: PowerActions and Console. The PowerActions section gives access to two subsections, Script Library and Script Execution. These will be the areas where scripts can be imported, ran, and their output can be viewed. There’s also the Console section, which is a minimal PowerShell console, with access to the PowerCLI 11.5 modules, where commands and scripts can be input and ran ad hoc.

Let’s take a more in-depth look at getting started with PowerActions for the vSphere Client.

Introducing the Script Execution Service

There is a new service behind the scenes that gives PowerActions the ability to run PowerCLI scripts and commands directly from the vSphere Client. This service is known as the Script Execution Service (SES). Under the covers, SES is managing a runspace containing PowerShell 6.1 and the collection of modules for PowerCLI 11.5. This runspace is single threaded, stateless, and periodically refreshed. Therefore, we can only run one script at a time and we should not be storing anything to the local filesystem of the runspace. Control of this service can be found in the Fling Appliance Management Interface (FAMI), and is disabled by default.

Setting Up PowerActions

The first step in using PowerActions is to enable SES from the FAMI. This interface is available at port 5490 of your recently deployed or updated vSphere HTML5 Web Client Fling appliance.

Example: Enabling SES

PowerActions makes use of a Content Library to store and reference scripts. We can either create a new Content Library or use an existing one. If you do find yourself having to create a Content Library, ensure that your permissions are configured at the “Global Permissions” level.

In this environment, I’ll need to create a new Content Library. As of PowerCLI 11.5, we can create a Content Library with a single command. Taking some code from the last blog post, What’s New for Content Library Management, we can use the following code to create a new Content Library.

$contentLibraryInput = @{
    Name = "PowerActions CL"
    Description = "PowerActions Library"
    Published = $true
    Datastore = Get-Datastore -Name "Datastore Name"
}
New-ContentLibrary @contentLibraryInput

We can now return to the PowerActions tab and start by importing our first script. The next couple sections are going to start with a high-level report then we’ll add some contextual intelligence to take advantage of PowerActions’ more advanced functionalities.

Snapshot Management – Simple Script

Managing snapshots across an entire environment frequently comes up as a pain point. With PowerActions, we can create and import a one-liner script to audit our entire vSphere environment that can be ran by anyone with access to our vSphere Client.

Here’s the body of the one-liner script we’ll be importing, which I’ve named: SnapshotReport_All.ps1

Get-VM | Get-Snapshot | Select-Object VM, Created, Name, SizeGB

To start, while we’re in the PowerActions tab and Script Library subsection, make sure the desired Content Library has been chosen from the dropdown box on the right-hand side.

Example: Choosing our Content Library

Then, we can begin our import process by clicking “Import”. On the Import Library Item screen, set the Source file to “Local file” and browse to our SnapshotReport_All.ps1 file. The Item name will automatically be populated and we can add notes as needed. Clicking “Import” will complete the process.

The Script Library will now display information about our import script. We will see our name, the Script Type, the version, and the last modified date. Expanding the item will show us even more information, such as the size and the last sync date. Selecting the script will show us the content of the script.

Here’s an example of how the Script Library should display information about the imported Script:
Example: Viewing our imported script

We are now ready to run our script. We can do this directly from the Script Library by clicking the “Run” dropdown and selecting Run.

Once the script has completed running, we’ll see a pop-up containing some basic status information. This pop-up also contains a link back to PowerActions. By browsing to the Script Execution area, we can see the results of whether or not our environment has any snapshots.

Here’s an example of what this process looked like in my environment:
Example: Viewing the output after executing a script

Snapshot Management – Contextually Based

We are now going to take our script a step further by adding some contextual awareness. This gives PowerActions the ability to run the script against specific objects in our vSphere environment. This is done by adding PowerShell parameter blocks to our script.

For our scenario, we only want to return snapshot information from VMs in a specific cluster. Our parameter block will be looking for a strongly typed cluster object.

Here’s what an example script would look like, which will be named: SnapshotReport_Cluster.ps1

param (
    [VMware.VimAutomation.ViCore.Types.V1.Inventory.Cluster]
    $cluster
)

Get-VM -Location $cluster | Get-Snapshot | Select-Object VM, Created, Name, SizeGB

Once the above script has been imported, we can run the script against the desired cluster. We will start by changing over to the “Hosts and Clusters” view. We’re going to select a cluster, bring up the “Actions” menu and select “Execute Script”

Example: Executing a script against an object

We’ll then select one of our imported scripts to run. For this scenario, we will select SnapshotReport_Cluster. Note: if you run SnapshotReport_All, you will receive the same results as before since there were no parameter blocks specified.

Example: Choosing our script

Clicking “Ok” will bring us to a Script Parameter screen. We can see that we have our cluster parameter and the input has been configured to be our Management Cluster. Clicking “Ok” again will run our script against the Management Cluster.

Example: Verifying parameters

After a few moments we should see the results pop-up which will take us back to PowerActions. After selecting the Script Executions subsection, we can see the output from our script which has been reduced by two VMs.

Example: Viewing the output after executing a script

Summary

PowerActions is back and available as a new feature within the vSphere Client Developer Center. PowerActions allows us to import scripts to our vSphere environment and execute them with a couple of clicks. This is all thanks to the Script Execution Service, which has been added to version 5 of the vSphere HTML5 Web Client Fling. This blog took a look at setting up PowerActions, creating a Content Library, and importing some scripts to create basic reports. We also added the ability to use one of our scripts in a contextually aware manner, so that PowerActions understands we’re passing in a parameter directly from the user interface!

Let us know how you’re planning to use PowerActions in your environment!

More information about the vSphere HTML5 Web Client Fling can be found here: VMware Flings: vSphere HTML5 Web Client
More information about PowerActions can also be found in the PowerActions_documentation_Fling.pdf, which is available in the dropdown box from the vSphere HTML5 Web Client Fling’s download section.

The post Getting (re)Started with PowerActions appeared first on VMware PowerCLI Blog.

New Release – DSC Resources for VMware 2.1

$
0
0

There has been a flurry of activity on a particular GitHub repository over the past couple months and we are now extremely excited to be releasing version 2.1 of the Desired State Configuration (DSC) Resources for VMware. While it might be minor in version number, it is major in terms of features and functionality. This release is the result of over 60 pull requests, a completed GitHub project, and tons of community feedback. All of which we have converted into fourty-five new DSC resources, which triples the available resources from 22 to 67!

The main focus of these new resources is on the management of ESXi hosts. From firewall settings to authentication, configurations for both standard and distributed networking objects, and even setting up datastores. If you can configure a particular setting on an ESXi host, there’s an extremely good chance you can now apply that in an infrastructure-as-code manner with this latest release.

Let’s check out what’s now available with these new resources.

Datastore Related Resources

There are a handful of new resources that give us the ability to apply standard configuration management practices to our vSphere environment’s disks and datastores. These include the creation of an NFS datastore, including the configuration of any required authentications, VMFS datastores, as well as managing the host’s underlying SCSI LUNs and HBAs.

The new disk and datastore based resources:

  • NfsDatastore
  • NfsUser
  • VmfsDatastore
  • VMHostIScsiHba
  • VMHostIScsiHbaTarget
  • VMHostScsiLun
  • VMHostScsiLunPath

Here’s an example configuration where we are using the SCSI LUN and SCSI LUN Path resources to then define a local datastore by the name of “Local Datastore – ESX01”:

VMHostScsiLun 'VMHostScsiLun_mpx.vmhba0C0T0L0' {
    Server = $Server
    Credential = $Credential
    VMHostName = $vmHostName
    CanonicalName = 'mpx.vmhba0:C0:T0:L0'
    BlocksToSwitchPath = 0
    CommandsToSwitchPath = 0
    IsLocal = $true
    IsSsd = $false
    MultipathPolicy = 'Fixed'
    PreferredScsiLunPathName = 'vmhba0:C0:T0:L0'
}

VMHostScsiLunPath 'VMHostScsiLunPath_vmhba0:C0:T0:L0' {
    Server = $Server
    Credential = $Credential
    VMHostName = $vmHostName
    Name = 'vmhba0:C0:T0:L0'
    ScsiLunCanonicalName = 'mpx.vmhba0:C0:T0:L0'
    Active = $true
    Preferred = $true
    DependsOn = '[VMHostScsiLun]VMHostScsiLun_mpx.vmhba0C0T0L0'
}

VmfsDatastore 'VmfsDatastore_Local Datastore - ESX01' {
    Server = $Server
    Credential = $Credential
    VMHostName = $vmHostName
    Ensure = 'Present'
    Name = 'Local Datastore - ESX01'
    Path = 'mpx.vmhba0:C0:T0:L0'
    BlockSizeMB = 1
    CongestionThresholdMillisecond = 30
    FileSystemVersion = '5.81'
    StorageIOControlEnabled = $false
    DependsOn = '[VMHostScsiLun]VMHostScsiLun_mpx.vmhba0C0T0L0'
}

Networking Resources

The 2.0 release included a couple new resources to manage vSphere Standard Switches (VSS), but only the switch itself. This new release takes those existing resources and dramatically improves on the functionality. We can now manage VSS portgroups, VMKernel ports, physical ports, as well as some basics when it comes to vSphere Distributed Switches (VDS).

There are also some composite DSC resources for VSS and VSS based portgroups. These composite resources allow us to turn multiple resources into a single, easy to use resource. Both of these composite resources are comprised of four DSC resources, the top object level resource followed by the security, shaping, and teaming resources.

The new network resources:

  • StandardPortGroup (Composite)
  • StandardSwitch (Composite)
  • VDPortGroup
  • VDSwitch
  • VDSwitchVMHost
  • VMHostFirewallRuleset
  • VMHostIPRoute
  • VMHostNetworkCoreDump
  • VMHostPhysicalNic
  • VMHostVDSwitchMigration
  • VMHostVMKernelActiveDumpPartition
  • VMHostVMKernelModule
  • VMHostvSANNetworkConfiguration
  • VMHostVssMigration
  • VMHostVssNic
  • VMHostVssPortGroup
  • VMHostVssPortGroupSecurity
  • VMHostVssPortGroupShaping
  • VMHostVssPortGroupTeaming

Here’s an example configuration of using the composite resources to manage a host’s existing VSS, vSwitch0, and a VSS portgroup, VM Network:

StandardSwitch 'StandardSwitch_vSwitch0' {
    Server = $Server
    Credential = $Credential
    VMHostName = $vmHostName
    Name = 'vSwitch0'
    Ensure = 'Present'
    Mtu = 1500
    NicDevice = @()
    LinkDiscoveryProtocolType = 'Unset'
    LinkDiscoveryProtocolOperation = 'Unset'
    AllowPromiscuous = $false
    ForgedTransmits = $true
    MacChanges = $true
    Enabled = $false
    CheckBeacon = $false
    ActiveNic = @(‘vmnic0’)
    StandbyNic = @()
    NotifySwitches = $true
    Policy = 'Loadbalance_srcid'
    RollingOrder = $false
    DependsOn = ''
}

StandardPortGroup 'StandardPortGroup_VM Network' {
    Server = $Server
    Credential = $Credential
    VMHostName = $vmHostName
    Name = 'VM Network'
    VssName = 'vSwitch0'
    Ensure = 'Present'
    VLanId = 1730
    LoadBalancingPolicy = 'Unset'
    ActiveNic = @(‘vmnic0’)
    StandbyNic = @()
    UnusedNic = @()
    NetworkFailoverDetectionPolicy = 'Unset'
    DependsOn = '[StandardSwitch]StandardSwitch_vSwitch0'
}

ESXi Host Resources

The last twenty new resources are all solely focused on ESXi host-based configuration. We can manage whether an ESXi host is present in a vCenter and, if so, where. Then, there’s the Advanced Settings, Power Policy, PCI Passthrough, and so many more items which we can address through configuration management.

The new ESXi host resources:

  • vCenterVMHost
  • VMHostAcceptanceLevel
  • VMHostActiveDumpFile
  • VMHostAdvancedSettings
  • VMHostAgentVM
  • VMHostAuthentication
  • VMHostCache
  • VMHostConfiguration
  • VMHostDCUIKeyboard
  • VMHostDumpFile
  • VMHostGraphics
  • VMHostGraphicsDevice
  • VMHostIPRoute
  • VMHostPciPassthrough
  • VMHostPermission
  • VMHostPowerPolicy
  • VMHostRole
  • VMHostSharedSwapSpace
  • VMHostSNMPAgent
  • VMHostSoftwareDevice

Here’s an example of using the vCenterVMHost resource to ensure my desired host is attached to my vCenter server, part of the DemoCluster cluster which is inside of the Demo datacenter:

vCenterVMHost vCenterVMHost {
    Server = $Server
    Credential = $Credential
    Name = $VMHostName
    Location = 'Demo/DemoCluster'
    DatacenterName = 'Demo'
    DatacenterLocation = ''
    Ensure = 'Present'
    VMHostCredential = $VMHostCredential
    ResourcePoolLocation = '/'
    Port = 443
    Force = $true
    DependsOn = '[Cluster]Demo'
}

Here’s another example, this time we’ll be using the VMHostAdvancedSettings resource to ensure that we have an NFS MaxQueueDepth of 1. It’s worth noting, none of the other advanced settings that already exist on the host are modified with this configuration.

VMHostAdvancedSettings 'VMHostAdvancedSettings' {
    Server = $Server
    Credential = $Credential
    Name = $vmHostName
    AdvancedSettings = @{
        'NFS.MaxQueueDepth' = '1'
    }
}

Summary

The latest version of the Desired State Configuration (DSC) Resources for VMware is here! This release triples the amount of resources which were already available from twenty-two to a staggering sixty-seven. The primary goal of this release is to be able to apply configuration management to an environment’s ESXi hosts, regardless of the setting. This has been the number one ask from the community, and we are excited for this release!

As usual, I want to say a special thank you to some of our community contributors: Luc Dekens, for all his contributions, as well as Daniel Siegenthaler, Colin Westwater, and GitHub user RamblingPSTech for their contributions as well!

The VMware.vSphereDSC module has been updated on the PowerShell Gallery, and updating is as simple as:

Update-Module -Name VMware.vSphereDSC

Update-Module -Name VMware.vSphereDSC

For more information on this release, see the 2.1 release page on the DSC Resources for VMware GitHub page.

Let us know in the comments how you’re using these in your environment and what resources you’re looking for next!

The post New Release – DSC Resources for VMware 2.1 appeared first on VMware PowerCLI Blog.

In Action – DSC Resources for VMware 2.1

$
0
0

The DSC Resources for VMware 2.1 release has taken a major step forward in the ability to manage your vSphere environments with PowerShell DSC and PowerCLI. The goal of this latest release is to be able to apply standard configuration management practices to ESXi hosts. In order to accomplish this, there are 45 new resources included as part of the VMware.vSphereDSC module. We can now manage advanced settings, datastores, firewall rules, services, vSphere Standard Switches (VSS), and much more.

Let’s check out this update in action!

In Action

To show an example of what we can do with these resources, let’s start with a freshly deployed vCenter Server which only has some basic configurations applied (eg. DNS, NTP, AD integration) and three ESXi hosts with only the root password and Management vmkernel configured. From that point, using only a configuration file and PowerShell DSC, we can stand up a vSphere environment and be ready for VMs to be deployed in a matter of minutes!

Sample: Using DSC to prepare a vSphere Environment

Configuration File

The configuration file we used to create all of the objects and establish their configurations uses only fourteen of the available resources along with some built-in PowerShell functionality. The code can be found here:

$configurationData = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            PSDscAllowPlainTextPassword = $true
            PSDscAllowDomainUser = $true
            VCenters = @(
                @{
                    Server = 'vcsa01.corp.local'
                    VCUser = 'administrator@vsphere.local'
                    VMHUser = 'root'
                    Password = 'VMware1!'
                    VMHost = @('esx01.corp.local', 'esx02.corp.local', 'esx03.corp.local')
                    VMFolder = @('Management', 'Production', 'Development')
                }
            )
        }
    )
}

Configuration vCenter_Config {
    Import-DscResource -ModuleName VMware.vSphereDSC

    Node localhost {
        foreach ($vCenter in $AllNodes.VCenters) {
            $Server = $vCenter.Server
            $VCUser = $vCenter.VCUser
            $VMHUser = $vCenter.VMHUser
            $Password = $vCenter.Password | ConvertTo-SecureString -asPlainText -Force
            $VcCreds = New-Object System.Management.Automation.PSCredential($VCUser, $Password)
            $VmhCreds = New-Object System.Management.Automation.PSCredential($VMHUser, $Password)

            Datacenter "PoShDSC_DC" {
                Server = $Server
                Credential = $VcCreds
                Name = 'PoShDSC'    
                Location = [string]::Empty
                Ensure = 'Present'
            }

            Cluster "Production_$($Server)" {
                Server = $Server
                Credential = $VcCreds
                Name = 'Production' 
                Location = [string]::Empty
                DatacenterName = 'PoShDSC'
                DatacenterLocation = [string]::Empty
                Ensure = 'Present'
                HAEnabled = $false
                DrsEnabled = $true
                DrsAutomationLevel = 'FullyAutomated'
                DrsMigrationThreshold = 5
                DrsDistribution = 0
                MemoryLoadBalancing = 100
                CPUOverCommitment = 500
                DependsOn = "[Datacenter]PoShDSC_DC"
            }

            foreach ($vmh in $vCenter.VMHost) {
                $vmhName = $vmh.split('.')[0]

                vCenterVMHost "vCenterVMHost_$($vmhName)" {
                    Server = $Server
                    Credential = $VcCreds
                    Name = $vmh 
                    Location = 'Production'
                    DatacenterName = 'PoShDSC'
                    DatacenterLocation = ''
                    Ensure = 'Present'
                    VMHostCredential = $VmhCreds
                    ResourcePoolLocation = '/'
                    Port = 443
                    Force = $true
                    DependsOn = "[Cluster]Production_$($Server)"
                }

                VMHostScsiLun "VMHostScsiLun_$($vmhName)_mpx.vmhba0C0T0L0" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh
                    CanonicalName = 'mpx.vmhba0:C0:T0:L0'
                    BlocksToSwitchPath = 0
                    CommandsToSwitchPath = 0
                    IsLocal = $true
                    IsSsd = $false
                    MultipathPolicy = 'Fixed'
                    PreferredScsiLunPathName = 'vmhba0:C0:T0:L0'
                }
    
                VMHostScsiLunPath "VMHostScsiLunPath_$($vmhName)_vmhba0:C0:T0:L0" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh
                    Name = 'vmhba0:C0:T0:L0'
                    ScsiLunCanonicalName = 'mpx.vmhba0:C0:T0:L0'
                    Active = $true
                    Preferred = $true
                    DependsOn = "[VMHostScsiLun]VMHostScsiLun_$($vmhName)_mpx.vmhba0C0T0L0"
                }
    
                VmfsDatastore "VmfsDatastore_$($vmhName)_LocalDatastore" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh
                    Ensure = 'Present'
                    Name = "Local Datastore - $($vmhName)"
                    Path = 'mpx.vmhba0:C0:T0:L0'
                    BlockSizeMB = 1
                    CongestionThresholdMillisecond = 30
                    FileSystemVersion = '5'
                    StorageIOControlEnabled = $false
                    DependsOn = "[VMHostScsiLun]VMHostScsiLun_$($vmhName)_mpx.vmhba0C0T0L0"
                }

                VMHostDnsSettings "VMHostDnsSettings_$($vmhName)" {
                    Server = $Server
                    Credential = $VcCreds
                    Name = $vmh 
                    Dhcp = $false
                    DomainName = 'corp.local'
                    HostName = $vmhName
                    Address = @('192.168.110.10')
                    Ipv6VirtualNicDevice = ''
                    SearchDomain = @('corp.local')
                    VirtualNicDevice = ''
                }

                VMHostNtpSettings "VMHostNtpSettings_$($vmhName)" {
                    Server = $Server
                    Credential = $VcCreds
                    Name = $vmh 
                    NtpServer = @('192.168.110.10')
                    NtpServicePolicy = 'Automatic'
                }

                VMHostService "VMHostService_TSM-SSH_$($vmhName)" {
                    Server = $Server
                    Credential = $VcCreds
                    Name = $vmh 
                    Key = 'TSM-SSH'
                    Policy = 'On'
                    Running = $true
                }

                VMHostPhysicalNic "VMHostPhysicalNic_$($vmhName)_vmnic0" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh   
                    Name = 'vmnic0'
                    BitRatePerSecMb = 10000
                    Duplex = 'Full'
                }
    
                VMHostPhysicalNic "VMHostPhysicalNic_$($vmhName)_vmnic1" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh   
                    Name = 'vmnic1'
                    BitRatePerSecMb = 10000
                    Duplex = 'Full'
                }

                StandardSwitch "StandardSwitch_$($vmhName)_vSwitch0" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh   
                    Name = 'vSwitch0'
                    Ensure = 'Present'
                    Mtu = 1500
                    NicDevice = @('vmnic0', 'vmnic1')
                    BeaconInterval = 1
                    LinkDiscoveryProtocolType = 'Unset'
                    LinkDiscoveryProtocolOperation = 'Unset'
                    AllowPromiscuous = $false
                    ForgedTransmits = $true
                    MacChanges = $true
                    Enabled = $false
                    CheckBeacon = $false
                    ActiveNic = @('vmnic0', 'vmnic1')
                    StandbyNic = @()
                    NotifySwitches = $true
                    Policy = 'Loadbalance_srcid'
                    RollingOrder = $false
                    DependsOn = "[VMHostPhysicalNic]VMHostPhysicalNic_$($vmhName)_vmnic0", "[VMHostPhysicalNic]VMHostPhysicalNic_$($vmhName)_vmnic1"
                }
    
                StandardPortGroup "StandardPortGroup_$($vmhName)_Management" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh   
                    Name = 'Management'
                    VssName = 'vSwitch0'
                    Ensure = 'Present'
                    VLanId = 0
                    LoadBalancingPolicy = 'Unset'
                    ActiveNic = @('vmnic0')
                    StandbyNic = @()
                    UnusedNic = @('vmnic1')
                    NetworkFailoverDetectionPolicy = 'Unset'
                    DependsOn = "[StandardSwitch]StandardSwitch_$($vmhName)_vSwitch0"
                }
    
                StandardPortGroup "StandardPortGroup_$($vmhName)_Storage" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh   
                    Name = 'Storage'
                    VssName = 'vSwitch0'
                    Ensure = 'Present'
                    VLanId = 1700
                    LoadBalancingPolicy = 'Unset'
                    ActiveNic = @('vmnic1')
                    StandbyNic = @()
                    UnusedNic = @('vmnic0')
                    NetworkFailoverDetectionPolicy = 'Unset'
                    DependsOn = "[StandardSwitch]StandardSwitch_$($vmhName)_vSwitch0"
                }
                
                StandardPortGroup "StandardPortGroup_$($vmhName)_VM Network" {
                    Server = $Server
                    Credential = $VcCreds
                    VMHostName = $vmh   
                    Name = 'VM Network'
                    VssName = 'vSwitch0'
                    Ensure = 'Present'
                    VLanId = 1731
                    LoadBalancingPolicy = 'Unset'
                    ActiveNic = @('vmnic0', 'vmnic1')
                    StandbyNic = @()
                    UnusedNic = @()
                    NetworkFailoverDetectionPolicy = 'Unset'
                    DependsOn = "[StandardSwitch]StandardSwitch_$($vmhName)_vSwitch0"
                }

            }

            foreach ($folder in $vCenter.VMFolder) {

                Folder "Folder_$($folder)" {
                    Server = $Server
                    Credential = $VcCreds
                    Name = $folder  
                    Location = ''
                    DatacenterName = 'PoShDSC'
                    DatacenterLocation = ''
                    Ensure = 'Present'
                    FolderType = 'VM'
                    DependsOn = "[Datacenter]PoShDSC_DC"
                }

                Folder "Folder_$($folder)_Windows" {
                    Server = $Server
                    Credential = $VcCreds
                    Name = 'Windows'    
                    Location = $folder
                    DatacenterName = 'PoShDSC'
                    DatacenterLocation = ''
                    Ensure = 'Present'
                    FolderType = 'VM'
                    DependsOn = "[Folder]Folder_$($folder)"
                }
        
                Folder "Folder_$($folder)_Linux" {
                    Server = $Server
                    Credential = $VcCreds
                    Name = 'Linux'  
                    Location = $folder
                    DatacenterName = 'PoShDSC'
                    DatacenterLocation = ''
                    Ensure = 'Present'
                    FolderType = 'VM'
                    DependsOn = "[Folder]Folder_$($folder)"
                }

            }

            Folder Folder_Management_VMware {
                Server = $Server
                Credential = $VcCreds
                Name = 'VMware' 
                Location = 'Management'
                DatacenterName = 'PoShDSC'
                DatacenterLocation = ''
                Ensure = 'Present'
                FolderType = 'VM'
                DependsOn = "[Folder]Folder_Management"
            }
        }
    }
}

vCenter_Config -ConfigurationData $configurationData

For more information about each of the resources and some sample configurations, see the GitHub repository: DSC Resources for VMware Documentation

Summary

The DSC Resources for VMware 2.1 release has taken a major step forward in the ability to manage your vSphere environments with PowerShell DSC and PowerCLI. There are now more than 60 resources which give the ability to use configuration management concepts and apply them to our vSphere environments. This post showed how we could go from an empty vCenter Server to a workload ready vSphere environment in a matter of minutes with the latest set of resources.

Download the latest VMware.vSphereDSC module from the PowerShell Gallery today, and let us know in the comments how you’re using it in your environment!

For more information about the DSC Resources for VMware 2.1 release, see: New Release – DSC Resources for VMware 2.1

The post In Action – DSC Resources for VMware 2.1 appeared first on VMware PowerCLI Blog.

Exporting an ESXi Host’s Config to DSC

$
0
0

It has been an exciting year (and a couple months) for the DSC Resources for VMware. As of last week’s announcement, there have been 3 releases for a total of 67 resources for this open source project. It has been presented to many different audiences, including VMworld US and Europe, PowerShell Conference Europe, PowerShell Conference Asia, and several PowerShell and VMware User Groups! And the number one question we always get: how do I pull my existing configuration?

This is a tricky conversation. One which normally starts as a discussion and ends in a debate, because there’s no wrong answer. If you think about a vSphere environment, there are a lot of settings. Some of those settings are that way by default, while others have been configured to be as such. In a majority of situations, an export is going to include all of the available settings, regardless of whether they’re there by default or not. From that point forward, it is your choice whether to continue monitoring the configuration of those settings. Regardless of your preference, we have an amazing new tool that was created to help ease the process of exporting an existing configuration.

Let’s check out a new way to export an ESXi host’s configuration for use with PowerShell DSC.

Introducing the ExportVMHostConfiguration Script

As of version 2.1 of the DSC Resources for VMware, there is a script included in the root folder of the module directory on GitHub. This script is called ExportVMHostConfiguration.ps1. This script is going to connect to your server, whether that be a vCenter Server or ESXi host directly, and it is going to pull back the configuration of the specified ESXi host.

Input parameters:

  • Server – Connection point for PowerCLI, either a vCenter server or an ESXi host
  • Credential – Credentials which will be used against the Server
  • VMHostName – Name of the host of which the DSC configuration will be exported
  • Path – Location to store the DSC configuration once the export has completed

When running the script, it will connect to the system supplied in the Server parameter, then output to the terminal each section which is being gathered, and finally will close the connection the to the system supplied in the Server parameter.

Running the script will look similar to the following:
Sample: Exporting an ESXi host's configuration to DSC

After the script has successfully completed, check the directory which was referenced for the Path parameter. There should be a single PowerShell file which, when opened, will contain the configuration for your specified host!

Sample: Output from a DSC export process

There are a couple caveats we should mention. The exported configuration only includes information for resources which have been completed. For example, DSC resources for vSphere Distributed Switches (VDS) are still being worked on therefore they will not show up in this exported configuration at this point in time. Each of the resources which have been populated will include all the properties for those resources, even the ones that are not required. We can see additional information about each resource, including the available properties in the GitHub repository’s Documentation directory.

One known issue we have run into, a PowerShell session may terminate. We have found that increasing the memory available to the PowerShell process has helped to alleviate the issue. Running the following command has helped with the issue:

Set-Item wsman:localhost\Shell\MaxMemoryPerShellMB 2048

Depending on your environment, you may want to set that back to the default of 1024 after the export process has completed. This can be done with the following command:

Set-Item wsman:localhost\Shell\MaxMemoryPerShellMB 1024

Summary

The DSC Resources for VMware 2.1 release had a hidden surprise in the GitHub repository, a way to export an ESXi host’s configuration as a DSC configuration file! This script, named ExportVMHostConfiguration.ps1, can be found in the root of the VMware.vSphereDSC folder. By running the script with a few input parameters, you will receive back that host’s configuration as it would be written for PowerShell DSC!

Download the ExportVMHostConfiguration.ps1 script from the GitHub repository today, and let us know in the comments how it’s working in your environment!

The post Exporting an ESXi Host’s Config to DSC appeared first on VMware PowerCLI Blog.

New Release – PowerCLI 12

$
0
0

This week has been full of announcements, releases, and so much other excitement. We can’t help but join in with a release of our own in the form of PowerCLI 12.0.0! This new release comes complete with a massive amount of new functionality, support for newly released products, and some performance improvements too.

PowerCLI 12.0.0 comes with the following updates:

  • Added cmdlets for ESXi host network management
  • Added cmdlets for HCX management
  • Added cmdlets for Namespace Management
  • Added cmdlets for Trusted Host Services management
  • Added cmdlets for VM Guest Disk management
  • Added cmdlets for VMware Cloud on AWS management
  • Added cmdlets for vSAN management
  • New module for VMware Cloud Services management
  • Updated support for vSphere 7.0
  • Updated support for vRealize Operations 8.0
  • Updated support of the License module for multiplatform use
  • Updated support of the vROps module for multiplatform use
  • Updated support of Open-VMConsoleWindow for multiplatform use
  • Updated support of Move-VM to include opaque networks
  • Updated support for PowerShell versions

Let’s take a better look at some of these updates!

VM Guest Disk Management

One of the most requested features of all time has finally been introduced! We can now map a guest-based partition to a VM’s VMDK. There are a couple caveats to this as this capability is not solely based on PowerCLI’s functionality. First, your environment will require to be using vSphere 7. This is because of a new property called “Mapping” which has been added to the Guest service. Next, your VM will need to be running VMware Tools 11.0 or newer. Lastly, the initial release of the vSphere API only supports Windows operating systems.

Once those requirements are all checked off, we’re ready to use PowerCLI to map our guest partition to a VMDK with a new cmdlet and a new parameter. The new cmdlet is Get-VMGuestDisk. The new parameter is VMGuestDisk, which can be used with the existing Get-HardDisk.

Here’s an example of these two new features in action:

 

ESXi Host Netstack Support

vSphere 6.0 added the concept of network stacks to ESXi hosts. This feature gives us the ability to assign different default gateways to the VMKernel adapters so we can route that traffic throughout the network. There were two main ways to automate the management of these netstacks, by way of ESXCLI or through the API. PowerCLI can use both of those methods, but it would require several lines of code. PowerCLI 12 introduces two new cmdlets and a new parameter to easily manage a vSphere environment’s network stacks!

These new cmdlets are: Get-VMHostNetworkStack and Set-VMHostNetworkStack. The new parameter is named “NetworkStack” and has been added to the New-VMHostNetworkAdapter cmdlet.

Here’s an example of creating new host network adapter and assigning it to the vmotion network stack:

Updated PowerShell Version Support

PowerCLI always strives to be up to date with the latest and greatest releases, which also includes PowerShell itself. Recently, Microsoft released PowerShell 7.0 and PowerCLI 12 will be the first version to support it. This new release also includes support for .NET Framework 4.7.2 and newer and adds support for .NET Core 3.1.

We also have to be aware of when releases are no longer supported. Historically, when it comes to VMware products, once a product is no longer supported, we also stop supporting it for PowerCLI. This too extends to PowerShell and the .NET Framework. With this release, we have deprecated support for vSphere 6.0, Windows PowerShell 5.0 and prior as well as PowerShell Core 6.x. This will also include deprecations for .NET Frameworks versions before 4.7.2 and .NET Core 2.0.

 

Compatibility Matrix for VMware PowerCLI 12.0.0
OS Type .NET Version PowerShell Version
Windows .NET Framework 4.7.2 or later Windows PowerShell 5.1
Linux .NET Core 3.1 PowerShell 7
macOS .NET Core 3.1 PowerShell 7

 

Over the years, PowerCLI users have made comments and even feature requests regarding the supported operating systems. Due to the above changes in support for PowerShell and .NET versions, we are also able to increase the supported operating systems as well! This translates into PowerCLI supporting any and all OSes which PowerShell supports. A detailed list of these OSes can be found on Microsoft’s documentation site: PowerShell support lifecycle.

Summary

The first release of PowerCLI for this year is here and it’s a major update! PowerCLI 12 adds support for the newly released vSphere 7 as well as high level cmdlets for new features like Namespaces and Trusted Host Services. There are several modules which have been converted over to support multi-platform versions of PowerShell, including the vROps and License modules. VMware Cloud based services continue to see new high-level cmdlets. This release adds Organization and user management capabilities. With all these great new additions and so many more, you’ll want to upgrade to PowerCLI 12 today!

For more information on changes made in VMware PowerCLI 12.0.0, including improvements, security enhancements, and deprecated features, see the VMware PowerCLI Change Log. For more information on specific product features, see the VMware PowerCLI 12.0.0 User’s Guide. For more information on specific cmdlets, see the VMware PowerCLI 12.0.0 Cmdlet Reference.

Remember, updating your PowerCLI modules is now as easy as:

Update-Module VMware.PowerCLI

Let us know in the comments what you’re looking forward to most!

 

The post New Release – PowerCLI 12 appeared first on VMware PowerCLI Blog.


What’s New for the VMware Cloud on AWS PowerCLI Module

$
0
0

With the recent release of PowerCLI 12.0, a handful of new cmdlets were added for use with VMware Cloud on AWS to gather information about your organization and assist with managing your SDDC clusters:

  • Get-VmcOrganization
  • Get-VmcSddcCluster
  • New-VmcSddcCluster
  • Remove-VmcSddcCluster

Let’s take a look at each of these and how they can be used to gather information and manage your SDDC.

Organization Information

VMware Cloud on AWS accounts are based on an organization, which normally corresponds to a group or line of business subscribed to the service. Users are granted access to the organization to consume the subscribed services and may belong to more than one org.

The Get-VmcOrganization cmdlet allows you to retrieve information about the orgs you belong to including host and SDDC limits, high-level creation and update information, as well as your org ID.

Here’s an example of gathering data for a specific organization called “VMC-GA”:

Get-VmcOrganization -Name "VMC-GA" | Format-List

Get-VmcOrganization

 

Viewing SDDC Cluster Information

We can get the org information and use an existing cmdlet (Get-VmcSddc) that allows us to get our SDDC information, but now we can drill down a little more and retrieve the clusters of the SDDCs from the VMware Cloud environment.

We can find some basic information with the following command, specifying the name of our SDDC:

Get-VmcSddcCluster -Sddc "SDDC-1”

Get-VmcSddcCluster

 

We can also get a little bit more detail, which includes the cluster ID, by piping the command to Format-List:

Get-VmcSddcCluster -Sddc "SDDC-1" | Format-List

Get-VmcSddcCluster

 

Managing SDDC Clusters

One of the great things about VMware Cloud on AWS is that we have a fleet of hardware available and ready to be consumed. This allows customers the flexibility to add and remove hosts (and clusters) based on their needs. Our new cmdlets make this a breeze.

We can add a cluster with a very simple command:

New-VmcSddcCluster -Sddc "SDDC-3" -HostCount 3

New-VmcSddcCluster

 

Conversely, we can remove a cluster within the SDDC:

Get-VmcSddc -Name “SDDC-3” | Get-VmcSddcCluster -Name “Cluster-2” | Remove-VmcSddcCluster

Remove-VmcSddcCluster

 

Check out the Cloud in a Minute video to see it in action!

 

Summary

PowerCLI 12.0 brings us the ability to view org information and some extremely useful cmdlets that allow us to manage our SDDC clusters. Update to the latest version of PowerCLI with the following command:

Update-Module -Name VMware.PowerCLI

 

 

The post What’s New for the VMware Cloud on AWS PowerCLI Module appeared first on VMware PowerCLI Blog.

Cloud Service Module for User Management

$
0
0

The new Cloud Services module in PowerCLI 12 introduces cmdlets for easy user management automation of the VMware Cloud Services Platform.  This will let you use PowerCLI to manage users for services such as VMware Cloud on AWS. 

The new cmdlets in the CloudServices module are: 

  • Connect-Vcs 
  • Get-VcsOrganizationRole 
  • Get-VcsService 
  • Get-VcsServiceRole 
  • Get-VcsUser 
  • Get-VcsUserInvitation 
  • New-VcsUserInvitation 
  • Remove-VcsUser 
  • Remove-VcsUserInvitation 

In addition, the New-VcsOAuthSecurityContext cmdlet has been transferred over from the VMCmodule to CloudServices module.  

Let’s walk through how to use these within your own the VMware Cloud Services Platform Organization. 

Connect to your Organization 

The first cmdlet creates a new connection to a specific organization Connect-Vcs. You can establish a connection by an ApiToken. You can generate an Api Token from the VMC client My Account – Api Tokens -> Generate Token 

You can also create an OAuth app from the VMware Cloud Services Platform: Organization -> OAuth Apps -> Create App -> Server to server app -> Create 

Give your app a name and description, and do not forget to assign the appropriate organization and service roles. 

The application will generate a clientId and clientSecret which you can use to establish an OAuth security context. 

Note that connecting via a Server to server app is also available in VMC module.  

Invite a new user to join your Organization 

The next cmdlet is the New-VcsUserInvitation. You can create user invitation by specifying users email address and the organization roles which the user will have. You can also specify the service roles, but this parameter is optional. You can list available organization and service roles using the Get-VcsOrganizationRole and Get-VcsServiceRole cmdlets.  

Using Get-VcsOrganizationRole we get all organization roles and by Get-VcsServiceRole we get all available roles for Aws services. The user invitation is created for user with email username@mail.com with the specified organization and service roles. An email will be sent to the email address with a link for a confirmation. When the user confirms the invitation is no longer available, but a new user is created. Note that if you send an invitation to a user that is already registered no invitation will be send, but the user will be directly added to the organization.   

List available user invitations 

If you want to review user invitations that you have created or just check if a user is already invited Get-VcsUserInvitation is the right cmdlet for the purpose.  

In our case the only pending user invitation is the one we have just created. 

List available users 

When a user accepts an invitation, the invitation is removed, and it turns into a user accountYou can easily check existing users by using Get-VcsUser cmdlet.  

 

By executing this command, we retrieved all available users whose names starts with “A”. 

Remove user invitation 

You can remove a user invitation or group of user invitations by using the Remove-VcsUserInvitation cmdlet as shown in the example below. 

Remove user 

You also can remove users from the organization. 

We can get the user(s) which we want to remove using the Get-VcsUser cmdlet and then pass them to the Remove-VcsUser cmdlet. 

With this quick overview, you should hopefully be able to automate user management for your VMware Cloud services, including especially VMware Cloud on AWS. 

The post Cloud Service Module for User Management appeared first on VMware PowerCLI Blog.

Introducing support for automating vSphere with Kubernetes

$
0
0

VMware vCenter 7 introduced vSphere with Kubernetes. This feature allows for hosting of Kubernetes workloads in vCenter. Read more about it here.

In the Kubernetes world, a namespace is a group of resources available to host workloads similar to the resource pool concept in vCenter. These resources include not only compute but also storage and networking resources.  Namespaces provide an abstraction that holds both Kubernetes and vCenter policy allowing for vCenter administrators to provide resources to developers while maintaining control and policy enforcement.

The namespace has a separate set of permissions and allows the vCenter administrator to grant access to the developers that would use that namespace to run workloads. If the namespace needs access to a specific storage class, the administrator can grant access to that storage through a Storage Policy.

With PowerCLI 12.0, we introduced a new module – VMware.VimAutomation.WorkloadManagement, which allows you to automate tasks related to workload management in vCenter.  With the first version of this module, we are enabling the automation of setting up a new namespace.  The examples below assume you have successfully enabled workloads for a Cluster in vCenter.

You can create a new namespace using the New-WMNamespace command. Note that the namespace name must be a valid Kubernetes identifier.

$workloadCluster = Get-Cluster "MyWorkloadsCluster"
$devNamespace = New-WMNamespace -Name "dev-project-a" -Description "Workloads for project A" -Cluster$workloadCluster

You need to define a Storage Policy in vCenter that the workloads running in the namespace would use. You can define multiple Storage Policy objects if the namespace would use more than one type of storage.

For this example, we define a policy called “RedundantStorage” that we want the developers to be able to use for their application storage. We set a limit of 30000 MiB. This limit can be changed later.

$redundantStorage = Get-SpbmStoragePolicy "RedundantStorage"
New-WMNamespaceStoragePolicy -Namespace $devNamespace -StoragePolicy $redundantStorage -LimitMiB 30000

This storage is available as a Kubernetes storage class that the developers can reference in their application specifications.

Next, we need to give permissions to the developers working on that project so they can use the namespace.  For this example, we assume they are members of the group team1@mydomain.local and they need Edit rights for the namespace.

New-WMNamespacePermission -Namespace $devNamespace -Role Edit -Domain "mydomain.local" -PrincipalType Group -PrincipalName "team1"

Now the developers should be able to use the Kubernetes namespace.

To verify that the namespace is available, follow the “Link to CLI Tools” in the web interface shown when you open the Namespace. This provides you with the instructions specific to your version and a link to download Kubectl and the vSphere plugin. Developers should use those instructions to connect and use this namespace.

The post Introducing support for automating vSphere with Kubernetes appeared first on VMware PowerCLI Blog.

New Open Source PowerCLI Module for managing vCenter Single Sign-On (SSO)

$
0
0

This blog post was originally shared on virtuallyghetto.com.

A few years back I had submitted a PowerCLI Feature Request (PCLI-44) via the public PowerCLI Ideas platform requesting for a PowerCLI module that would support vCenter Single Sign-On (SSO) Administrative functionality such as managing SSO Users, Groups, Password, Lockout Policy and Identity Sources.


This was one of the most popular Idea voted by the PowerCLI community, which also stressed the need for such functionality which I came across on a regular basis on some of the Automation I was writing. In the past, I have written numerous blog articles in working around this limitation as the vCenter SSO Admin APIs were not and leveraging Guest Operations API, one could still automate various SSO operations using the various SSO CLIs that is included within the vCenter Server Appliance (VCSA).

Today, I received a notification from the PowerCLI Ideas platform that this feature as “Shipped” and it looks like the PowerCLI team has just released an Open Source Module called VMware.vSphere.SsoAdmin that includes the following 12 cmdlets:

  • Add-ActiveDirectoryIdentitySource
  • Connect-SsoAdminServer
  • Disconnect-SsoAdminServer
  • Get-SsoGroup
  • Get-SsoLockoutPolicy
  • Get-SsoPasswordPolicy
  • Get-SsoPersonUser
  • Get-SsoTokenLifetime
  • New-SsoPersonUser
  • Remove-SsoPersonUser
  • Set-SsoLockoutPolicy
  • Set-SsoPasswordPolicy
  • Set-SsoPersonUser
  • Set-SsoTokenLifetime

To get started with the new PowerCLI SSO Module, take a look at the instructions below.

Pre-Req:

  • PowerShell 5.1 (or newer) + PowerCLI 12.0 Installed

Step 1 – Clone using git command-line or download the PowerCLI Example Repo to your local system

Step 2 – Change into the modules/VMware.vSphere.SsoAdmin directory and then import SSO module using:

Import-Module ./VMware.vSphere.SsoAdmin.psd1

Step 3 – Use the Connect-SsoAdminServer to connect to your vCenter Server. If you have a self-signed certificate, you will need to pass in the -SkipCertificateCheck parameter

Connect-SsoAdminServer -Server vcsa.primp-industries.com -User administrator@vsphere.local -Password VMware1! -SkipCertificateCheck


Once connected, you can start using any of the SSO cmdlets, here is an example retrieving the SSO Password and Lockout Policies:

Get-SsoPasswordPolicy  Get-SsoLockoutPolicy


Here is an example of creating a new SSO User and then r

New-SsoPersonUser -User lamw -Password 'MyStrongPa$$w0rd' -EmailAddress 'lamw@primp-industries.com' -FirstName 'William' -LastName 'Lam'  Get-SsoPersonUser -Name lamw -Domain vsphere.local  Remove-SsoPersonUser -User (Get-SsoPersonUser -Name lamw -Domain vsphere.local)


To disconnect from SSO endpoint, you will need to run the following command:

Disconnect-SsoAdminServer -Server $Global:DefaultSsoAdminServers[0]

For detailed documentation on each cmdlet, simply use the Get-Help function and specify the name of the cmdlet to get more information. If you have been waiting for this functionality in PowerCLI, be sure to give this a try and hopefully with positive feedback, we may see this module as part of the official PowerCLI release in the future!

The post New Open Source PowerCLI Module for managing vCenter Single Sign-On (SSO) appeared first on VMware PowerCLI Blog.

New Capabilities in PowerCLI 12.1 for VMware Cloud on AWS

$
0
0

PowerCLI 12.1 is now available and it includes several new capabilities that make automation for VMware Cloud on AWS easier than ever.  This release includes two new cmdlets for configuring Elastic DRS (EDRS) policy, several enhancements that improve your ability to control the size, type, and scale of new software-defined data centers (SDDC), and updates that enable scaling multi-cluster SDDCs. In addition to that, this release makes it easier than ever to seamlessly bridge automation from the VMware Cloud infrastructure layer to the vCenter Server instance on your SDDC that is used to manage your workloads.

If you’re just getting started with PowerCLI for VMware Cloud on AWS, be aware that authentication is handled through an API Token and not the traditional username/password combination that is used for on-prem vSphere environments.  For a technical overview on how to get started, visit VMware Cloud Tech Zone.

New Elastic DRS Policy Management Cmdlets

Elastic DRS (EDRS) enables you to stay ahead of resource demands in your SDDC by automatically adding hosts to a cluster when needed, and automatically removing hosts when fewer resources are required. There are several policies that can be configured by administrators to optimize for factors such as cost or performance.

This new PowerCLI release introduces two new cmdlets that provide the ability to view or change the configuration: Get-VmcClusterEdrsPolicy and Set-VmcClusterEdrsPolicy.

EDRS policy

Enhanced Control Over Scalability During SDDC Creation

Software-defined data centers (SDDCs) can be created from the graphical web console or through the New-VmcSddc cmdlet. This new release of PowerCLI adds several new parameters to the existing cmdlet.

The VMware Cloud on AWS service continues to mature, and the recent addition of a new bare-metal host type called i3en.metal provides higher performance along with more vSAN storage for more demanding workloads. With this release of PowerCLI, you are able to specify the host type when creating a new SDDC by using the new -HostType parameter during deployment.

Similarly, the ability to allocate additional resources to the management components for larger clusters is now configurable from PowerCLI. This was previously available only in the web interface, but now can be specified with the -SddcAppliancesSize parameter.

And finally, for business-critical applications with more demanding availability requirements, the stretched cluster option places resources in two physically separate AWS Availability Zones.  This capability is now accessible for PowerCLI deployments by adding the -StretchedCluster parameter.

New SDDC

 

Adding or Removing Hosts in a Multi-Cluster SDDC

An SDDC starts out with a single cluster, but as workloads increase and consume more resources, it may be necessary to add additional clusters to an SDDC.  Those teams managing larger deployments with multiple clusters will be glad to know that PowerCLI 12.1 enhances the Add-VmcSddcHost and Remove-VmcSddcHost cmdlets to accept a new -Cluster parameter. This provides the ability to add hosts to any cluster in the SDDC – previous versions of the cmdlet only supported adding hosts to the first cluster.

Seamless Automation from VMware Cloud to VMware vSphere

PowerCLI is a mature automation framework that can configure and control a wide range of VMware services.  Different services typically have distinct connection endpoints and authentication techniques.  When managing VMware Cloud on AWS, an API token is used to authenticate automation of various infrastructure tasks, such as deploying an SDDC or adding hosts to a cluster. Moving up a layer in the stack, workload VM deployment and management is accomplished by connecting to vCenter Server, which is authenticated through a traditional username and password combination.

Administrators have always been able to obtain their unique SDDC vCenter credentials by logging on to the VMware Cloud console web interface, but with PowerCLI 12.1 there is another option: the URL and credentials are now properties of an SDDC object. This makes it easier to perform full end-to-end automation of the underlying SDDC as well as workload provisioning.

vCenter Credentials

Please note that administrators have the ability to change this password in vCenter – but doing so does not update the initial randomly generated one that is created during SDDC deployment and viewable from the VMware Cloud on AWS console.  Therefore, if the ‘cloudadmin@vmc.local’ password is ever changed, this feature becomes inoperable.

Viewing the VMware Cloud Cmdlets

It’s easy to get a quick list of available commands for the VMware Cloud on AWS module:

Get-Command -Module VMware.VimAutomation.Vmc

PowerCLI 12.1 Commands

Takeaways

VMware Cloud on AWS continues to offer new capabilities and enhancements that enable you to build the best public cloud for all of your workloads, without converting or re-platforming.  PowerCLI is a trusted tool for automating numerous aspects of the VMware Hybrid Cloud and each new release tracks the enhancements and improvements in the underlying infrastructure and services.  For more information on how to get started with PowerCLI, check out VMware Cloud Tech Zone.

The post New Capabilities in PowerCLI 12.1 for VMware Cloud on AWS appeared first on VMware PowerCLI Blog.

Viewing all 146 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>