This commit is contained in:
Zack Meier
2026-04-15 15:45:50 -05:00
commit 1d304511b8
613 changed files with 140998 additions and 0 deletions
@@ -0,0 +1,59 @@
<#
.SYNOPSIS
Move Virtual Machines to the correct folder based on the AppName tag
.DESCRIPTION
Move Virtual Machines to the correct folder based on the AppName tag
.NOTES
.LINK
.EXAMPLE
Move-ITDVMwareVMToAppNameFolder -VMName itdservername.nd.gov
#>
function Move-ITDVMwareVMToAppNameFolder {
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
[string[]]
$VMName
)
begin {
}
process {
Write-Verbose -Message "Gathering Virtual Machine information"
$VMs = Get-VM -Name $VMName | Select-Object Name, PowerState, Folder, @{n = 'VIServer'; e = { $_.Uid.split('@')[1].split(':')[0] } }, @{n = 'AppName'; e = { (Get-TagAssignment -Category AppName -Entity $_).Tag.Name } }, @{n = 'Datacenter'; e = { ($_ | Get-Datacenter).Name } } | Sort-Object Name
ForEach ($VM in $VMs) {
Write-Verbose -Message ("Start " + $VM.Name)
$NewFolder = $null
$Owner = $VM.AppName.split('-')[0]
Write-Verbose ($VM.Name + ": current folder is " + $VM.Folder.Name)
Write-Verbose ($VM.Name + ": current appname is " + $VM.AppName)
If ($VM.Folder.Name -ne $VM.AppName) {
If ($VM.AppName) {
Write-Verbose ($VM.Name + ": Folder and AppName are different!!! moving VM to folder " + $VM.AppName)
If (!(Get-Datacenter $VM.Datacenter | Get-Folder -Name $VM.AppName -Server $VM.VIServer -ErrorAction SilentlyContinue)) {
New-Folder -Name $VM.AppName -Location (Get-Datacenter $VM.Datacenter | Get-Folder -Type VM -Name $Owner -Server $VM.VIServer)
}
$NewFolder = Get-Datacenter $VM.Datacenter | Get-Folder $VM.AppName -Server $VM.VIServer
Move-VM -VM $VM.Name -InventoryLocation $NewFolder -Destination (Get-VM $VM.Name -Server $VM.VIServer).VMHost
}
Else {
}
}
}
}
end {
}
}