繁体   English   中英

PowerShell Invoke-Sqlcmd切换到sqlps会话

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM