If you want to have a template that delivers some basic functionality just use this as and modify it to your needs.
It needs to have an input but also accepts input from a pipeline (like get-content input.txt | script.ps1).
It offers basic error handling for terminating errors. The variable $ErrorActionPreference = stop makes them all terminating though 🙂
Have fun and let me know if you need any advice.
<#
.SYNOPSIS
Check if VM(s) still exist
.EXAMPLE
get-content "list-of-machines.txt" | check if vm exists.ps1
.EXAMPLE
check if vm exists.ps1 vm1
.EXAMPLE
check if vm exists.ps1 vm1, vm2, vm3
.PARAMETER VM
One or more Virtual Machine names
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$True,ValueFromPipeline=$True)]
[string[]]$VM
)
BEGIN {
$ErrorActionPreference = "Stop"
$collection = @()
}
PROCESS {
try {
$collection += get-vm $desktop
write-output "$desktop does exist!"
}
catch {
$collection += "$desktop does not exist!"
}
finally {}
}
END {
$collection | out-gridview
}
