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