Você pode validar toda a entrada em uma única etapa com o seguinte script. Eu modifiquei isso de uma resposta do TechNet.
While(1){
Try{
$UserDate = [DateTime](Read-Host 'Enter date (MM/DD/YYYY)')
Break
}
Catch{
Write-Host 'Not a valid date. Enter MM/DD/YYYY' -ForegroundColor Red
}
}
$UserMonth = $UserDate.ToString('MM')
$UserDay = $UserDate.ToString('dd')
$UserYear = $UserDate.ToString('yyyy')