获取命令更改驱动器

获取命令更改驱动器

我编写了一个包含对invoke-sqlcmdcmdlet 进行检查的 powershell 脚本。脚本在 Windows Server 2016 下运行良好。在 2012 R2 上,脚本失败并显示:

Add-Content : Cannot use interface...

尝试创建和写入日志文件时出现错误。

我发现在 Windows Server 2012 R2 上,Get-Command invoke-sqlcmd运行该命令时,它会将我的驱动器更改为PS SQLSERVER:\>而不是PS C:\>。这显然导致我的createupdate日志文件部分失败。

知道为什么Get-Command在检查 SQL cmdlet 时会更改驱动器吗?有什么建议可以将其改回或首先阻止它吗?我知道我可以c:在脚本中抛出一个,但这似乎是一个过于简单的解决方案,可能必须在每次 DB 调用后都这样做。

答案1

我在 StackOverflow 上找到了答案。

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

显然,在 Windows Server 2012 R2 上,使用 sql cmdlet 执行任何操作都会准备在 中运行的环境PS SQLSERVER:\>。按照上述链接中的建议,我用Push-Location和包装了我的 sql cmdlet Pop-Location。这似乎解决了我的问题。

相关内容