ps/Modules/Alkami.PowerShell.Configuration/Public/Remove-NetshExcludedPortRange.ps1

76 lines
2.2 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
function Remove-NetshExcludedPortRange {
<#
.SYNOPSIS
This function is used to remove a specific starting and number of ports to the system.
This is a very thing wrapper around the netsh tool for removing IPv4 ports.
.PARAMETER Start
This is the starting port number.
.PARAMETER NumberOfPorts
This is the count of ports in the given range.
.PARAMETER End
This is the end port number when providing a range.
.EXAMPLE
Remove-NetshExcludedPortRange -Start 50 -End 55
.EXAMPLE
Remove-NetshExcludedPortRange -Start 50 -NumberOfPorts 6
#>
[CmdletBinding(DefaultParameterSetName = 'NumberOfPorts')]
[OutputType([bool])]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[Alias("StartPort")]
[int]$Start,
[Parameter(Mandatory = $true, ParameterSetName = 'NumberOfPorts')]
[ValidateNotNullOrEmpty()]
[Alias("Range")]
[int]$NumberOfPorts,
[Parameter(Mandatory = $true, ParameterSetName = 'EndPorts')]
[ValidateNotNullOrEmpty()]
[Alias("EndPort")]
[int]$End
)
$logLead = (Get-LogLeadName)
if ($Start -le 0) {
throw "$logLead : Start port value must be greater than 0"
}
if ($PSCmdlet.ParameterSetName -eq 'NumberOfPorts') {
if ($NumberOfPorts -eq $Start) {
throw "$logLead : NumberOfPorts can not equal the parameter for Start"
}
if ($NumberOfPorts -le 0) {
throw "$logLead : NumberOfPorts value must be greater than 0"
}
}
if ($PSCmdlet.ParameterSetName -eq 'EndPorts') {
if ($End -le $Start) {
throw "$logLead : End port value must be larger than Start port value"
}
if ($End -le 0) {
throw "$logLead : End port value must be greater than 0"
}
$NumberOfPorts = $End - $Start + 1
}
Write-Host "$logLead : Deleting ipv4/tcp excludedPortRange for Start port [$Start] for [$NumberOfPorts] ports"
$output = netsh int ip delete excludedportrange tcp $Start $NumberOfPorts
if ($output -match "error") {
Write-Error "$logLead : Failed to set the requested range.`r`n$output"
return $false
}
return $true
}