2011年4月3日

安裝教學:SQL Server Powershell Extensions (SQLPSX) v2.3.2.1

先前「使用 Windows PowerShell 將資料匯出成 .html 檔案(含安裝 SQLPSX 模組教學)」一文說明使用 CodePlex 的 SQL Server Powershell Extensions(簡稱 SQLPSX)專案,可以將資料匯出成 HTML 格式。結果在發文之後的幾天(2010 年 11 月 6 日),SQLPSX 又出新版:2.3 版,安裝檔的名稱從 SQLPSX_Install_32.exe、SQLPSX_Install_64.exe,改成 SQLPSX.msi。這麼一改,安裝時,就無須注意作業系統版本是 32 還是 64 位元,真是太方便了。

沒想到,一個多月之後(2010 年 12 月 11 日),發行了 2.3.1 版;2011 年 3 月 13 日,再推出 2.3.2.1 版,開始支援存取查詢 MySQL 資料庫。上述幾個版本之差異如下所列:

2.3 版 2.3.1 版 2.3.2.1 版
10 個模組
(開始支援「以原則為基礎的管理」,亦即  PBM)
12 個模組
(多了模組:PerfCounter、SQLProfiler(此模組僅能用於 x86 的環境中)
13 個模組
(多了模組:MySQLLib,這表示 SQLPSX 也支援 MySQL)
137 個函式 155 個函式 163 個函式、2 個 cmdlet、7 個腳本

前置作業

安裝 SQLPSX v2.3.2.1 的方式很簡單,但在安裝之前,您的電腦必須已經安裝下列元件並做好設定:

安裝 SQLPSX 模組

  1. 在下載的 SQLPSX.msi 檔案上,連按兩下滑鼠左鍵 。
  2. 此時會出現 SQLPSX 安裝精靈,按下「Next」按鈕。
    SQLPSX 安裝精靈
  3. 勾選「I accept the terms in the License Agreement」,然後按下「Next」按鈕。
    接受授權同意書
  4. 按下「Next」按鈕。
    一般來說,是不需要修改安裝的路徑,除非您希望所有使用者皆可使用,此時就請考慮安裝到所有人皆有權限可存取的目錄,同時記得替環境變數 PSModulePath 加上剛修改的自訂路徑
    指定安裝目錄
  5. 按下「Install」按鈕。
    開始安裝
  6. 當出現「使用者帳戶控制」對話視窗,請按下「是」按鈕,並稍待片刻。
    使用者帳戶控制
  7. 按下「Finish」按鈕。
    安裝完成

啟用 SQLPSX 模組

於安裝 SQLPSX 完畢之後,當您開啟 Windows PowerShell 時,並不會自動載入 SQLPSX 模組,需自行載入相關的模組才行,例如要查詢電腦名稱 ALEX-PC 上,預設的 SQL Server 執行個體(亦即執行個體名稱為 MSSQLServer)之相關  SMO  資訊,就要先載入名稱為 SQLServer 的模組,並呼叫  Get-SqlServer 函式

Import-Module SQLServer
Get-SqlServer "ALEX-PC"

▼ 載入特定模組,並執行某個函式
載入特定模組,並執行某個函式

個別載入 SQLPSX 模組的指令如下:

Import-Module SQLServer
Import-Module adoLib
Import-Module Agent
Import-Module PerfCounters
Import-Module Repl
Import-Module ShowMbrs
Import-Module SQLIse
Import-Module SQLMaint
Import-Module SQLParser
Import-Module SQLProfiler
Import-Module SSIS
Import-Module OracleClient
Import-Module OracleIse

您當然可以實際所需,僅載入會使用到的模組。不過這樣的操作方式,還不是挺方便的,因為要輸入多次的載入指令。用下面這個指令,就可一次載入數個 SQLPSX 模組:

Import-Module SQLPSX

▼ 一次載入數個 SQLPSX 模組
一次載入數個 SQLPSX 模組

然而這樣子,有 2 個模組(PerfCountersSQLProfiler)並沒被載入。原因在於原作者忘了修改位於 %UserProfile%\Documents\WindowsPowerShell\Modules\SQLPSX (該路徑為 Windows Vista 之後的作業系統,如上面安裝步驟 4. 中所顯示的路徑。若您的作業系統為 Vista 之前,請自行將 Documents 調整成 My Documents 或實際的路徑名稱)目錄中的 SQLPSX.psm1,所以請使用您熟悉的文字編輯器開啟該檔案,找到 $PSXloadModules += 該行,然後於該行的後面,加入如下的文字:

,"PerfCounters","SQLProfiler"

▼ 修改 SQLPSX.psm1 設定
修改 SQLPSX.psm1 設定

如何知道有哪些模組可供載入?

這個問題跟 SQLPSX 沒什麼關係,使用下面的指令會顯示 Windows PowerShell 有哪些模組可供載入:
Get-Module -ListAvailable

可以一開啟 Windows PowerShell 就載入 SQLPSX 相關的模組嗎?

難道沒有辦法類似 DOS  時代,使用批次檔 Autoexec.bat 事先載入相關模組嗎?答案是肯定的,請依照下列步驟進行操作:

  1. 開啟 Windows PowerShell,輸入下面的指令,以便建立目前這個使用者的 Windows PowerShell 設定檔:
    notepad $Profile
  2. 此時會開啟記事本,並出現找不到檔案的提示訊息,按下「是」按鈕,開始編輯設定檔。請將下面的內容複製下來,然後貼到記事本,接著存檔(下面的路徑適用於 Windows Vista 之後的作業系統,若您的作業系統為 Vista 之前,請自行將 Documents 調整成 My Documents 或實際的位置與名稱):
    Import-Module $Home\Documents\WindowsPowerShell\Modules\SQLPSX\SQLPSX.psm1

    ▼ 找不到檔案的提示訊息
     找不到檔案的提示訊息
    請注意:
    $Home
    變數是指目前使用者的主目錄,此步驟就是在目前使用者的主目錄下的 Documents\WindowsPowerShell 目錄,建立 Microsoft.PowerShell_profile.ps1 檔。
  3. 關閉 Windows PowerShell,然後再開啟它,此時應該會看到如下的畫面,即表示成功自動載入 SQLPSX 模組了。開懷大笑

    ▼ 成功自動載入 SQLPSX 模組
    成功自動載入 SQLPSX 模組
    請注意:
    SQLProfiler 模組僅能執行於 PowerShell x86 中,原因請看圖:

Windows PowerShell 還有個整合式指令碼環境(簡稱  ISE)是一個以 GUI 為介面的應用程式,可讓我們在一個整合式的環境中撰寫、執行和測試指令碼與模組。所以他具有語法標色、TAB 自動完成、視覺化偵錯、Unicode 相容性、即時線上說明等,提供豐富的指令碼撰寫體驗。欲一開啟 ISE 中,也能自動載入 SQLPSX 模組,也需要按照上述的操作步驟進行設定,此時所編輯的設定檔名為:Microsoft.PowerShellISE_profile.ps1,而不是 Microsoft.PowerShell_profile.ps1。

沒有留言:

張貼留言