Module/Administration/Import-BCSDynamicsNavModules.ps1

<#
.SYNOPSIS
  Import NavAdminTool modules via a BC Server Instance
 
.DESCRIPTION
  Import NavAdminTool modules via a BC Server Instance
 
.PARAMETER serverInstance
  The Business Central Server Instance to import module from
 
.EXAMPLE
  Import-BCSDynamicsNavModules -ServerInstance BC
 
.NOTES
    Author: Mathias Stjernfelt
    Website: http://www.brightcom.se
#>

<#
.SYNOPSIS
 
.DESCRIPTION
 
.EXAMPLE
 
.NOTES
    Author: Mathias Stjernfelt
    Website: http://www.brightcom.se
#>

function Import-BCSDynamicsNavModules {
  Param (
    [Parameter(ValueFromPipelineByPropertyName, Mandatory = $false)]
    [string]$serverInstance,
    [Parameter(ValueFromPipelineByPropertyName, Mandatory = $false)]
    [string]$bcVersion
  )

  begin {}

  process {
    Remove-Module -Name NavAdminTool -Force | Out-Null

    if (-not [string]::IsNullOrEmpty($serverInstance)) {
      $ServicePath = (Get-WmiObject win32_service | Where-Object { $_.Name -eq "MicrosoftDynamicsNavServer`$${serverInstance}" } | Select-Object Name, DisplayName, @{Name = "Path"; Expression = { $_.PathName.split('"')[1] } }).Path
      $modulePath = Get-Item (Join-Path (Split-Path -Path $ServicePath -Parent) 'NavAdminTool.ps1')
      Import-Module $modulePath | Out-Null
      return;
    }

    if (-not [string]::IsNullOrEmpty($bcVersion)) {
      $modulePath = Get-Item "C:\Program Files\Microsoft Dynamics 365 Business Central\$bcVersion\Service\NavAdminTool.ps1"
      Import-Module $modulePath | Out-Null
    }
  }

  end {
  }
}

Export-ModuleMember -Function Import-BCSDynamicsNavModules