Posts
- Jul 10, 2024
My good friend Bryan Ross has extended upon this article on his Chief Therapy Officer blog
Blogs.
I appreciate that you’re reading one right now, but the word still seems quaint, old-fashioned. It’s all so very turn-of-the-century, so very web 2.0.
I’m going to describe some of the reasons why, even in 2024, you might want to have a blog for your platform. Or, if you already have a blog, some hints and tips for making the most of it, and maybe some encouragement to use it more.
- Dec 1, 2023
While reading through my RSS feeds last week, I came across a HackerNews post about Home Documentation.
I’ve a huge fan of documenting all of the things, and I was currently revisiting both the content, and the platform on which I document, so I thought I’d add my 2¢.
- Nov 29, 2023
Teams launching new internal developer platforms often fall into the trap of creating technically-advanced solutions, using cutting edge tooling, but forgetting to think much about usability from the customer perspective. I think this is typically because these platforms been built by engineers who have inevitably been immersed in those specific technologies for so long that they’ve forgotten what it’s like to approach it for the first time.
- Apr 14, 2022
Photo by Michelle @Shelly Captures It on Unsplash
It’s fair to say that the primary toolset used by our private-cloud engineers (vRealize Automation and vRealize Orchestrator) are not widely used, and we historically have not had have a large pool of experienced local talent from which to draw. We therefore tended to hire general IT people with a knack for solving technical problems. These people tend to be infrastructure engineers with a flair for automation.
- Feb 14, 2018
I’ve moved the site out of Ghost (where I’d managed to end up in some version cul-de-sac, which was going to require multiple intermediate migrations to get out of), and into Jekyll.
- Feb 14, 2018
After migrating from vRealize Automation (vRA) 6.2, we’ve recently started the long-overdue work of investigating the new functionality introduced with the event broker. We’re still using the state-change triggered workflows for machine life-cycle integration between vRA and vRealize Orchestration (vRO), and that’s going to be a big-job to change; but I thought I could maybe look at one of our other requirements which was to ensure that changes to blueprints made using the GUI get stored in source control.
- Sep 5, 2016
VMware vRealize Orchestrator (vRO) is pretty flexible, but there are times when you still need to execute a job on Jenkins.
- May 29, 2015
We’re soon going to be implementing multiple vRealize Orchestrator (vRO) servers in our vRealize Automation (vRA) development environment to allow people to choose different endpoints. Essentially if someone’s working on a workflow, that shouldn’t affect a different developer who is testing a template. So I wanted a way of allowing customers (in this case, developers) to choose from a list of Orchestrator endpoints.
- Oct 7, 2014
I don’t mind writing documentation for my scripts, but I find that most documentation writing exercises tends to suffers from two problems:-
Duplicated effort - I tend to document my script inline, (so that Get-Help will work), why do I need to document the same details elsewhere?
Keeping it up-to-date - The only thing worse than no documentation, is clearly outdated documentation.
- Jul 24, 2014
I’ve recently upgraded some of my home setup; instead of Windows Home Server 2011 managing everything, I’m now using a NetGear ReadyNAS 104, to serve files and using Windows Server 2012 R2 for the other functions.
- May 9, 2014
Quick script to assist with capacity planning.
- Feb 24, 2014
The move from persistent physical desktops, to non-persistent linked clones (with a separate user personalisation layer) requires rethinking the way in which machines are configured and software is deployed. The challenge is to deliver a consistent, highly available platform with the maximum efficiency. In this case efficiency means utilising Horizon View’s ability to dynamically provision just enough desktops, while ensuring that the necessary configuration changes are delivered by AppSense.
- Feb 18, 2014
I was doing some tidying of old scripts and came across something I thought it might be useful, so I tidied it up and added some documentation.
This PowerShell script uses the vSphere PowerCLI to display a list of virtual machine disks, file-names, modes (persistent or non-persistent), sizes and whether or not the disk is thinly provisioned.
- Jan 3, 2014
I wanted to use PowerShell to create a simple report of open (active & pending) incidents in System Center Service Manager 2012, but the only examples I could find online used the SMLets. Sometimes this wasn’t obvious, but soon became apparent when PowerShell choked over CMDLets like Get-SCSMObject. While I’m sure the SMLets are handy for ad-hoc reports by administrators, I wanted the option for my report to be generated by a group of users...
- Nov 27, 2013
26/02/14 - I've updated this script to accept pipeline input and work a little more efficiently when removing multiple machines. It’s one of those things that shouldn’t happen, but which inevitable does. Someone removes a View managed VM from vSphere, and View refuses to realise it’s gone. It also sometimes happens when machines fail to provision correctly (i.e., due to lack of available storage). The procedure is easy enough to follow, but it’s time-consuming and...
- Nov 18, 2013
I’ve been thinking about doing something like this for a while. By adding this to PowerShell profiles, I can ensure that other people who use my scripts/functions are using the latest versions by having them run directly from a Subversion URL. This negates the requirement for them to have a local SVN repo (and for them to keep it up to date).
- Oct 29, 2013
I’m currently working on user-centric application delivery to non-persistent VDI desktops. The rationale for this is that the more applications which can be delivered dynamically, the fewer pools we need to provision. This suits applications like Microsoft Project and Visio, which both tend to be used by a small number of people on each pool. These apps are too expensive to deploy to non-users, and need locked-down to fulfil license requirements if deployed under Citrix. User-based deployment via App-V allows the application to be targeted to users in existing pool; however, the non-persistent nature of the desktop means that the application needs delivered quickly (and silently) at each logon.
- Oct 28, 2013
I’m doing logon tuning just now for non-persistent VDI desktops - seeing long it takes to deploy App-V packages on a per-user basis to a generic desktop based on AD group membership. To assist with the tuning, I thought it would be useful to write a quick PowerShell function to gather information from the AppSense event logs in a way that allowed easy sorting, display, recording and comparison.
- Apr 22, 2013
This script will not work on PowerShell Core.
I’m not sure yet if I’ll take part in the 2013 Scripting Games; but as the the practice exercise dovetailed nicely with a requirement I had, I thought I’d give it a shot.
- Mar 12, 2013
This function will not work on PowerShell Core. But you should probably be using Test-Connection regardless.
A lot of my scripts use Active Directory to create lists of servers. Unfortunately, AD often contains decommissioned computer objects, which can cause certain queries to time-out
I wrote this quick function so that before running WMI queries against a server, we could do a quick check to see whether it was online.
- Feb 7, 2013
I’ve been doing some work with IBM WebSphere MQ recently. Specifically I’ve been helping to create a (temporary) reporting and monitoring tool which will periodically check channel status and depth of certain queues. While the application has it’s own command-line utility (MQSC) I’ve been trying to work using the WebSphere MQ Windows PowerShell library.
- Oct 17, 2012
One-liner PowerCLI to output a list of machine names and screen resolutions.
- Oct 9, 2012
I was at a training course last week and it was mentioned briefly on one of the slides that PCOIP session statistics were available via WMI. After a quick Google, I found MyVirtualCloud’s page, which details the class, and property names.
The following is a PowerShell function, which pulls this information from WMI, appends the names and descriptions, and returns an object.
- Aug 22, 2012
One of the great things about PowerShell is its ability to easily export objects to HTML, which - with a little CSS - makes it straightforward to create great-looking reports. But static lists of data aren’t enough any more, the people demand interactivity.
- Jul 27, 2011
You’ve probably noticed that when you double-click on a PowerShell script, it is opened for editing rather than being run. This is useful from a security standpoint, and while administrators have no problem opening up the shell and running the script, you’ve probably made something useful that you want to share with users, and users always need a bit more hand-holding.
- Jun 9, 2010
As we are constantly creating, moving, renaming and deleting machines, it’s difficult enough to keep track of machines I have deployed myself; never mind keeping track of what the other team members are doing.
In order to try make it easier to find the owner of a machine, we implemented a custom attribute “Infrastructure Consultant”, which the analyst should complete. Inevitably, despite the best of intentions, this is occasionally missed, and we end up with machine of unknown provenance.
The following script sorts this by finding machines where the custom attribute is empty, then populating it with a best guess, based on the machine’s event log.
- Mar 18, 2010
I haven’t been posting too much here recently I’m afraid. A lot of the things that I’m currently working on are pretty specific to the environment here, and are not particularly useful (or indeed, interesting) to anyone else.
One of the things I’ve been doing might be more generally useful. We needed to convert around 700 of our machines to thin-provisioned format. When migrating to the new environment we’d stuck to traditional “thick” machines, as there was a lot of upheaval, and we didn’t have the necessary monitoring in place. Now that things have settled, we were looking to take advantage of the thin format to save us some space.
- Jan 28, 2010
If, like me, you work with non-persistent virtual machines on Windows domains, you will be familiar with your machines becoming periodically disconnected from the domain. This usually manifests itself in the following error message when you attempt to log on:-
“The trust relationship between this workstation and the primary domain failed.”
- Jan 22, 2010
We’ve had an ongoing problem with “Sequencing” machines for Microsoft Application Virtualisation (formerly SoftGrid). The virtual machine template is correctly set up with a secondary drive set to Q:\ (the drive letter is integral to the sequencing process). However, when the machines are deployed from the template, the Sysprep part of the customization process results in the drive being “reset” to the lowest available - in this case D:. At first, we manually changed these...
- Jan 13, 2010
We’ve started our first “proper” implementation of Linked Clones in our vSphere 4 environment. While we’ve done some limited proof-of-concept work, this is the first project to be entirely deployed using Linked Clones. The objective is to reduce the space used by our training machines on our new environment.
- Oct 28, 2009
We’re currently neck-deep in migration at the moment, but despite the workload, it’s always worth considering what we can do now, that might save us some time and effort later on.
One of the reasons we were moving to vSphere was the ability to thin-provision (TP) our disks, which we’re hoping will allow us to increase the amount of machines that we can provision without needing to allocate more storage (currently 18 TB). I found an article by Duncan Epping over at Yellow Bricks suggesting the use of Sysinternals SDelete utility before the conversion to TP.
- Oct 12, 2009
We can use PowerShell to search through the event logs of a machine object ($virtualMachine in the example below) for events which match a specific pattern - in this case powering off a machine. Once we have the event object, we can access the properties of the first object in the array (the most recent event).
- Oct 2, 2009
This is based on Carter Shanklin’s PowerShell snippets to query VC and ESX build version numbers.
This script loops through the list of vCenter servers, and gets their version and build info, as well as the version and build info for it’s connected hosts.
- Sep 17, 2009
As part of the migration I’m working on, we needed to add a whole bunch of Virtual Port Groups with associated VLANs to the servers. The following script could do this in a few minutes (although Host Profiles would accomplish much the same thing, we’re not running Enterprise).
- Sep 15, 2009
I love it when I have an idea in my head of a script I need to write, and then I run across one that does exactly what I need!
Hugo Peeter’s has written a script to add VMX location as a custom attribute.
- Jul 9, 2009
I’m in the middle of preparing for a migration from VMware Virtual Infrastructure 3 to vSphere 4 just now (hence the lack of any substantial updates on this blog). As part of this process, I was just about to start writing a script to export our customisation specifications, when Arnim van Lieshout’s post appeared in my VMware Planet V12N RSS feed. Export and import customization profiles using Powershell. It failed on a couple of customisations,...
- May 28, 2009
I wrote this today to remove occurrences of the string “Tmpl” anywhere in the name of the template, and then to re-name the template with “Tmpl” as a prefix. It had a higher purpose than keeping everything nice and neat, but it’s rather specific to our environment so I won’t bother going into the details.
- May 15, 2009
Carter Shanklin has used Microsoft Office Document Imaging Library (MODI) to improve Eric Sloof’s script to detect Blue Screens of Death (BSoDs); it now captures the errors and converts them to text. From Eric’s blog: …first it captures a screenshot of a virtual machine. Secondly it uses the Toolkit Extensions to copy it to the local drive. When the PNG image is saved on the local drive, it’s converted to TIFF. The TIFF image will...
- May 13, 2009
I got handed a list of around 1,000 servers today, and asked if any of them were part of our VI environment.
Rather than work through it by hand, I wrote the following script.
- May 6, 2009
One of the nice new features of vSphere 4 is thin provisioning of virtual disks. Thin provisioned (TP) disks will be familiar if you’ve ever used VMware Workstation where they are used by default, (you need to select Allocate all disk space now to create thick disks). Essentially, rather than allocate all disk space at creation, disk space is allocated on the fly, meaning that a 50 GB virtual disk with only 5 GB being...
- May 5, 2009
I’ve further adapted Hugo’s script to add a custom attribute which shows the drive persistence state(s) when the script was run.
- Apr 29, 2009
This is based on Hugo Peeters’ script to add snapshot information to the VI client using PowerShell.
Our users occasionally need larger machines created for packaging big applications. After increasing the size, we used to append the VM Object name (e.g, “PACKVM01 - 10GB”), but this caused a mismatch between the virtual machine object name in VIC and the DNS host name. Also, it looked untidy!
We needed a new way for VIC users to easily see which were the larger machines, so I modified Hugo’s script to add disk size as a custom attribute.
- Apr 28, 2009
We frequently need to create new virtual port groups on our ESX hosts with VLAN tags which correspond to pre-assigned DHCP scopes. I wrote this PowerShell script to create the new VPG across all hosts.
- Mar 24, 2009
As we’re running a development lab, we use a lot of templates for machine deployment and a lot of non-persistent disks to allow machines to be easily restored to a clean-state. We’ve had issues where machines with non-persistent disks were converted to templates. In this case guest customisation will fail.
This script looks at your templates, and outputs a list of those with non-persistent drives.
- Mar 18, 2009
We were working recently to align our guest virtual machine object names (the ones shown in vSphere) with their DNS names. As we have over 800 guests, this would have taken us a while to compile by hand. In order to make the process a little easier, I wrote the following PowerShell script to flag machines where the hostname differs from the object name.