ObjectHandling/Export-ObjectsToFolder.ps1

<#
.synopsis
    Export objects from a container to a folder
.description
    Export objects from a container to a folder based on filter credentials stored in the settings.json
.parameter ContainerName
    Container to be used. Can be provided in the settings.json
.parameter Folder
    Folder the objects should be exported to
.parameter Credential
    SQL Credentials to export objects
.example
    Export-ObjectsToFolder -ContainerName test -Folder C:\temp -Credential (Get-Credential)
#>

function Export-ObjectsToFolder {
    Param(
        [Parameter(Mandatory=$false)]
        [string] $ContainerName,
        [Parameter(Mandatory=$true)]
        [string] $Folder,
        [Parameter(Mandatory=$false)]
        [pscredential] $Credential
    )

    if ($null -eq $ContainerName -or $ContainerName -eq "") {
        $ContainerName = (Get-EnvironmentKeyValue -KeyName 'name')
    }

    if ($null -eq $Credential) {
        $NewCredential = Get-CredentialFromEnvironmentJson
        if ($NewCredential -eq $false) {
            $Password = (ConvertTo-SecureString "Password" -AsPlainText -Force)
            $Credential = [PSCredential]::new('admin', $Password)
        }
        else {
            $Credential = $NewCredential
        }
    }

    if (!(Test-Path $Folder -PathType Container)) {
        New-Item $Folder -ItemType Directory -Force
    }

    $containerFolder = ((Get-NavContainerSharedFolders $ContainerName).GetEnumerator() | Where-Object { $_.Value -eq "C:\Run\my"}).Name
    $objectsFilter = (Get-EnvironmentKeyValue -KeyName 'objectsFilter')
    if (($null -eq $objectsFilter) -or ($objectsFilter -eq '')) {
        return
    }
    $objectsName = ("{0}_{1}_{2}_BaseObjects.fob" -f (Get-AppKeyValue -KeyName 'publisher'), (Get-AppKeyValue -KeyName 'name'), (Get-AppKeyValue -KeyName 'version'))

    Export-NavContainerObjects -containerName $ContainerName -objectsFolder "$containerFolder" -filter "$objectsFilter" -sqlCredential $Credential -exportTo 'fob file'

    if (Test-Path (Join-Path $containerFolder "objects.fob") -PathType Leaf) {
        Copy-Item -Path (Join-Path $containerFolder "objects.fob") -Destination (Join-Path $Folder $objectsName) -Force
        Remove-Item (Join-Path $containerFolder "objects.fob") -Force
    }
}
Export-ModuleMember Export-ObjectsToFolder