# すべての.NET Frameworkのバージョンを取得
Write-Host "--- .NET Framework Versions ---"
Get-ChildItem 'HKLM:\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP' -Recurse |
    Get-ItemProperty -Name Version -ErrorAction SilentlyContinue |
    Where-Object { $_.PSChildName -match '^(?!S)\\p{L}' } |
    Select-Object PSChildName, Version

# .NET Core, .NET 5, .NET 6, etc. を取得
Write-Host "`n--- .NET Core and .NET 5+ Versions ---"
Get-ChildItem 'HKLM:\\SOFTWARE\\dotnet\\Setup\\InstalledVersions\\x64' -ErrorAction SilentlyContinue |
    Get-ItemProperty -Name Version, Release -ErrorAction SilentlyContinue |
    Select-Object PSChildName, Version
# レジストリからインストールされている.NET Frameworkのバージョンを取得
Get-ChildItem 'HKLM:\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP' -Recurse |
    Get-ItemProperty -Name Version -ErrorAction SilentlyContinue |
    Where-Object { $_.PSChildName -match '^(?!S)\\p{L}'} |
    Select-Object PSChildName, Version
# レジストリからインストールされている.NET Frameworkのバージョンを取得し、親の名前も表示
Get-ChildItem 'HKLM:\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP' -Recurse |
    Get-ItemProperty -Name Version -ErrorAction SilentlyContinue |
    Where-Object { $_.PSChildName -match '^(?!S)\\p{L}'} |
    Select-Object @{Name='Parent';Expression={$_.PSParentPath}}, PSChildName, Version