private/Set-iPerf3Port.ps1
function Set-iPerf3Port { <# .SYNOPSIS Set the local firewall rules for the port that iPerf3 will listen on. .DESCRIPTION Set the local firewall rules for the port that iPerf3 will listen on. This will set inbound/outbound Allow TCP on the given port. .PARAMETER Port The port that iPerf3 will listen on. .PARAMETER PassThru Returns the objects returned by "New-NetFirewallRule" for both the inbound and outbound rules, in an array. .EXAMPLE Set-iPerf3Port -Port "5201" .EXAMPLE Set-iPerf3Port -Port "5201" -PassThru #> [CmdletBinding(SupportsShouldProcess = $True, ConfirmImpact = "Medium")] Param( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] [String] $Port, [Switch] $PassThru ) Write-Verbose -Message "Setting inbound and outbound iperf3 firewall rules." $FirewallInboundParams = @{ DisplayName = "iPerf3 Server Inbound TCP Rule"; Direction = "Inbound"; LocalPort = $Port; Protocol = "TCP"; Action = "Allow"; ErrorAction = "SilentlyContinue"; } $FirewallOutboundParams = @{ DisplayName = "iPerf3 Server Outbound TCP Rule"; Direction = "Outbound"; LocalPort = $Port; Protocol = "TCP"; Action = "Allow"; ErrorAction = "SilentlyContinue"; } if ($PSCmdlet.ShouldProcess("iperf3 Inbound/Outbound Firewall Rules", "New-NetFirewallRule")) { $inboundResult = New-NetFirewallRule @FirewallInboundParams $outboundResult = New-NetFirewallRule @FirewallOutboundParams } if ($inboundResult -and $outboundResult) { Write-Verbose -Message 'iPerf3 server port firewall rules set.' } else { throw "iPerf3 server port firewall rules could not be set. Message: {0}" -f $error[0].Exception.message } if ($PassThru) { return @($inboundResult, $outboundResult) } } |