'System.Management.Automation.ConfigPropertyAccessor' exception when launching PowerCLI Core in Linux firstboot script

Happy New Years everyone!

I just got back into the swing of things after taking some much needed time off over the holiday break. While catching up on my email, I also re-visited one of my pet projects I had been working on right before the break. I needed to launch a specific PowerCLI script upon firstboot from a Linux system, specifically PhotonOS leveraging PowerCLICore. My first few attempts had failed and in troubleshooting the issue further, I found the following cryptic error message in the system logs:

The shell cannot be started. A failure occurred during initialization:
The type initializer for 'System.Management.Automation.ConfigPropertyAccessor' threw an exception.

After a bit of Googling, I found the following Github PR which seems to indicate that the HOME environmental variable may not properly configured or readable by Powershell. The quick fix was to simply define the HOME directory within the shell script that starts up the PowerCLI script.

Below is a snippet of what I needed to add to /etc/rc.d/rc.local to automatically run my PowerCLI script:

The following command was also useful in troubleshooting and verifying that my PowerCLI script had properly executed since there was no output in my script log:

journalctl --no-pager | grep rc.local

Automated deployment and setup of vRealize Network Insight (vRNI)

Earlier last week I had deployed the latest version of vRealize Network Insight (vRNI) 3.2 in my home lab to learn more about the product and its capabilities. The vRNI setup involves involves deploying two Virtual Machines, the first being the main vRNI Platform OVA. Once the vRNI Platform VM has been deployed, you will need to activate it with a license key and then generate a shared secret which is then used to deploy the vRNI Proxy OVA. Using the share secret, the vRNI Platform VM will be able to automatically detect when the vRNI Proxy VM is on the network and associate it with the deployment.

The workflow is pretty straight forward but as many of you know me, if I need to manually do something once, it means I should probably automate it for the future 🙂 I had looked around the documentation and did not see any published APIs for the initial setup and configuration. Although a CLI exists, it was only available post-deployment and it required SSH which I did not want to have to rely upon. I ended up reverse engineering the UI to replicate the workflow from an automation standpoint. I created a small PowerCLI script called vRNI-Deploy.ps1 and below are the instructions on using the script.

Step 0 - Obtain a vRNI License Key, which is required to setup vRNI. You may need to work with your VMware Account team or contact VMware Sales to get an evaluation license key.

Step 1 - Download both the vRNI 3.2 Platform and Proxy OVA from here.

Step 2 - Download the vRNI-Deploy.ps1 script to a system that has the latest release of PowerCLI 6.5 R1 installed.

Step 3 - Edit the following sections of the script which you can find more details below:

The full path to both the vRNI Platform and Proxy OVAs:


The vRNI License Key:


The configuration of the vRNI Platform VM:


The configuration of the vRNI Proxy VM:


General deployment configuration for both VMs:


Note: The medium (smallest) deployment requires at least 42GB of memory (32GB reserved for Platform VM and 10GB reserved for the Proxy VM). Please ensure you have sufficient resources before deploying into your environment.

Continue reading

How to automate the deployment of an un-configured VCSA 6.5 (Stage 1 only)?

In vSphere 6.5, the VCSA deployment has changed from a "Single" monolithic stage where a user inputs all of the required parameters up front and then the installer goes and deploys/configures the VCSA. In the new VCSA UI Installer, we still continue to provide a "Single" monolithic user experience but behind the scenes, the deployment is now actually composed of two distinct stages, creatively called Stage 1 and Stage 2.

  • Stage 1 - Initial OVA deployment which includes basic networking + OS password
  • Stage 2 - Applying the VCSA specific configurations (e.g. External Platform Services or Embedded VCSA)

One reason why this is so useful is that in previous releases of the VCSA, if you had fat fingered say the DNS entry or wanted to change the IP Address/Hostname before applying the actual application configurations, your only option was to re-deploy the VCSA, not a very good user experience. With this new deployment model, customers now have the ability to either go through both Stage 1 and Stage2 or they can stop just after Stage 1 which would allow them to make necessary edits before continuing to Stage 2. If you decide to stop after Stage 1, then to complete the deployment, you will need to open a browser and finish the configuration using the VCSA's Virtual Appliance Management Interface (VAMI) at https://[VCSA-HOSTNAME-OR-IP]:5480

Once on the VAMI UI, you will want to select the "Set up vCenter Server Appliance" which will then launch the configuration wizard. From here, you will have the option of changing some of the settings that you had provided in Stage 1 such as the IP Address or things like NTP or enabling SSH access as shown in the screenshot below. Once you have confirmed these settings, it will be saved and then you will move onto Stage 2 to complete the configuration of your VCSA deployment.

Continue reading

vCenter Server High Availability (VCHA) PowerCLI 6.5 community module

As some of you may know, I have been spending some time with the new vCenter Server High Availability (VCHA) feature that was introduced in vSphere 6.5. In fact, I had even published an article a few weeks back on how to enable the new vCenter Server High Availability (VCHA) feature with only a single ESXi host which allowed me to explore some of the new VCHA APIs without needing a whole lot of resources to start with, obviously, you would not do this in production 🙂

For those of you who are not familiar with the new VCHA feature which is only available with the vCenter Server Appliance (VCSA), Feidhlim O'Leary has an excellent write up that goes over the details and even provides demo videos covering both the "Basic" and "Advanced" workflows of VCHA. I highly recommend you give his blog post a read before moving forward as this article will assume you understand how VCHA works.

In playing with the new VCHA APIs, I decided to create a few VCHA functions which I thought would be useful to have as a PowerCLI module for others to use and also try out. With that, I have published my VCHA.psm1 module on the PowerCLI Community Repo on Github which includes the following functions:

Name Description
Get-VCHAConfig Retrieves the VCHA Configuration
Get-VCHAClusterHealth Retrieve the VCHA Cluster Health
Set-VCHAClusterMode Sets the VCHA Cluster Mode (Enable/Disable/Maintenance)
New-VCHABasieConfig Creates a new "Basic" VCHA Cluster
Remove-VCHACluster Destroys a VCHA Cluster

Continue reading

VUM UMDS Docker Container for vSphere 6.5

Early last week, I had published an article on how to automate the deployment of VUM's Update Manager Download Service (UMDS) in vSphere 6.5 for an Ubuntu 14.04 distribution. The interesting backstory to that script is that it started from a Docker Container that I had initially built for the VUM UMDS. I found that being able to quickly spin up UMDS instance using a Docker Container purely from a testing standpoint was much easier than needing to deploy a full VM, especially as I have Docker running on my desktop machines. Obviously, there are limitations with using a Docker Container, especially if you plan to use UMDS for a longer duration and need persistence. However, for quick lab purposes, it may just fit the bill and even with Docker Containers, you can use Docker Volumes to help persist the downloaded content.

You can find the Dockerfile and its respective scripts on my Github repo here: https://github.com/lamw/vum-umds-docker

Below are the instructions on how to use the VUM UMDS Docker Container.

Continue reading