sca*_*r80 21 sql powershell invoke
我在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
Run Code Online (Sandbox Code Playgroud)
这不起作用:
Push-Location
Invoke-Sqlcmd -ServerInstance $server -Database master -Username $user -Password $password -InputFile $file `
-ErrorAction Stop -OutputSqlErrors $true -Variable $variable
Pop-Location
Run Code Online (Sandbox Code Playgroud)
alr*_*roc 37
该sqlps
模块的行为是让您进入psdrive
它创建的.我相当肯定有人要求微软解决这个问题,因为它非常烦人且具有破坏性.
PowerShell 3.0引入的模块的自动导入使得这更加烦人,因为您可能甚至没有意识到您在事后才导入模块.
当我使用时sqlps
,我显式导入它,以便我可以控制我的工作目录,如下所示:
push-location
import-module sqlps -disablenamechecking
pop-location
Run Code Online (Sandbox Code Playgroud)
这会在加载模块后返回到您之前的目录.
编辑很晚:随着SQL Server Management Studio 2016的出现,我们有了一个新的PowerShell模块sqlserver
,它取代sqlps
并解决了这个问题.