我编写了一个包含对invoke-sqlcmd
cmdlet 进行检查的 powershell 脚本。脚本在 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 cmdlet 时会更改驱动器吗?有什么建议可以将其改回或首先阻止它吗?我知道我可以c:
在脚本中抛出一个,但这似乎是一个过于简单的解决方案,可能必须在每次 DB 调用后都这样做。
答案1
我在 StackOverflow 上找到了答案。
显然,在 Windows Server 2012 R2 上,使用 sql cmdlet 执行任何操作都会准备在 中运行的环境PS SQLSERVER:\>
。按照上述链接中的建议,我用Push-Location
和包装了我的 sql cmdlet Pop-Location
。这似乎解决了我的问题。