我正在 PowerShell ISE 中编写脚本,并使用 Invoke-Sqlcmd。
执行命令后,Powershell 会话切换到 sqlps 会话(PS SQLSERVER:>),我无法第二次执行脚本。我必须退出 PowerShell ISE 并重新启动它。
所以我的问题是:如何从 sqlps 切换回常规 ps 或如何防止 Invoke-Sqlcmd 切换会话。
Invoke-Sqlcmd -ServerInstance $server -Database master -Username $user -Password $password -InputFile $file `
-ErrorAction Stop -OutputSqlErrors $true -Variable $variable
这不起作用:
Push-Location
Invoke-Sqlcmd -ServerInstance $server -Database master -Username $user -Password $password -InputFile $file `
-ErrorAction Stop -OutputSqlErrors $true -Variable $variable
Pop-Location
The sqlps
模块的行为是让你留在psdrive
它创造的。我相当肯定人们已经要求微软解决这个问题,因为它非常烦人且具有破坏性。
PowerShell 3.0 引入的自动导入模块使这变得更加烦人,因为您甚至可能直到事后才意识到自己正在导入模块。
当我使用sqlps
,我明确导入它,以便我可以控制我的工作目录,如下所示:
push-location
import-module sqlps -disablenamechecking
pop-location
加载模块后,这将返回到之前的目录。
非常晚的编辑:随着 SQL Server Management Studio 2016 的出现,我们有了一个新的 PowerShell 模块,sqlserver
,它取代了sqlps
并解决了这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)