我有一个执行Invoke-Sqlcmd的powershell脚本,当脚本完成时,它会让我进入' SQLSERVER:>'。
有没有办法告诉我的脚本在完成时将我还原到原始目录?
答案 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
}
这在测试期间特别好,因为即使您抛出异常或停止调试器,您的原始路径仍然会恢复。