update
This commit is contained in:
+59
@@ -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 {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user