Você está vendo esse comportamento porque os blocos try / catch funcionam apenas em erros de finalização ( Referência de tipo de erro do MSDN Powershell )
Você pode manipular a maneira como o Powershell funciona, alterando a $ ErrorActionPreference Variável.
Se você ajustar seu script para ter $ErrorActionPreference = "Stop"
na parte superior, todos os erros serão considerados erros de finalização e o bloco try / catch funcionará.
Se você quiser que a ação de erro seja alterada para um comando, pode usar o parâmetro -ErrorAction
para alterá-lo para esse comando.