www.powershellgallery.com
Open in
urlscan Pro
2620:1ec:bdf::60
Public Scan
URL:
https://www.powershellgallery.com/packages/PoshFunctions/2.2.1.6/Content/Functions/Get-IpRange.ps1
Submission: On July 24 via api from DE — Scanned from GB
Submission: On July 24 via api from DE — Scanned from GB
Form analysis
1 forms found in the DOMGET /packages
<form aria-label="Package search bar" action="/packages" method="get">
<div class="container">
<div class="row">
<div class="col-sm-offset-1 col-sm-2"></div>
<div class="col-sm-12 col-md-8">
<div class="form-group special-margin-left">
<label for="search">Search PowerShell packages:</label>
<div class="input-group" role="presentation">
<input name="q" type="text" class="form-control ms-borderColor-blue search-box" id="search" aria-label="Enter packages to search, use the arrow keys to autofill." placeholder="Az, etc..." autocomplete="on" value="">
<span class="input-group-btn">
<button class="btn btn-default btn-search ms-borderColor-blue ms-borderColor-blue--hover" type="submit" title="Search PowerShell packages" aria-label="Search PowerShell packages">
<span class="ms-Icon ms-Icon--Search" aria-hidden="true"></span>
</button>
</span>
</div>
<div id="autocomplete-results-container" class="text-left" tabindex="0"></div>
<script type="text/html" id="autocomplete-results-row">
<!-- ko if: $data -->
<!-- ko if: $data.PackageRegistration -->
<div class="col-sm-4 autocomplete-row-id autocomplete-row-data">
<span data-bind="attr: { id: 'autocomplete-result-id-' + $data.PackageRegistration.Id, title: $data.PackageRegistration.Id }, text: $data.PackageRegistration.Id"></span>
</div>
<div class="col-sm-4 autocomplete-row-downloadcount text-right autocomplete-row-data">
<span data-bind="text: $data.DownloadCount + ' downloads'"></span>
</div>
<div class="col-sm-4 autocomplete-row-owners text-left autocomplete-row-data">
<span data-bind="text: $data.OwnersString + ' '"></span>
</div>
<!-- /ko -->
<!-- ko ifnot: $data.PackageRegistration -->
<div class="col-sm-12 autocomplete-row-id autocomplete-row-data">
<span data-bind="attr: { id: 'autocomplete-result-id-' + $data, title: $data }, text: $data"></span>
</div>
<!-- /ko -->
<!-- /ko -->
</script>
<script type="text/html" id="autocomplete-results-template">
<!-- ko if: $data.data.length > 0 -->
<div data-bind="foreach: $data.data" id="autocomplete-results-list">
<a data-bind="attr: { id: 'autocomplete-result-row-' + $data, href: '/packages/' + $data, title: $data }" tabindex="-1">
<div data-bind="attr:{ id: 'autocomplete-container-' + $data }" class="autocomplete-results-row">
</div>
</a>
</div>
<!-- /ko -->
</script>
</div>
</div>
</div>
</div>
</form>
Text Content
Individual package statistics are temporarily unavailable. More info: https://aka.ms/psgallerystatus This site uses cookies for analytics, personalized content and ads. By continuing to browse this site, you agree to this use. Learn more Skip To Content PowerShell Gallery Toggle navigation * Packages * Publish * Documentation Sign in Search PowerShell packages: POSHFUNCTIONS 2.2.1.6 FUNCTIONS/GET-IPRANGE.PS1 function Get-IpRange { <# .SYNOPSIS Given a subnet in CIDR format, get all of the valid IP addresses in that range. .DESCRIPTION Given a subnet in CIDR format, get all of the valid IP addresses in that range. .PARAMETER Subnets The subnet written in CIDR format 'a.b.c.d/#' and an example would be '192.168.1.24/27'. Can be a single value, an array of values, or values can be taken from the pipeline. .EXAMPLE Get-IpRange -Subnets '192.168.1.24/30' 192.168.1.25 192.168.1.26 .EXAMPLE (Get-IpRange -Subnets '10.100.10.0/24').count 254 .EXAMPLE '192.168.1.128/30' | Get-IpRange 192.168.1.129 192.168.1.130 .NOTES Inspired by https://gallery.technet.microsoft.com/PowerShell-Subnet-db45ec74 * Added comment help #> [CmdletBinding(ConfirmImpact = 'None')] Param( [Parameter(Mandatory, HelpMessage = 'Please enter a subnet in the form a.b.c.d/#', ValueFromPipeline, Position = 0)] [string[]] $Subnets ) begin { Write-Verbose -Message "Starting [$($MyInvocation.Mycommand)]" } process { foreach ($subnet in $subnets) { if ($subnet -match '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/\d{1,2}$') { #Split IP and subnet $IP = ($Subnet -split '\/')[0] [int] $SubnetBits = ($Subnet -split '\/')[1] if ($SubnetBits -lt 7 -or $SubnetBits -gt 30) { Write-Error -Message 'The number following the / must be between 7 and 30' break } #Convert IP into binary #Split IP into different octects and for each one, figure out the binary with leading zeros and add to the total $Octets = $IP -split '\.' $IPInBinary = @() foreach ($Octet in $Octets) { #convert to binary $OctetInBinary = [convert]::ToString($Octet, 2) #get length of binary string add leading zeros to make octet $OctetInBinary = ('0' * (8 - ($OctetInBinary).Length) + $OctetInBinary) $IPInBinary = $IPInBinary + $OctetInBinary } $IPInBinary = $IPInBinary -join '' #Get network ID by subtracting subnet mask $HostBits = 32 - $SubnetBits $NetworkIDInBinary = $IPInBinary.Substring(0, $SubnetBits) #Get host ID and get the first host ID by converting all 1s into 0s $HostIDInBinary = $IPInBinary.Substring($SubnetBits, $HostBits) $HostIDInBinary = $HostIDInBinary -replace '1', '0' #Work out all the host IDs in that subnet by cycling through $i from 1 up to max $HostIDInBinary (i.e. 1s stringed up to $HostBits) #Work out max $HostIDInBinary $imax = [convert]::ToInt32(('1' * $HostBits), 2) - 1 $IPs = @() #Next ID is first network ID converted to decimal plus $i then converted to binary For ($i = 1 ; $i -le $imax ; $i++) { #Convert to decimal and add $i $NextHostIDInDecimal = ([convert]::ToInt32($HostIDInBinary, 2) + $i) #Convert back to binary $NextHostIDInBinary = [convert]::ToString($NextHostIDInDecimal, 2) #Add leading zeros #Number of zeros to add $NoOfZerosToAdd = $HostIDInBinary.Length - $NextHostIDInBinary.Length $NextHostIDInBinary = ('0' * $NoOfZerosToAdd) + $NextHostIDInBinary #Work out next IP #Add networkID to hostID $NextIPInBinary = $NetworkIDInBinary + $NextHostIDInBinary #Split into octets and separate by . then join $IP = @() For ($x = 1 ; $x -le 4 ; $x++) { #Work out start character position $StartCharNumber = ($x - 1) * 8 #Get octet in binary $IPOctetInBinary = $NextIPInBinary.Substring($StartCharNumber, 8) #Convert octet into decimal $IPOctetInDecimal = [convert]::ToInt32($IPOctetInBinary, 2) #Add octet to IP $IP += $IPOctetInDecimal } #Separate by . $IP = $IP -join '.' $IPs += $IP } Write-Output -InputObject $IPs } else { Write-Error -Message "Subnet [$subnet] is not in a valid format" } } } end { Write-Verbose -Message "Ending [$($MyInvocation.Mycommand)]" } } Contact Us Terms of Use Privacy Policy Gallery Status Feedback FAQs © 2024 Microsoft Corporation