Private/NavUtil.ps1
function Set-NAVParameters( [string]$Tenant, [string]$Server, [int]$SOAPPort, [string]$AuthenticationMode, [bool]$SSL, [int]$ClientPort, [string]$InstanceName, [string]$Domain, [string]$Login, [string]$Password) { if ($Server -eq "") { $Server = $Env:COMPUTERNAME } if ($SOAPPort -eq 0) { $SOAPPort = 7047 } if ($AuthenticationMode -eq "") { $AuthenticationMode = "Negotiate" if ($Domain -eq "") { $Domain = $Env:COMPUTERNAME } } if ($ClientPort -eq 0) { $ClientPort = -1; } $configuration = @{ Uid = [System.Guid]::NewGuid(); Version = 0; Server = $Server; Port = $SOAPPort; Digest = $false; AuthenticationMode = $AuthenticationMode; SSL = $SSL; ClientPort = $ClientPort; InstanceName = $InstanceName; ServiceDomain = $Domain; ServiceLogin = $Login; UnencryptedServicePassword = $Password; SenderBatchSize = 50; SynchronizerTimerStep = 3000; MapOperationsOnIgnoredResourcesPS = $true; MapReservationsPS = $true; KeepAlive = $true; RetryInitRatio = 5; TenantName = ""; WebServerName = ""; WebSitePort = 8080; MigratedV5 = $false; LastModificationDate = [System.DateTime]::UtcNow; } $data = $configuration | ConvertTo-Json $storePath = Get-NavPathFromTenant $Tenant if (!(Test-Path $storePath)) { md $storePath } $storePath = $storePath + "NAV.json" [System.IO.File]::WriteAllText($storePath, $data) Write-Verbose "NAV configuration stored in $storePath" } function Set-NAVParametersOld($Tenant, $Domain, $Login, $Password) { $mod = (Get-ChildItem -Path "$env:ProgramFiles\Microsoft Dynamics NAV" -Filter '*.psm1' -Recurse).FullName Import-Module $mod $xmlConfig = Get-NAVServerInstance | Where-Object Default | Get-NAVServerConfiguration -AsXml $values = $xmlConfig.configuration.appSettings.add $ServerInstance = ($values | Where-Object key -eq 'ServerInstance').value $SOAPServicesPort = ($values | Where-Object key -eq 'SOAPServicesPort').value $ClientServicesPort = ($values | Where-Object key -eq 'ClientServicesPort').value $DatabaseServer = ($values | Where-Object key -eq 'DatabaseServer').value $DatabaseInstance = ($values | Where-Object key -eq 'DatabaseInstance').value $inputFile = "$PSScriptRoot\setup.xml" $outputFile = "$env:HOMEPATH\new-setup.xml" if ($Domain -eq "") { $Domain = $Env:COMPUTERNAME } $XMLfile = New-Object XML $XMLfile.Load($inputFile) $XMLfile.NavSetupConfiguration.NavServer = $env:COMPUTERNAME $XMLfile.NavSetupConfiguration.NavPort = $SOAPServicesPort $XMLfile.NavSetupConfiguration.NavClientPort = $ClientServicesPort $XMLfile.NavSetupConfiguration.NavServerInstance = $ServerInstance $XMLfile.NavSetupConfiguration.NavServiceDomain = $Domain $XMLfile.NavSetupConfiguration.NavServiceLogin = $Login $XMLfile.NavSetupConfiguration.NavServicePassword = $Password $XMLfile.NavSetupConfiguration.P1DbLogin = $Login $XMLfile.NavSetupConfiguration.P1DbName = Get-DatabaseNameFromTenant $Tenant $XMLfile.NavSetupConfiguration.P1DbPassword = $Password $XMLfile.NavSetupConfiguration.P1DbServer = "$DatabaseServer\$DatabaseInstance" $XMLfile.NavSetupConfiguration.P1DbServerLogin = $Login $XMLfile.NavSetupConfiguration.P1DbServerPassword = $Password $XMLfile.NavSetupConfiguration.P1RoleName = $Tenant $XMLfile.NavSetupConfiguration.P1WebApplication = Get-WebAppNameFromTenant $Tenant $XMLfile.NavSetupConfiguration.P1WindowsServiceName = Get-ServiceNameFromTenant $Tenant $XMLfile.NavSetupConfiguration.P1WindowsServiceUserName = "$Domain\$Login" $XMLfile.NavSetupConfiguration.P1WindowsServicePassword = $Password $XMLfile.Save($outputFile) $srvBinPath = Get-ServicePath Write-Verbose "Copy setup file" Copy-Item $outputFile -Destination "$srvBinPath\$Tenant\Setup\setup.xml" $lastPath = (Get-Item -Path ".\" -Verbose).FullName Write-Verbose "Execute PlannerOne Manager in setup mode" Set-Location "$srvBinPath\$Tenant" CMD /C "PlannerOneManager.exe /setup" Set-Location $lastPath } |