[英]PowerShell Invoke-Sqlcmd switches into sqlps session
我在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
sqlps
模块的行为是让你进入它创建的psdrive
。 我相当肯定有人要求微软解决这个问题,因为它非常烦人且具有破坏性。
PowerShell 3.0引入的模块的自动导入使得这更加烦人,因为您可能甚至没有意识到您在事后才导入模块。
当我使用sqlps
,我显式导入它,以便我可以控制我的工作目录,如下所示:
push-location
import-module sqlps -disablenamechecking
pop-location
这会在加载模块后返回到您之前的目录。
很晚编辑:随着SQL Server Management Studio 2016的出现,我们有了一个新的PowerShell模块sqlserver
,它取代了sqlps
并解决了这个问题。
一个简单的cd'你选择的目录'会让你回到你以前的目录。
PS SQLSERVER:\> cd D:
结果:
PS D:\>
SuperUser今天也有类似的问题: https : //superuser.com/questions/767427/stuck-in-powershell-sqlserver
你应该可以回到C:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.