Private/NavUtil.ps1
function Set-NAVParameters($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-Output "Copy setup file" Copy-Item $outputFile -Destination "$srvBinPath\$Tenant\Setup\setup.xml" $lastPath = (Get-Item -Path ".\" -Verbose).FullName Write-Output "Execute PlannerOne Manager in setup mode" Set-Location "$srvBinPath\$Tenant" CMD /C "PlannerOneManager.exe /setup" Set-Location $lastPath } function Set-NAVParametersNew($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 if ($Domain -eq "") { $Domain = $Env:COMPUTERNAME } $configuration = @{ NavServer = $env:COMPUTERNAME; NavPort = $SOAPServicesPort; NavClientPort = $ClientServicesPort; NavServerInstance = $ServerInstance; NavServiceDomain = $Domain; NavServiceLogin = $Login; NavServicePassword = $Password; } $data = $configuration | ConvertTo-Json $storePath = Get-NavPathFromTenant $Tenant if (!(Test-Path $storePath)) { mkdir $storePath } $storePath = $storePath + "NAVSetup.json" [System.IO.File]::WriteAllText($storePath, $data) Write-Output "NAV configuration stored in $storePath" } |