Como você não forneceu seu arquivo bat completo, eu acho que é
Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"
PowerShell -NoExit -Command "Write-Host 'node sp'"
Esta é a abordagem errada. Você está primeiro começando um Powershell que muda para o diretório fornecido e depois fica aberto. Se você sair desse PowerShell, o arquivo bat iniciará o segundo PowerShell.
Você precisa executar um PowerShell e permitir que ele execute os dois comandos. Uma maneira é
Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'; Write-Host 'node sp'"
Outra maneira é escrever um arquivo de script do PowerShell como MyScript.ps1 com este conteúdo:
cd 'c:\Dev\ProductDev'
Write-Host 'node sp'
e inicie o PowerShell não fornecendo o comando para executar, mas o script a ser executado (consulte também isto e this Pergunta StackOverflow). Você pode executar este comando diretamente ou colocá-lo em um arquivo bat, ou até mesmo usá-lo como o comando para executar em um arquivo lnk:
PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1"
Um problema com o PowerShell é que, por padrão, ele não executa scripts que não são assinados (criptograficamente). A maneira fácil de resolver isso é o parâmetro -ExecutionPolicy Bypass
.