簡體   English   中英

SQL Server 2012 SQLPs 模塊 - 自動更改當前位置?

[英]SQL Server 2012 SQLPs Module - Changing current location automatically?

我有一個大型的現有 powershell 腳本庫,主要是為了在 SQL Server 和文件系統之間運行一些復雜的邏輯和交互。

SQL 交互通常通過 cmdlet Invoke-SQLCmd

最近,我所有服務器上的 SSMS 版本都升級到 2012。這意味着我必須對我的代碼進行一些更改,以刪除對sqlserverprovidersnapin100sqlservercmdletsnapin100引用,因為它們在 2012 年已被棄用,以支持導入SQLPs模塊。

這工作正常,但似乎SQLPs模塊在某個時候將當前位置更改為PS SQLSERVER>而不是<local folder> ,這使我的許多其他命令失敗。 例如,如果我在網絡驅動器上運行Test-Path ,它在<local folder>位置運行良好,但在SQLSERVER位置會失敗。

這是一個已知的問題? 有沒有我可以為此更改的解決方法或設置?

我擔心的主要腳本超過 1000 行,並且在我們進行此更改之前已經運行了兩年多沒有問題,所以如果可以的話,我想避免對其進行逐行測試。

有關 sql 2012 中 WHY 的更多信息,它正在更改為 SQLSERVER: 目錄...

當 powershell 導入 sqlps 模塊時,清單定義了一個名為 SqlPsPostScript.ps1 的后期腳本文件。 此文件(第一行)將當前位置更改為 SQLSERVER:提供程序

在 x64 位框中,模塊位於 - C:\\Program Files (x86)\\Microsoft SQL Server\\110\\Tools\\PowerShell\\Modules\\SQLPS。

在 powershell 3.0 中,自動導入很難判斷何時會發生(以我的經驗)。

不清楚為什么(從邏輯的角度)它應該這樣做。 我們不想接觸 SQL 服務器模塊,所以我猜你需要在導入模塊后做一個明確的設置位置。 您也可以將其視為一種不那么笨拙的解決方案。

Push-Location
Import-Module sqlps
Pop-Location

我通過添加一個cd <local folder>作為腳本的第一行來解決這個問題,以打破提供者。 雖然感覺hackish。

我通過使用我試圖復制的文件的 PSPath 屬性(其中包含 Microsoft.PowerShell.Core\\FileSystem::)而不是默認屬性解決了類似的問題。 希望能幫助到你 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM