Назад | Перейти на главную страницу

Get-Command Смена диска

Я написал сценарий PowerShell, который включает проверку наличия invoke-sqlcmd командлет. Сценарий отлично работает под Windows Server 2016. В 2012 R2 сценарий не работает:

Add-Content : Cannot use interface...

ошибки при попытке создать и записать в файл журнала.

Я обнаружил, что в Windows Server 2012 R2, когда Get-Command invoke-sqlcmd команда запущена, она меняет мой диск на PS SQLSERVER:\> вместо того PS C:\>. По-видимому, это вызывает у меня create и update разделы файла журнала для сбоя.

Любая идея, почему Get-Command изменили бы диск при проверке командлета SQL, и предложения по его обратному изменению или предотвращению в первую очередь? Я знаю, что могу бросить c: в сценарии, но это кажется слишком простым решением и, возможно, придется делать это после каждого вызова БД.

Я нашел ответ на StackOverflow.

https://stackoverflow.com/questions/27273440/why-working-directory-is-changing-when-executing-invoke-sqlcmd

По-видимому, в Windows Server 2012 R2 выполнение любых действий с помощью командлета sql подготавливает среду к запуску в PS SQLSERVER:\>. Следуя предложению в приведенной выше ссылке, я обернул свои командлеты sql с помощью Push-Location и Pop-Location. Кажется, это решило мою проблему.