Public/New-DynDnsRecord.ps1
function New-DynDnsRecord { [CmdLetBinding()] [System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseShouldProcessForStateChangingFunctions','Creates instance of DynDns record; does not make changes')] param( [Parameter(Mandatory=$true,ParameterSetName='ARecord')] [ipaddress]$IPv4Address, [Parameter(Mandatory=$true,ParameterSetName='TXTRecord')] [string]$Text, [Parameter(Mandatory=$true,ParameterSetName='CNAMERecord')] [string]$CName, [Parameter(Mandatory=$true,ParameterSetName='MXRecord')] [string]$MailServer, [Parameter(Mandatory=$true,ParameterSetName='MXRecord')] [string]$Preference, [Parameter(Mandatory=$true,ParameterSetName='SRVRecord')] [int]$Port, [Parameter(Mandatory=$true,ParameterSetName='SRVRecord')] [int]$Priority, [Parameter(Mandatory=$true,ParameterSetName='SRVRecord')] [string]$Target, [Parameter(Mandatory=$true,ParameterSetName='SRVRecord')] [int]$Weight, [Parameter(Mandatory=$true,ParameterSetName='SOARecord')] [string]$ResponsiblePerson, [int]$TTL = 0 ) switch ($PsCmdlet.ParameterSetName) { 'ARecord' { [DynDnsRecord_A]::New(@{ rdata = @{ address = $IPv4Address.IPAddressToString } ttl = $TTL.ToString() record_type = 'A' }) } 'TXTRecord' { [DynDnsRecord_TXT]::New(@{ rdata = @{ txtdata = $Text } ttl = $TTL.ToString() record_type = 'TXT' }) } 'CNAMERecord' { [DynDnsRecord_CNAME]::New(@{ rdata = @{ cname = $Cname } ttl = $TTL.ToString() record_type = 'CNAME' }) } 'SRVRecord' { [DynDnsRecord_SRV]::New(@{ rdata = @{ port = $Port.ToString() priority = $Priority.ToString() target = $Target weight = $Weight.ToString() } ttl = $TTL.ToString() record_type = 'SRV' }) } 'SOARecord' { [DynDnsRecord_SOA]::New(@{ rdata = @{ rname = $ResponsiblePerson.Replace('@','.') } serial_style = $SerialStyle ttl = '3600' record_type = 'SOA' }) } 'MXRecord' { [DynDnsRecord_MX]::New(@{ rdata = @{ exchange = $MailServer preference = $Preference.ToString() } ttl = $TTL.ToString() record_type = 'MX' }) } } } |