public/Update-FreeNasGlobalConfig.ps1

function Update-FreeNasGlobalConfig
{
    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')]
    [Alias()]

    Param
    (
        [Parameter (Mandatory = $false)]
        [String]$Domain,
        [Parameter (Mandatory = $false)]
        [String]$Hostname,
        [Parameter (Mandatory = $false)]
        [String]$Ipv4gateway,
        [Parameter (Mandatory = $false)]
        [String]$Ipv6gateway,
        [Parameter (Mandatory = $false)]
        [String]$Nameserver1,
        [Parameter (Mandatory = $false)]
        [String]$Nameserver2,
        [Parameter (Mandatory = $false)]
        [String]$Nameserver3,
        [Parameter (Mandatory = $false)]
        [String]$Hosts,
        [Parameter (Mandatory = $false)]
        [String]$Proxy

    )


    Begin
    {

    }
    Process
    {
        $Uri = "api/v1.0/network/globalconfiguration/"

        $Obj = new-Object -TypeName PSObject

        if ( $PsBoundParameters.ContainsKey('Domain') )
        {
            $Obj | add-member -name "gc_domain" -membertype NoteProperty -Value $Domain.ToLower()
        }
        if ( $PsBoundParameters.ContainsKey('Hostname') )
        {
            $Obj | add-member -name "gc_hostname" -membertype NoteProperty -Value $Hostname.ToLower()
        }
        if ( $PsBoundParameters.ContainsKey('Ipv4gateway') )
        {
            $Obj | add-member -name "gc_ipv4gateway" -membertype NoteProperty -Value $Ipv4gateway
        }
        if ( $PsBoundParameters.ContainsKey('Ipv6gateway') )
        {
            $Obj | add-member -name "gc_ipv6gateway" -membertype NoteProperty -Value $Ipv6gateway
        }
        if ( $PsBoundParameters.ContainsKey('Nameserver1') )
        {
            $Obj | add-member -name "gc_nameserver1" -membertype NoteProperty -Value $Nameserver1
        }
        if ( $PsBoundParameters.ContainsKey('Nameserver2') )
        {
            $Obj | add-member -name "gc_nameserver2" -membertype NoteProperty -Value $Nameserver2
        }
        if ( $PsBoundParameters.ContainsKey('Nameserver3') )
        {
            $Obj | add-member -name "gc_nameserver3" -membertype NoteProperty -Value $Nameserver3
        }
        if ( $PsBoundParameters.ContainsKey('Hosts') )
        {
            $Obj | add-member -name "gc_hosts" -membertype NoteProperty -Value $Hosts.ToLower()
        }
        if ( $PsBoundParameters.ContainsKey('Proxy') )
        {
            $Obj | add-member -name "gc_httpproxy" -membertype NoteProperty -Value $Proxy.ToLower()
        }

    }
    End
    {

        $response = Invoke-FreeNasRestMethod -method put -body $Obj -Uri $Uri


    }

}