If statement not working, as expected.

Sorry, know just enough to make me dangerous.  Trying to script starting and stopping services on Production and TEST servers, but my IF statement is not working and can't figure out what I'm doing wrong.  When I run it, it lists all four servers.

Thanks for your help.  If there's a better way, I'm open to suggestions.

$hashTable=@{
  "SERVER01"="Service1,service2"
  "SERVERL1"="service2"
  "SERVERT1"="service3"
  "SERVERT2"="service3"
  }

Write-Host 'Select the environment and action:

  1. Start Production Services
  2. Stop Production Services
  3. Start TEST Services
  4. Stop TEST Services
  q. Quit'


While (($Selection = Read-Host -Prompt 'Please select an option') -notin 1,2,3,4,'q') 
{ 
    Write-Warning "$Selection is not a valid option" 
}

Switch ($Selection) {
    1 { $action = "Start-Service" }
    2 { $action = "Stop-Service -Force" }
    3 { $action = "Start-Service" }
    4 { $action = "Stop-Service -Force" }

}

foreach($key in $hashTable.keys)
  {
    $Value = $hashTable[$key]
    $testServer = $Key.Substring($Key.Length - 2,1)
    
    If ($Selection -eq 3 -or 4 -and $testServer -eq "T")
    {
    Write-Host "TEST "
    Write-Host "Get-Service -ComputerName " $key " -Name " $Value " | " $action
        
    } Else
    {
    Write-Host "Production"
    Write-Host "Get-Service -ComputerName " $key " -Name " $Value " | " $action
        
    }

  }