簡體   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