PowerShell: Objektimportfunktionen

4. Dezember 2014 16:51

Mit diesen Powershell-Funktionen können ab NAV 2013 Objekte mittels des Kommandozeilenbefehl ImportObjects importiert werden. Ab NAV 2015 wird dafür auch ein Cmdlet Import-NAVApplicationObject geliefert, das derzeit aber auch nur für NAV 2015-Datenbanken genutzt werden kann.

Die ersten drei Parameter sind die gleichen wir bei der Compilerfunktion, dann kommen hier die Importdatei und die Importaction (default,overwrite,skip) dazu.

ImportObjectsParameter.png

Für NAV 2013
Code:
function ImportObjectsNAV70
{
 [CmdletBinding()]param (
 [String]$WorkingFolder,
 [String]$Server,
 [String]$Database,
 [String]$ImportFile,
 [String]$ImportAction   
)

 $ImportFile = $ImportFile.Trim("""")

 $LogFile = "$WorkingFolder\$Server\$Database\navcommandresult.txt"
 if (Test-Path "$LogFile\navcommandresult.txt") {Remove-Item "$LogFile\navcommandresult.txt"}
 if ($ObjectFile -ne "")
  {
   $NAVFolder = 'C:\Program Files (x86)\Microsoft Dynamics NAV\70\RoleTailored Client'
   $importfinsqlcommand = """$NAVFolder\finsql.exe"" command=importobjects, file=$ImportFile, servername=$Server, database=$Database,importAction=$ImportAction,logfile=$LogFile"
   $Command = $importfinsqlcommand
   Write-Debug $Command
   cmd /c $Command
  }
}

Für NAV 2013 R2
Code:
function ImportObjectsNAV71
{
 [CmdletBinding()]param (
 [String]$WorkingFolder,
 [String]$Server,
 [String]$Database,
 [String]$ImportFile,
 [String]$ImportAction   
)

 $ImportFile = $ImportFile.Trim("""")

 $LogFile = "$WorkingFolder\$Server\$Database\navcommandresult.txt"
 if (Test-Path "$LogFile\navcommandresult.txt") {Remove-Item "$LogFile\navcommandresult.txt"}
 if ($ObjectFile -ne "")
  {
   $NAVFolder = 'C:\Program Files (x86)\Microsoft Dynamics NAV\71\RoleTailored Client'
   $importfinsqlcommand = """$NAVFolder\finsql.exe"" command=importobjects, file=$ImportFile, servername=$Server, database=$Database,importAction=$ImportAction,logfile=$LogFile"
   $Command = $importfinsqlcommand
   Write-Debug $Command
   cmd /c $Command
  }
}


Für NAV 2015, hier kommt noch wie üblich synchronizeschemachanges (Yes/No/Force) als zusätzlicher Parameter dazu.
Code:
function ImportObjectsNAV80
{
 [CmdletBinding()]param (
 [String]$WorkingFolder,
 [String]$Server,
 [String]$Database,
 [String]$ImportFile,
 [String]$ImportAction,   
 [String]$Synchronize
 )

 $ImportFile = $ImportFile.Trim("""")

 $LogFile = "$WorkingFolder\$Server\$Database\navcommandresult.txt"
 if (Test-Path "$LogFile\navcommandresult.txt") {Remove-Item "$LogFile\navcommandresult.txt"}
 if ($ObjectFile -ne "")
  {
   $NAVFolder = 'C:\Program Files (x86)\Microsoft Dynamics NAV\80\RoleTailored Client'
   $importfinsqlcommand = """$NAVFolder\finsql.exe"" command=importobjects,file=$ImportFile,servername=$Server,database=$Database,importAction=$ImportAction,synchronizeschemachanges=$Synchronize,logfile=$LogFile"
   $Command = $importfinsqlcommand
   Write-Debug $Command
   cmd /c $Command
  }
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.