যদি আপনি রেজিস্ট্রি ব্যবহার করতে চলেছেন তবে আপনাকে 4.x ফ্রেমওয়ার্কের সম্পূর্ণ সংস্করণ পেতে পুনরাবৃত্তি করতে হবে। পূর্ববর্তী উত্তরগুলি উভয়ই আমার সিস্টেমের নেট নেট 3.0.০ (যেখানে ডাব্লুসিএফ এবং ডাব্লুপিএফ সংখ্যাগুলি 3.0.০ এর নীচে বাসা বেঁধে দেওয়া হয়, উচ্চতর - আমি এটি ব্যাখ্যা করতে পারি না), এবং 4.0 এর জন্য কিছু ফেরত দিতে ব্যর্থ হয়েছি! ।
সম্পাদনা করুন: নেট .৪.৫ এবং তার বেশি জন্য, এটি আবার কিছুটা পরিবর্তিত হয়েছে, সুতরাং এখানে একটি দুর্দান্ত এমএসডিএন নিবন্ধ রয়েছে যে কীভাবে রিলিজের মানটিকে একটি। নেট সংস্করণ সংখ্যায় রূপান্তর করতে হবে তা ব্যাখ্যা করে , এটি মোট ট্রেনের নষ্ট :-(
এটি আমার কাছে ঠিক দেখাচ্ছে (নোট করুন যে এটি ডাব্লুসিএফ এবং ডাব্লুপিএফের জন্য পৃথক সংস্করণ নম্বরগুলি 3.0 এ আউটপুট করে দেয়। আমি কী জানি না)) এটি ক্লায়েন্ট এবং ফুল উভয়ই 4.0 এ আউটপুট দেয় (যদি আপনি এটি উভয়ই ইনস্টল করেন):
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} |
Select PSChildName, Version, Release
এমএসডিএন নিবন্ধের ভিত্তিতে, আপনি একটি অনুসন্ধানের টেবিল তৈরি করতে পারেন এবং 4.5 এর পরে প্রকাশের জন্য বিপণন পণ্য সংস্করণ নম্বরটি ফিরিয়ে দিতে পারেন:
$Lookup = @{
378389 = [version]'4.5'
378675 = [version]'4.5.1'
378758 = [version]'4.5.1'
379893 = [version]'4.5.2'
393295 = [version]'4.6'
393297 = [version]'4.6'
394254 = [version]'4.6.1'
394271 = [version]'4.6.1'
394802 = [version]'4.6.2'
394806 = [version]'4.6.2'
460798 = [version]'4.7'
460805 = [version]'4.7'
461308 = [version]'4.7.1'
461310 = [version]'4.7.1'
461808 = [version]'4.7.2'
461814 = [version]'4.7.2'
528040 = [version]'4.8'
528049 = [version]'4.8'
}
# For One True framework (latest .NET 4x), change the Where-Object match
# to PSChildName -eq "Full":
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
Get-ItemProperty -name Version, Release -EA 0 |
Where-Object { $_.PSChildName -match '^(?!S)\p{L}'} |
Select-Object @{name = ".NET Framework"; expression = {$_.PSChildName}},
@{name = "Product"; expression = {$Lookup[$_.Release]}},
Version, Release
আসলে, যেহেতু আমি এই উত্তরটি আপডেট করতেই থাকি, সেই ওয়েব পৃষ্ঠার জন্য মার্কডাউন উত্স থেকে উপরের স্ক্রিপ্টটি (কিছুটা অতিরিক্ত দিয়ে) তৈরি করার জন্য এখানে একটি স্ক্রিপ্ট রয়েছে। এটি সম্ভবত কোনও সময়ে ভেঙে যাবে, তাই আমি বর্তমান কপিটি উপরে রাখছি।
# Get the text from github
$url = "https://raw.githubusercontent.com/dotnet/docs/master/docs/framework/migration-guide/how-to-determine-which-versions-are-installed.md"
$md = Invoke-WebRequest $url -UseBasicParsing
$OFS = "`n"
# Replace the weird text in the tables, and the padding
# Then trim the | off the front and end of lines
$map = $md -split "`n" -replace " installed [^|]+" -replace "\s+\|" -replace "\|$" |
# Then we can build the table by looking for unique lines that start with ".NET Framework"
Select-String "^.NET" | Select-Object -Unique |
# And flip it so it's key = value
# And convert ".NET FRAMEWORK 4.5.2" to [version]4.5.2
ForEach-Object {
[version]$v, [int]$k = $_ -replace "\.NET Framework " -split "\|"
" $k = [version]'$v'"
}
# And output the whole script
@"
`$Lookup = @{
$map
}
# For extra effect we could get the Windows 10 OS version and build release id:
try {
`$WinRelease, `$WinVer = Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ReleaseId, CurrentMajorVersionNumber, CurrentMinorVersionNumber, CurrentBuildNumber, UBR
`$WindowsVersion = "`$(`$WinVer -join '.') (`$WinRelease)"
} catch {
`$WindowsVersion = [System.Environment]::OSVersion.Version
}
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
Get-ItemProperty -name Version, Release -EA 0 |
# For The One True framework (latest .NET 4x), change match to PSChildName -eq "Full":
Where-Object { `$_.PSChildName -match '^(?!S)\p{L}'} |
Select-Object @{name = ".NET Framework"; expression = {`$_.PSChildName}},
@{name = "Product"; expression = {`$Lookup[`$_.Release]}},
Version, Release,
# Some OPTIONAL extra output: PSComputerName and WindowsVersion
# The Computer name, so output from local machines will match remote machines:
@{ name = "PSComputerName"; expression = {`$Env:Computername}},
# The Windows Version (works on Windows 10, at least):
@{ name = "WindowsVersion"; expression = { `$WindowsVersion }}
"@