首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2012 SQLPs模块-自动更改当前位置?

Server 2012 SQLPs模块-自动更改当前位置?
EN

Stack Overflow用户
提问于 2012-10-16 13:00:23
回答 3查看 6K关注 0票数 15

我有一个大型的现有powershell脚本库,主要用于运行一些复杂的逻辑和Server与文件系统之间的交互。

SQL交互通常通过cmdlet Invoke-SQLCmd执行。

最近,我所有服务器上的SSMS版本都升级到了2012年。这意味着我必须对我的代码做一些修改,以删除对sqlserverprovidersnapin100sqlservercmdletsnapin100的引用,因为这些引用在2012年被取消,以支持导入SQLPs模块。

这是可行的,但SQLPs模块似乎在某个时候将当前位置更改为PS SQLSERVER>而不是<local folder>,这使得我的许多其他命令都失败了。例如,如果我在网络驱动器上运行Test-Path,它在<local folder>位置运行良好,但从SQLSERVER位置运行将失败。

,这是一个已知的问题吗?有什么解决办法或设置可以更改吗?

我所担心的主要脚本是1000多行,在我们做出这个更改之前,它已经运行了两年多了,所以如果可以的话,我想避免逐行测试它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-16 14:30:27

我通过添加一个cd <local folder>作为脚本的第一行来解决这个问题。不过感觉有点无趣。

票数 8
EN

Stack Overflow用户

发布于 2013-01-08 00:55:59

关于为什么在sql 2012中它改变为SQLSERVER:目录的更多信息.

当powershell导入sqlps模块时,清单定义了一个名为SqlPsPostScript.ps1的post文件。此文件(第一行)将当前位置更改为SQLSERVER: provider

在x64位框中,模块位于-C:\程序文件(x86)\Microsoft \110\Tools\PowerShell\Modules\SQLPS。

在powershell 3.0中,自动导入会使人很难判断何时会发生这种情况(根据我的经验)。

它不清楚为什么(从逻辑的角度)它应该这样做。我们不想接触SQL服务器模块,所以我想您需要在导入模块之后执行一个显式的设置位置。您也可以把这看作是一个稍微不那么烦琐的解决方案。

代码语言:javascript
复制
Push-Location
Import-Module sqlps
Pop-Location
票数 26
EN

Stack Overflow用户

发布于 2019-12-16 10:46:14

通过使用我试图复制的文件的PSPath属性(包含Microsoft.PowerShell.Core\FileSystem::)来解决类似的问题,而不是使用默认属性。希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12915299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档