function Get-EnabledTlsCipherSuites { $enabledCipherSuites = @() $cipherSuites = Get-TlsCipherSuite foreach ($cipherSuite in $cipherSuites) { $cipherSuiteName = $cipherSuite.Name $regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\$cipherSuiteName" if (Test-Path $regPath) { $disabled = Get-ItemProperty -Path $regPath -Name "Enabled" -ErrorAction SilentlyContinue if ($null -eq $disabled -or $disabled.Enabled -ne 0) { $enabledCipherSuites += $cipherSuite } } else { $enabledCipherSuites += $cipherSuite } } return $enabledCipherSuites } function Get-EnabledTlsVersions { $versions = @("1.2", "1.3") $enabledVersions = @() foreach ($version in $versions) { $regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS $version\Server" if (Test-Path $regPath) { $enabled = Get-ItemProperty -Path $regPath -Name "Enabled" -ErrorAction SilentlyContinue if ($null -ne $enabled -and $enabled.Enabled -eq 1) { $enabledVersions += $version } } } return $enabledVersions } $enabledCipherSuites = Get-EnabledTlsCipherSuites $enabledTlsVersions = Get-EnabledTlsVersions Write-Host "Enabled TLS versions:" $enabledTlsVersions Write-Host "`nEnabled Cipher Suites:" $enabledCipherSuites | Format-Table Name, CipherLength
# Mapping of protocol version numbers to human-readable names $protocolMap = @{ 768 = 'SSL 3.0' 769 = 'TLS 1.0' 770 = 'TLS 1.1' 771 = 'TLS 1.2' 772 = 'TLS 1.3' } # Retrieve TLS cipher suites and format them into a readable table Get-TlsCipherSuite | ForEach-Object { $protocols = $_.Protocols | ForEach-Object { $protocolMap[$_] } -join ', ' [PSCustomObject]@{ Name = $_.Name Protocols = $protocols KeyLength = $_.KeyLength HashAlgorithm = $_.HashAlgorithm CipherAlgorithm = $_.CipherAlgorithm ExchangeAlgorithm= $_.ExchangeAlgorithm } } | Format-Table -AutoSize