$VMHostNames = @"
itdbisvm-gen05.nd.gov
"@
$VMHostNames = ConvertTo-Array -MultiLineString $VMHostNames

# set maintenance and disable alarms
Get-VMHost -Name $VMHostNames | Set-VMHost -State "Maintenance" -RunAsync
ForEach ($VMHostName in $VMHostNames) {
    $GetVMHost = Get-VMHost -Name $VMHostname
    $VIServer = $GetVMHost.Uid.Split('@')[1].Split(':')[0]
    $alarmMgr = Get-View AlarmManager -Server $VIServer
    $alarmEnabled = $GetVMHost.ExtensionData.AlarmActionsEnabled
    if ($alarmEnabled -eq $true) {
        $alarmMgr.EnableAlarmActions($GetVMHost.ExtensionData.MoRef, $false)
    }
}

#Create Management Switch And Move Adapter
ForEach ($VMHostName in $VMHostNames) {
    $vmnic0 = Get-VMHostNetworkAdapter -VMHost $VMHostName -Name "vmnic0"
    $vmk0 = Get-VMHost $VMHostName | Get-VMHostNetworkAdapter -Name vmk0
    New-VirtualSwitch -VMHost $VMHostName -Name "sSwitch-MGMT"
    Get-VirtualSwitch -VMHost $VMHostName -Name "sSwitch-MGMT" | New-VirtualPortGroup -Name "sPG-MGMT"
    $MGMTPG = Get-VirtualSwitch -VMHost $VMHostName -Name "sSwitch-MGMT" | Get-VirtualPortGroup -Name "sPG-MGMT"
    $MGMTSwitch = Get-VirtualSwitch -VMHost $VMHostName -Name "sSwitch-MGMT"
    Add-VirtualSwitchPhysicalNetworkAdapter -VMHostPhysicalNic $vmnic0 -VirtualSwitch $MGMTSwitch -Confirm:$false
    Add-VirtualSwitchPhysicalNetworkAdapter -VMHostPhysicalNic $vmnic0 -VirtualSwitch $MGMTSwitch -VirtualNicPortgroup $MGMTPG -VMHostVirtualNic $vmk0 -Confirm:$false
}

# remove vmk1 and vmk2
ForEach ($VMHostName in $VMHostNames) {
    Get-VMHost -Name $VMHostName | Get-VMHostNetworkAdapter -Name vmk1, vmk2 | Remove-VMHostNetworkAdapter -Confirm:$false
}

# remove distributed switches
$BackupVDSwitch = Get-VDSwitch -Name 'dvSwitch-SDC-Backup'
$DataVDSwitch = Get-VDSwitch -Name 'dvSwitch-SDC-Data-Server'
$vMotionVDSwitch = Get-VDSwitch -Name 'dvSwitch-SDC-VMotion'
$MgmtVDSwitch = Get-VDSwitch -Name 'dvSwitch-SDC-MGMT'
ForEach ($VMHostName in $VMHostNames) {
    Remove-VDSwitchVMHost -VDSwitch $BackupVDSwitch -VMHost $VMHostName -Confirm:$false
    Remove-VDSwitchVMHost -VDSwitch $DataVDSwitch -VMHost $VMHostName -Confirm:$false
    Remove-VDSwitchVMHost -VDSwitch $vMotionVDSwitch -VMHost $VMHostName -Confirm:$false
    Remove-VDSwitchVMHost -VDSwitch $MgmtVDSwitch -VMHost $VMHostName -Confirm:$false
}
# remove from inventory
ForEach ($VMHostName in $VMHostNames) {
    Get-VMHost -Name $VMHostName | Remove-VMHost -Confirm:$false
}

# scrub DNS
# scrub Passwordstate
# scrub Active Directory

# send storage team request to remove SAN
# send cohesity team request to remove host mappings for backup vmkernels