<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PowerShell on Forward or Reverse</title>
    <link>https://blog.wannemacher.us/categories/powershell/</link>
    <description>Recent content in PowerShell on Forward or Reverse</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 04 Jan 2012 15:58:28 +0000</lastBuildDate>
    
	<atom:link href="https://blog.wannemacher.us/categories/powershell/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>PowerCLI Move-Datastore Function</title>
      <link>https://blog.wannemacher.us/posts/p469/</link>
      <pubDate>Wed, 04 Jan 2012 15:58:28 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p469/</guid>
      <description>Moving datastores into folders via drag/drop can be painful. In some cases vCenter does not want to allow a drag from a long list. Here is a quick function to make moving via PowerCLI a little bit easier.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  Function Move-Datastore { param ( [VMware.VimAutomation.ViCore.Impl.V1.DatastoreManagement.VmfsDatastoreImpl[]] $datastore = $(throw &amp;#34;Datastore(s) must be provided.</description>
    </item>
    
    <item>
      <title>Convenience Functions for Connecting to Multiple vCenters</title>
      <link>https://blog.wannemacher.us/posts/p465/</link>
      <pubDate>Tue, 29 Nov 2011 22:22:38 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p465/</guid>
      <description>In a large environment repeatedly connecting and disconnecting from groups of vCenters can be tedious so I created some helper functions and put them in my PowerShell profile.
1 2 3  Connect-VIServerGroup lab Connect-VIServerGroup desktops Disconnect-VIServerGroup lab   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28  Function Connect-VIServerGroup { param ( [String]$group = $(throw &amp;#34;A VI server group name must be specified.</description>
    </item>
    
    <item>
      <title>Single pane for multiple vCenter alarms</title>
      <link>https://blog.wannemacher.us/posts/p457/</link>
      <pubDate>Fri, 11 Nov 2011 00:54:32 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p457/</guid>
      <description>When you have multiple vCenters it can be a pain to go through each one checking for alarms. Hence the script below. You can specify the vCenters you want to connect to and it will display a nice sortable/filterable grid view of all of the triggered alarms.

# Usage .\Get-TriggeredAlarms -vCenters vc001,vc002 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49  param ( [String[]]$vCenters ) Function Get-TriggeredAlarms { param ( $vCenter = $(throw &amp;#34;A vCenter must be specified.</description>
    </item>
    
    <item>
      <title>PowerShell: Alternate script behavior when dot sourced vs run directly</title>
      <link>https://blog.wannemacher.us/posts/p449/</link>
      <pubDate>Thu, 27 Oct 2011 03:02:16 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p449/</guid>
      <description>I use dot sourcing in my PowerShell scripts to reuse functions* and sometimes I want different behavior if they are included (dot sourced) or run directly. This concept is used in Python to provide an easy way to run tests against the code when run directly but not when it is imported.
You are not restricted to running tests using this approach, but I think that automated testing is useful so that is the example I provide below.</description>
    </item>
    
    <item>
      <title>Validate datastore visibility between hosts</title>
      <link>https://blog.wannemacher.us/posts/p445/</link>
      <pubDate>Mon, 17 Oct 2011 13:00:43 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p445/</guid>
      <description>This script will check a set of hosts and report on whether the available datastores match. The first host found becomes the reference host and the others are compared against it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48  param ( [VMware.</description>
    </item>
    
    <item>
      <title>Find LUNs Presented to Multiple Clusters</title>
      <link>https://blog.wannemacher.us/posts/p441/</link>
      <pubDate>Fri, 14 Oct 2011 13:07:52 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p441/</guid>
      <description>After some cluster migrations it appears that not all of the LUN presentations got cleaned up. I needed to find the LUNs that were shared by different clusters so I could determine which one they should belong to and remove access for the other cluster(s). PowerCLI to the rescue.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55  param ( [VMware.</description>
    </item>
    
    <item>
      <title>Validate Username / Password on ESX(i) Host</title>
      <link>https://blog.wannemacher.us/posts/p438/</link>
      <pubDate>Wed, 14 Sep 2011 19:40:09 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p438/</guid>
      <description>A simple script to validate the login credentials against an ESX(i) host. Useful when validating that the credentials are what you think they should be.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58  &amp;lt;# .</description>
    </item>
    
    <item>
      <title>VMware PowerCLI 5 Cmdlets by Noun</title>
      <link>https://blog.wannemacher.us/posts/p434/</link>
      <pubDate>Mon, 12 Sep 2011 13:50:12 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p434/</guid>
      <description>Generated using this post.
&amp;lt;th&amp;gt; Verbs &amp;lt;/th&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Apply,Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy,Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Stop,Wait &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Dismount,Mount,Update,Wait &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Export,Get,Import,Move,New,Remove,Set,Start,Stop &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Connect,Disconnect &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Restart,Set,Start,Stop,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Restart,Shutdown,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Move,Remove,Restart,Set,Start,Stop,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Format,Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Install &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Apply,Export,Get,Import,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Test &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Restart,Set,Start,Stop &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set,Test &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Invoke &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  </description>
    </item>
    
    <item>
      <title>Simple XML output of a data object</title>
      <link>https://blog.wannemacher.us/posts/p430/</link>
      <pubDate>Thu, 02 Jun 2011 21:12:08 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p430/</guid>
      <description>I am doing some data collection using PowerShell and the output needs to be a simple XML document string.
The built in cmdlets do a great job when persisting data, but they produce some fairly complicated XML that provides more detail on object types than I can use.
Here is a single function to take a PSObject based data object and turn it into XML. I have also included a test function to show an example of building the data object.</description>
    </item>
    
    <item>
      <title>PowerShell Asynchronous Job Queueing</title>
      <link>https://blog.wannemacher.us/posts/p412/</link>
      <pubDate>Mon, 28 Feb 2011 18:37:31 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p412/</guid>
      <description>Here is some sample code to have a variable size work queue for asynchronous jobs in PowerShell. The sample code uses Start-Job, but it was written as a skeleton to be able to run multiple PowerCLI tasks at once.
The variable length is beneficial in case the work should be split up, but there is a chance of overwhelming the system if too many concurrent jobs are started at once.</description>
    </item>
    
    <item>
      <title>Basic PowerShell Registry Value Helpers</title>
      <link>https://blog.wannemacher.us/posts/p408/</link>
      <pubDate>Sun, 30 Jan 2011 15:37:03 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p408/</guid>
      <description>Working with registry values in PowerShell can be a little cumbersome, so here are some example helpers that I am using to simplify some of my configuration scripts.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64  Function Get-RegistryValue { param ( $key, $value ) (Get-ItemProperty -Path $key -Name $value).</description>
    </item>
    
    <item>
      <title>Using PowerCLI to Uninstall vCenter Extensions</title>
      <link>https://blog.wannemacher.us/posts/p403/</link>
      <pubDate>Tue, 28 Dec 2010 15:05:37 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p403/</guid>
      <description>After finishing a CapacityIQ evaluation we wanted to uninstall the plug-in from vCenter. VMware KB article 1025360 shows how to do this, but it requires the Managed Object Browser. Per the security hardening guide we disabled the mob so this solution would not work as given. PowerCLI to the rescue.
Here are the steps given in the original article and how they translate into PowerCLI.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  #1.</description>
    </item>
    
    <item>
      <title>VMware PowerCLI 4.1.1 Cmdlets by Noun</title>
      <link>https://blog.wannemacher.us/posts/p400/</link>
      <pubDate>Tue, 21 Dec 2010 18:51:08 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p400/</guid>
      <description>Generated using this post.
&amp;lt;th&amp;gt; Verbs &amp;lt;/th&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Apply,Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy,Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Stop,Wait &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Dismount,Mount,Update,Wait &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Export,Get,Import,New,Remove,Set,Start,Stop &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Connect,Disconnect &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Restart,Set,Start,Stop,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Restart,Shutdown,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Move,Remove,Restart,Set,Start,Stop,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Format,Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Install &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Apply,Export,Get,Import,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Test &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Restart,Set,Start,Stop &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set,Test &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Invoke &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  </description>
    </item>
    
    <item>
      <title>PowerCLI Presentation from Central Ohio VMUG</title>
      <link>https://blog.wannemacher.us/posts/p396/</link>
      <pubDate>Fri, 03 Dec 2010 18:53:28 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p396/</guid>
      <description>Here is an introduction to PowerCli presentation I gave back in July at the Central Ohio VMware User’s Group.</description>
    </item>
    
    <item>
      <title>VMware PowerCLI 4.1 Cmdlets Summarized by Noun</title>
      <link>https://blog.wannemacher.us/posts/p390/</link>
      <pubDate>Fri, 29 Oct 2010 15:27:11 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p390/</guid>
      <description>Here is the list of VMware PowerCLI cmdlets ordered by noun. I find this easier to use when I am trying to write scripts. You can locate what items you want to work with and then see the action you can take. This post contains the code used to generate the list.
&amp;lt;th&amp;gt; Verbs &amp;lt;/th&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Apply,Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy,Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Stop,Wait &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Dismount,Mount,Update &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Export,Get,Import,New,Remove,Set,Start,Stop &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; New,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Connect,Disconnect &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Move,New,Remove,Restart,Set,Start,Stop,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Restart,Shutdown,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Copy &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Move,Remove,Restart,Set,Start,Stop,Suspend &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Add,Get,Remove &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Install &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Apply,Export,Get,Import,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Test &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,New,Remove,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Restart,Set,Start,Stop &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set,Test &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Invoke &amp;lt;/td&amp;gt;  &amp;lt;td&amp;gt; Get,Set &amp;lt;/td&amp;gt;  </description>
    </item>
    
    <item>
      <title>Quick and dirty PowerPath/VE output parser</title>
      <link>https://blog.wannemacher.us/posts/p383/</link>
      <pubDate>Thu, 28 Oct 2010 18:47:15 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p383/</guid>
      <description>Here is a quick and dirty PowerShell script to parse the output of the rpowermt command used to manage PowerPath/VE on ESX (for EMC arrays). I wrote the code quickly to solve a particular problem, but if I get requests I could extend it to parse the rest of the output and do so in a little more robust fashion.
Why do this? I am in the middle of migrations between frames and I needed an easy way to determine what needed moved when the storage admin said move all LUNs from CLARiiON XXXX to the new LUNs on YYYY – and make sure to move LUN 41 to LUN 88.</description>
    </item>
    
    <item>
      <title>VMware PowerShell Get-VIHumanReadablePath</title>
      <link>https://blog.wannemacher.us/posts/p369/</link>
      <pubDate>Wed, 18 Aug 2010 20:44:27 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p369/</guid>
      <description>An example of how to get the human readable path of an object in the VMware SDK. This is using PowerShell and requires that PowerCLI be installed, but should be easily converted to other languages.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33  Function Get-VIHumanReadablePath { param ( $target ) try { if ($target.</description>
    </item>
    
    <item>
      <title>Another Orchestrator/PowerShell hang issue</title>
      <link>https://blog.wannemacher.us/posts/p350/</link>
      <pubDate>Thu, 29 Jul 2010 20:32:24 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p350/</guid>
      <description>It has come to my attention that some times the scripts will still hang after using the trick from a previous post to fix an issue with standard input when running PowerShell in Orchestrator workflows. After further research there appears to be an issue with stderr hanging the scripts in a similar way to stdin. To be safe you should do something with the output from stderr (where error messages are sent).</description>
    </item>
    
    <item>
      <title>Running PowerShell in VMware Orchestrator – updated</title>
      <link>https://blog.wannemacher.us/posts/p346/</link>
      <pubDate>Tue, 27 Jul 2010 14:44:15 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p346/</guid>
      <description>Updated 7/29/2010 – I have added a new follow up post this post regarding another related hanging issue. Please make sure to check it out.
This is a copy of my comment in the VMware Communities, but some times the Google search results for items in this blog show up and the ones for the communities do not.
The original problem is that PowerShell scripts hang when running them in Orchestrator.</description>
    </item>
    
    <item>
      <title>Adding VMware PowerCLI to your standard PowerShell environment</title>
      <link>https://blog.wannemacher.us/posts/p341/</link>
      <pubDate>Wed, 21 Jul 2010 17:50:28 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p341/</guid>
      <description>In order to get access to PowerCLI when using another PowerShell shortcut or environment you can run the following commands which is what happens when you run the VMware provided shortcut.
1 2 3 4 5 6  # Adds the base cmdlets Add-PSSnapin VMware.VimAutomation.Core # Add the following if you want to do things with Update Manager Add-PSSnapin VMware.VumAutomation # This script adds some helper functions and sets the appearance.</description>
    </item>
    
    <item>
      <title>Export and Import Customization Specs Using PowerCLI</title>
      <link>https://blog.wannemacher.us/posts/p322/</link>
      <pubDate>Tue, 22 Jun 2010 20:15:14 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p322/</guid>
      <description>Here are a couple of functions to help you export and import OS customization specs in vCenter. Be aware that if you do this between vCenters or the certificate changes then you will have to set any encrypted passwords to their correct value after the import.
These functions and the standard *-OSCustomizationSpec cmdlets should allow you to replicate your customization specs between multiple vCenters fairly easily.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39  Function Export-OSCustomizationSpec { param ( [string]$specName, [string]$exportFile = &amp;#34;$specname.</description>
    </item>
    
    <item>
      <title>Notify All Active vSphere Users (PowerCLI version)</title>
      <link>https://blog.wannemacher.us/posts/p319/</link>
      <pubDate>Fri, 18 Jun 2010 13:00:56 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p319/</guid>
      <description>Steve Jin recently posted How to Notify All the Active vSphere Users on his DoubleCloud blog. Below are some functions to make this easy to do via PowerCLI.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  Function Get-VIServiceMessage { $sessionManager = Get-View SessionManager $sessionManager.Message } Function Set-VIServiceMessage { param ( [String]$message = $(throw &amp;#34;Must specify a message.&amp;#34;) ) $sessionManager = Get-View SessionManager $sessionManager.</description>
    </item>
    
    <item>
      <title>Summarize PowerCLI Cmdlets by Noun</title>
      <link>https://blog.wannemacher.us/posts/p315/</link>
      <pubDate>Thu, 17 Jun 2010 18:24:07 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p315/</guid>
      <description>Here is some simple code to generate a reference list of the PowerCLI cmdlet objects(nouns) and what actions(verbs) you can perform on them.
This can come in handy for people new to PowerCLI to show them what the cmdlets will handle for them.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  $commandTable = @{} $commandList = Get-Command -Module VMware.VimAutomation.Core -CommandType Cmdlet foreach ($command in $commandList) { if (!</description>
    </item>
    
    <item>
      <title>Bulk password change on ESX hosts</title>
      <link>https://blog.wannemacher.us/posts/p304/</link>
      <pubDate>Sun, 30 May 2010 11:00:47 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p304/</guid>
      <description>Here is an script to make life a little easier when doing bulk updates to a password for an account as long as the account has a common password on the different hosts.
The script has some documentation in it so make sure to use Get-Help to find more detail.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  Get-Help .</description>
    </item>
    
    <item>
      <title>PowerShell advanced parameter behavior unexpected</title>
      <link>https://blog.wannemacher.us/posts/p306/</link>
      <pubDate>Thu, 27 May 2010 18:31:20 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p306/</guid>
      <description>I have been experimenting with parameter values from the pipeline and the processing behavior is slightly different when using piplines vs. parameterized values. It is easy enough to work around, but I wanted to make sure and explain the issue and one workaround.
The standard way of using a pipeline parameter is to do something like this:
param ( [parameter(Mandatory=$true, ValueFromPipeLine=$true)] [String[]]$item ) In cases where you accept input from the pipeline or a single item as an input parameter this works fine.</description>
    </item>
    
    <item>
      <title>List VMs with Non Thick Disks</title>
      <link>https://blog.wannemacher.us/posts/p292/</link>
      <pubDate>Thu, 29 Apr 2010 15:31:51 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p292/</guid>
      <description>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  foreach ($vm in Get-VM) { $badFormat = $false foreach ($hardDisk in (Get-HardDisk -VM $vm)) { if ($hardDisk.StorageFormat -ne &amp;#34;Thick&amp;#34;) { $badFormat = $true } } if ($badFormat) { $vm.Name } }   </description>
    </item>
    
    <item>
      <title>Determine VMs in a SRM recovery plan using PowerShell</title>
      <link>https://blog.wannemacher.us/posts/p289/</link>
      <pubDate>Tue, 23 Mar 2010 17:52:19 +0000</pubDate>
      
      <guid>https://blog.wannemacher.us/posts/p289/</guid>
      <description>Here is some PowerShell code to determine the VMs that are in a VMware Site Recovery Manager recovery plan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72  #requires -version 2 # Description: List the VMs in a SRM recovery plan.</description>
    </item>
    
  </channel>
</rss>