foreach($entry in $beingDelJsonFile){
# point 4b
if($entry.serverName -ne "."){
try {
$deletingDate = [datetime]$entry.deletingDate
$daysDifference = (Get-Date) - $deletingDate
if ($daysDifference.Days -gt 0) {
$vm = Get-VM "TBD_$($entry.ServerName.Split(".")[0])*"
If($fase){
#point 4.b.I
Remove-VM -VM $vm -DeletePermanently -Confirm:$false
}
if(($vm).PowerState -eq "PoweredOn"){
Write-Host "VM is powered on. Ensure it is powered off if you intend to proceed!"
}
if(!$vm){
Write-Host "VM $($entry.ServerName) not found. Possibly already deleted."
}
if($entry.ServerName.Split(".")[1] -like $gdomain.Split(".")[0]){
$dc = (Get-ADDomainController -domain $gdomain -discover).Name +"."+ $gdomain
$zoneName = $gdomain
}
# point 4.b.II
$computer = $null
Try {$computer = Get-ADComputer -Identity $entry.ServerName.Split(".")[0] -server $dc -ErrorAction Stop}
Catch {
if($null -eq $computer){
Write-Output "Cannot find an object with identity: $($entry.ServerName.Split(".")[0]) under: $($entry.ServerName.Split(".")[1])"}
}
if($computer){
Remove-ADObject -Identity $computer.ObjectGUID -Server $dc -Credential $Creds -Confirm:$false
}
Invoke-Command -ComputerName $dc -Credential $Creds -ScriptBlock {
#point 4.b.III
$dnsAHost = $null
Try {$dnsAHost = Get-DnsServerResourceRecord -ZoneName $args[1] -RRType "A" -Name $args[0] -ErrorAction Stop}
Catch {Write-Output "Cannot find DNS entry: $($args[0]) under: $($args[1])"}
if($dnsAHost){
$dnsAHost | Remove-DnsServerResourceRecord -ZoneName $args[1] -Confirm:$false -Force
}
} -ArgumentList $entry.ServerName.Split(".")[0], $zoneName
$deleted += $entry
$deleted.Count
}
} catch {
Write-Host "Error parsing date string: $($entry.deletingDate)"
Write-Host $_.Exception.Message
}
}
}