Public/Set-UnityFileDNSServer.ps1
Function Set-UnityFileDnsServer { <# .SYNOPSIS Modifies File DNS Server parameters. .DESCRIPTION Modifies File DNS Server parameters. You need to have an active session with the array. .NOTES Written by Erwan Quelin under Apache licence .LINK https://github.com/equelin/Unity-Powershell .EXAMPLE Set-UnityFileDnsServer -ID 'dns_1' -ipAddress '192.168.0.1' Change ip of the file DNS server with ID 'dns_1' #> [CmdletBinding(SupportsShouldProcess = $True,ConfirmImpact = 'High')] Param ( [Parameter(Mandatory = $false,HelpMessage = 'EMC Unity Session')] $session = ($global:DefaultUnitySession | where-object {$_.IsConnected -eq $true}), [Parameter(Mandatory = $true,Position = 0,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True,HelpMessage = 'File interface ID or Object')] $ID, [Parameter(Mandatory = $false,HelpMessage = 'DNS domain name')] [string]$domain, [Parameter(Mandatory = $false,HelpMessage = 'Prioritized list of one to three IPv4 and/or IPv6 addresses of DNS servers for the domain')] [String[]]$addresses, [Parameter(Mandatory = $false,HelpMessage = 'replication policy')] [ReplicationPolicyEnum]$replicationPolicy ) Begin { Write-Verbose "Executing function: $($MyInvocation.MyCommand)" } Process { Foreach ($sess in $session) { Write-Verbose "Processing Session: $($sess.Server) with SessionId: $($sess.SessionId)" If (Test-UnityConnection -Session $Sess) { # Determine input and convert to UnityPool object Switch ($ID.GetType().Name) { "String" { $FileDNSServer = get-UnityFileDNSServer -Session $Sess -ID $ID $FileDNSServerID = $FileDNSServer.id $FileDNSServerName = $FileDNSServer.Name } "UnityFileInterface" { Write-Verbose "Input object type is $($ID.GetType().Name)" $FileDNSServerID = $ID.id If ($FileDNSServer = Get-UnityFileDNSServer -Session $Sess -ID $FileDNSServerID) { $FileDNSServerName = $ID.name } } } If ($FileDNSServerID) { # Creation of the body hash $body = @{} #Addresses argument $body['addresses'] = @() Foreach ($Addresse in $Addresses) { $body["addresses"] += $Addresse } If ($PSBoundParameters.ContainsKey('domain')) { $body["domain"] = "$($domain)" } If ($PSBoundParameters.ContainsKey('replicationPolicy')) { $body["replicationPolicy"] = $replicationPolicy } #Building the URI $URI = 'https://'+$sess.Server+'/api/instances/fileDNSServer/'+$FileDNSServerID+'/action/modify' Write-Verbose "URI: $URI" #Sending the request If ($pscmdlet.ShouldProcess($FileDNSServerID,"Modify File DNS Server Interface")) { $request = Send-UnityRequest -uri $URI -Session $Sess -Method 'POST' -Body $Body } If ($request.StatusCode -eq '204') { Write-Verbose "File DNS Server with ID: $FileDNSServerID has been modified" Get-UnityFileDNSServer -Session $Sess -id $FileDNSServerID } } else { Write-Verbose "NAS Server $FileDNSServerID does not exist on the array $($sess.Name)" } } else { Write-Information -MessageData "You are no longer connected to EMC Unity array: $($Sess.Server)" } } } End {} } |