Row 1 has headings:
- CIDR
- IP
- First IP Int
- Last IP Int
- Test IP Int
- IP In Range
Column A contains CIDRs (e.g. 3.2.1.0/30)
| # Given a URI fetches the certificates hosted on that site, then parses the PEM to extract user friendly info (currently just as strings; I've not added logic to convert the output to PSCustomObjects, though may add that soon if I find the need). | |
| $uri = 'example.org' | |
| $output = (echo "" | openssl s_client -connect "$($uri):443" -servername $uri -showcerts 2>$null) -join "`n" | |
| $output | select-string '(?smi)-----BEGIN CERTIFICATE-----(.*?)-----END CERTIFICATE-----' -AllMatches | %{$_.Matches} | %{$_.Value | openssl x509 -issuer -fingerprint -sha256 -enddate -subject -noout;'---'} | |
| <# # Example Output # | |
| issuer=C = US, O = DigiCert Inc, CN = DigiCert Global G3 TLS ECC SHA384 2020 CA1 | |
| SHA256 Fingerprint=85:A1:DF:2F:31:49:6B:1F:D7:04:A8:43:6D:30:9C:DC:5C:1B:4B:B3:95:6F:B3:1A:73:2A:C1:82:4D:AF:CA:C2 | |
| notAfter=Jan 15 23:59:59 2026 GMT | |
| subject=C = US, ST = California, L = Los Angeles, O = Internet Corporation for Assigned Names and Numbers, CN = *.example.org |
| # Thanks to https://github.com/okieselbach/Intune/blob/master/Convert-AzureAdSidToObjectId.ps1 | |
| Function Convert-EntraSidToObjectId { | |
| [CmdletBinding()] | |
| Param( | |
| [Parameter(ValueFromPipeline)] | |
| [String]$Sid | |
| ) | |
| Process { | |
| $text = $sid.Replace('S-1-12-1-', '') | |
| $array = [UInt32[]]$text.Split('-') |
| Function Export-AzKeyVaultCertificateToPfx { | |
| [CmdletBinding()] | |
| Param ( | |
| [Parameter(Mandatory)] | |
| [string]$Subscription | |
| , | |
| [Parameter(Mandatory)] | |
| [string]$VaultName | |
| , | |
| [Parameter(Mandatory)] |
| Add-Type -AssemblyName System.Windows.Forms | |
| Add-Type -AssemblyName System.Windows.Forms.DataVisualization | |
| Function Out-LineChart { | |
| [CmdletBinding()] | |
| Param ( | |
| [Parameter(Mandatory, ValueFromPipeline)] | |
| [Hashtable]$Data | |
| , | |
| [Parameter()] |
Row 1 has headings:
Column A contains CIDRs (e.g. 3.2.1.0/30)
| Function Convert-StringToValidateSetParameterCase { | |
| Param ( | |
| [Parameter(Mandatory)] | |
| [System.Management.Automation.InvocationInfo]$InvocationInfo | |
| , | |
| [Parameter(Mandatory)] | |
| [string]$ParameterName | |
| , | |
| [Parameter(Mandatory)] | |
| [AllowEmptyString()] |
| function Get-AllCombos { | |
| [CmdletBinding()] | |
| [OutputType("System.Collections.Generic.List[System.Object]")] | |
| Param ( | |
| [Parameter(Mandatory)] | |
| [AllowEmptyCollection()] | |
| #[System.Collections.Generic.List[System.Object]]$arr | |
| [System.Collections.Generic.List[System.Object]]$arr | |
| ) | |
| $ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop |
| // Specify a value for `testCidr` (must be a valid CIDR; so if just looking for a specific IPv4 IP, append /32 on the end). | |
| // Run this and you'll see all IP Groups which contain CIDRs or IPs which overlap in any way with the given value. | |
| resourcecontainers | where type == "microsoft.resources/subscriptions" | limit 1 // this is a hack to give us a single row | |
| | project testCidr = "123.123.123.123/32" // update this value to the CIDR you're interested in | |
| | extend testCidrSplit = array_concat(split(split(testCidr, '/')[0],'.'), split(split(testCidr, '/')[1],'x')) | |
| | extend testCidrFirstIp = toint(testCidrSplit[0]) * 16777216 + toint(testCidrSplit[1]) * 65536 + toint(testCidrSplit[2]) * 256 + toint(testCidrSplit[3]) | |
| | extend testCidrLastIp = testCidrFirstIp + pow(2,32-testCidrSplit[4])-1 | |
| | extend joinhack = 1 | |
| | join kind = inner |
| <# | |
| .SYNOPSIS | |
| Used to help migrate R53 zones by converting the JSON obtained by | |
| extracting all record sets from a zone to the JSON required to upload | |
| these recordsets to another zone. | |
| .DESCRIPTION | |
| Covers those tasks described in step 4 of [Migrating an AWS Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-migrating.html#hosted-zones-migrating-create-file) | |
| i.e. to convert the output of `aws route53 list-resource-record-sets --hosted-zone-id <hosted-zone-id>` | |
| ... to the input of `aws route53 change-resource-record-sets --hosted-zone-id id-of-new-hosted-zone --change-batch file://path-to-file-that-contains-records` |
| Function Copy-FtpItem { | |
| [CmdletBinding()] | |
| Param ( | |
| [Parameter(Mandatory, ValueFromPipeline)] | |
| [string[]]$Path | |
| , | |
| [Parameter(Mandatory)] | |
| [string]$FtpHost |