Поскольку вы не предоставили свой полный файл bat, я думаю, что это
Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"
PowerShell -NoExit -Command "Write-Host 'node sp'"
Это неправильный подход. Сначала вы запускаете Powershell, который переходит в данный каталог, а затем остается открытым. Если вы выйдете из этого PowerShell, файл bat запустит второй PowerShell.
Вам нужно запустить один PowerShell и позволить ему выполнять обе команды. Одним из способов является
Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'; Write-Host 'node sp'"
Другой способ - написать файл сценария PowerShell, такой как MyScript.ps1, со следующим содержимым:
cd 'c:\Dev\ProductDev'
Write-Host 'node sp'
и запустите PowerShell не давая ему команду на выполнение, а на сценарий для выполнения (см. также этот и этот вопрос StackOverflow). Вы можете либо запустить эту команду напрямую, либо поместить ее в файл bat, либо даже использовать ее в качестве команды для выполнения в файле lnk:
PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1"
Проблема с PowerShell заключается в том, что по умолчанию он не запускает сценарии, которые не (криптографически) подписаны. Самый простой способ решить эту проблему - параметр -ExecutionPolicy Bypass
.