[PowerShell] 利用 PowerShell 匯出 Dynamics NAV Application.

Microsoft Dynamics NAV 系統,預設可以從 Development environment 畫面中,By Manu 手動將 Application 也就是你的程式匯出。
位置在 File > Export 並可以選擇要匯出成 .fob 或 .txt 的格式。

不過其實 NAV 可以利用 PowerShell 來做到自動匯出 Application Object 的功能。
作法其實很簡單,主要使用 NAV 所提供的 Export-NAVApplicationObject 指令來達成。

Step 1.

先載入指令 Export-NAVApplicationObject 對應的 Model,
這邊用到的是 Microsoft.Dynamics.Nav.Model.Tools

Import-Module 'C:\Program Files (x86)\Microsoft Dynamics NAV\90\RoleTailored Client\NavModelTools.ps1' | out-null

Step 2.

設定 NavIde 的 Path,讓他指到 NAV 的 finsql.exe
這段感覺像是 NAV 本身的問題。
但如果不做這段的話,PowerShell 執行指令時,會報出 $NavIde was not correctly set. 的錯誤訊息。
. 'C:\Program Files (x86)\Microsoft Dynamics NAV\90\RoleTailored Client\NavModelTools.ps1' -NavIde 
'C:\Program Files (x86)\Microsoft Dynamics NAV\90\RoleTailored Client\finsql.exe' | out-null

Step 3.

這時候就可以快快樂樂來執行 NAV 所提供的 PowerShell 的指令拉。

#Export NAV App
Export-NAVApplicationObject bak_filename.txt -DatabaseName MyDB -ExportTxtSkipUnlicensed -Force -Verbose

指令的參考參數如下:


Export-NAVApplicationObject
      [-DatabaseName] 
      [-Path] 
      [-DatabaseServer]
      [-LogPath]
      [-Filter]
      [-Force]
      [-ExportTxtSkipUnlicensed]
      [-ExportToNewSyntax]
      [-WhatIf]
      [-Confirm]

需注意的是這邊有一個參數 [-ExportTxtSkipUnlicensed]
主要是讓你匯出 App 時,自動幫你 Skip 掉那些沒有權限匯出的 App。

因為前面有提到 NAV 可以匯出兩種類型的檔案 .fob & .txt,(.fob 是編譯過的,.txt 是未編譯過的)
但是如果要匯出 .txt 必須要有相對應的 Licensed 才能匯出。

留言

這個網誌中的熱門文章

[SQL Server] 強制 SQL Server DB 跳出 (Restoring…) 狀態