O problema é como você está invocando o novo processo do PowerShell; parece estar executando comandos antes que o prompt do PowerShell esteja pronto, para que eles sejam impressos no console; Eu não tenho certeza porque. De qualquer forma, aqui está a correção.
É assim que o arquivo set-policy.ps1 deve estar:
Start-Process PowerShell -ArgumentList "Set-ExecutionPolicy Restricted -Force" -Verb RunAs
Ou você pode fazer tudo do arquivo em lote em uma linha como esta:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy Restricted -Force' -Verb RunAs}"
Eu forneço um pouco mais de informações sobre como chamar scripts do PowerShell a partir de arquivos em lote e por que você gostaria de fazer isso .