PowerShell脚本在SQLSERVER中结束:\>

时间:2014-07-29 18:34:25

标签: powershell

我有一个执行Invoke-Sqlcmd的powershell脚本,当脚本完成时,它会让我进入' SQLSERVER:>'。

有没有办法告诉我的脚本在完成时将我还原到原始目录?

3 个答案:

答案 0 :(得分:1)

规范方法是:

try {
    $private:oldLocation = (Get-Location)

    # Do Stuff

}
finally {
    Set-Location $private:oldLocation
}

答案 1 :(得分:1)

Import-Module SQLPS -DisableNameChecking | Out-Null
Push-Location "SQLSERVER:\sql\$Server\DEFAULT\databases\$database" | Out-Null        

Invoke-Sqlcmd -Query $query
#More Work

pop-location

或者,您可以将要运行查询/操作的数据库的位置推送到位置堆栈。做工作。然后在完成后将位置从位置堆栈中弹出。

$ Server:作为托管数据库的服务器 $ database:数据库服务器中的数据库名称

不需要Out-Null。它只是阻止输出被泵入管道

答案 2 :(得分:0)

我首选的方法是:

try {
    Push-Location
    Import-Module SQLPS

    # More code
} finally {
    Pop-Location
}

这在测试期间特别好,因为即使您抛出异常或停止调试器,您的原始路径仍然会恢复。