what I want is for the VMs to be paused before the shutdown script runs.
Você não pode escolher quando o script de desligamento é executado com esse tipo de granularidade. Mas você pode pausar as VMs de dentro do seu script, com um comando como Get-VM | Suspend-VM
, antes que o script faça o que for necessário para que as VMs sejam pausadas primeiro.
Basta girar e esperar que todas as suas VMs não estejam mais em execução antes de continuar ...
While ((Get-VM).State -Contains 'Running') { }