Public/Set-WPSWSite.ps1

<#
.Synopsis
Set site settings
.Description
Changes site defination, urls , hostnames or credentials used to connect Wilma or Primus
 
.EXAMPLE
Set-WPSWSite -site MyWilma -wilma_cred (get-Credential -message "Wilma credentials")
 
Changes wilma credentials
.EXAMPLE
Set-WPSWSite -site MyWilma -pq_host primus.server.fi -pq_port 1222 -pq_cred (get-credential -Message "Primus credentials") -pq_exe "c:\Primusquery\primusquery.exe"
 
Adds or updates primusquery setting on specific site
#>
function Set-WPSWSite(){
    [CmdletBinding(SupportsShouldProcess)]
    param(
        # Short name for wilma site
        [Parameter(Mandatory=$true)]
        [string]
        $site,

        # Wilma site url
        [Parameter(ParameterSetName = "Wilma")]
        [string]
        $wilma_url,

        # Wilma api-key
        [Parameter(ParameterSetName = "Wilma")]
        [string]
        $wilma_apikey,

        # Wilma usercredential
        [Parameter(ParameterSetName = "Wilma")]
        [PSCredential]
        $wilma_cred,


         # Primusquery host
         [Parameter(ParameterSetName = "PQ")]
         [string]
         $pq_host,

         # Primusquery port
         [string]
         $pq_port,

         # Creadential to use with primusquery
         [Parameter(ParameterSetName = "PQ")]

         [PSCredential]
         $pq_cred,

         # Path to primusquery excutable
         [Parameter(ParameterSetName = "PQ")]
         [string]
         $pq_exe,

        # set Site as default
        [switch]
        $DefaultSite
        )


        $config = Get-WPSWConfig -all



        if(! $config.sites[$site]) {
            Write-Error "Site $site does not exists."
        } else {
            if ($wilma_url) { $config.sites[$site].url = $wilma_url}
            if ($wilma_apikey) { $config.sites[$site].apikey = $wilma_apikey}
            if ($wilma_cred) { $config.sites[$site].cred = $wilma_cred}

            if ($pq_host) { $config.sites[$site].pq_host = $pq_host}
            if ($pq_port) { $config.sites[$site].pq_port = $pq_port}
            if ($pq_cred) { $config.sites[$site].pq_cred = $pq_cred}
            if ($pq_exe) { $config.sites[$site].pq_exe = $pq_exe}

            if ($DefaultSite) { $config['default'] = $site}
            If ($PSCmdlet.ShouldProcess("ShouldProcess?")) {
                Export-Configuration -Scope User $config
            }
            $config

        }

}