ස්ථාපිත පවර්ෂෙල් අනුවාදය තීරණය කරන්න


2640

පරිගණකයක ස්ථාපනය කර ඇති පවර්ෂෙල්හි කුමන අනුවාදයද, ඇත්ත වශයෙන්ම එය කිසිසේත් ස්ථාපනය කර ඇත්දැයි තීරණය කරන්නේ කෙසේද?

Answers:


3592

$PSVersionTable.PSVersionඑන්ජින් අනුවාදය තීරණය කිරීමට භාවිතා කරන්න . විචල්‍යය නොපවතී නම්, එන්ජිම අනුවාදය යැයි උපකල්පනය කිරීම ආරක්ෂිත වේ 1.0.

බව සටහන $Host.Versionහා (Get-Host).Versionඔවුන් සත්කාරක අනුවාදය එන්ජිම පමණක් නොව පිළිබිඹු - විශ්වාසනීය නැත. PowerGUI, PowerShellPLUS යනාදී සියල්ලම සත්කාරක යෙදුම් වන අතර, ඒවායේ නිෂ්පාදන අනුවාදය පිළිබිඹු කිරීම සඳහා ඔවුන් සත්කාරක අනුවාදය සකසනු ඇත - එය සම්පූර්ණයෙන්ම නිවැරදි නමුත් ඔබ සොයන දේ නොවේ.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

2
An ඩැනියෙල් කැසිඩි - සාදයට වසර දෙකක් ප්‍රමාද වී ඇති නමුත් “සමහර විශේෂාංග ගණන් කළ නොහැකි ලෙස ලබා ගත නොහැක” සිදුවිය හැක්කේ සම්පූර්ණ දේ වෙනුවට .නෙට් 3.5 සංයුක්ත රාමුව ස්ථාපනය කිරීමෙන් පමණි.
ඩේව් නීලි

83
$PSVersionTableවඩා විශ්වාසදායක වන අතර ප්‍රතිලාභ $ PSVersion. ඔබට ද භාවිතා කළ හැකිය $PSVersionTable.PSVersion. ඔබ විවිධ අනුවාදයන් ( invoke-command -computername myRemotePC -Credential foo {$host}) ධාවනය කරන යන්ත්‍රයට දුරස්ථව සම්බන්ධ වී $hostසිටියද, අනුක්‍රමිකකරණය සඳහා ඔවුන් එකඟ වූ අඩුම අනුවාදය පෙන්වනු ඇති බව පෙනේ . අතර $PSVersionTableසත්‍ය අනුවාදය පෙන්වනු ඇත. එය යමෙකුට උපකාර කරනු ඇතැයි සිතමි ..
වුල්කන් කපුටා

16
පෙනෙන ආකාරයට $ host.Version හොඳ තේරීමක් නොවේ ... ඔබ PowerShell 3 ධාවනය වන යන්ත්‍රයකට දුරස්ථ නම්, දුරස්ථ හෝස්ට් v1 ලෙස පෙනෙන පරිදි ඔබට 1.0 ආපසු ලැබේ. $ PSVersionTable භාවිතා කිරීම නිවැරදිව ආපසු එයි 3.
ඩැනී ටුපනි

25
Ar ස්ටාර්ෆිෂ් පෙන්වා ඇති විධානය විධාන විමසුම භාවිතා කරමින් පවර්ෂෙල් දියත් කරයි. එය ස්ථාපනය කර නොමැති නම් "පවර්ෂෙල් සොයාගත නොහැකි" ලෙස විධානය වැරදී යන්නේ නැද්ද?
jpmc26

9
මේ සඳහා නැවත මෙහි පැමිණීමට වෙහෙසට පත්වීම නිසා මම දුව ගොස් එය notepad $profileතුළට දැමුවෙමි function psver { $PSVersionTable; $PSVersionTable.PSVersion }. සමග රීලෝඩ් . $profileසහ මම ටයිප් කළ හැක psverසවිස්තරාත්මක අනුවාදය තොරතුරු සහ වෙනත් විස්තර ලබා ගැනීම සඳහා ඕනෑම අවස්ථාවක.
ADTC

434

මම Get-Host හෝ $ PSVersionTable භාවිතා කරමි . ඇන්ඩි ෂ්නයිඩර් පෙන්වා දෙන පරිදි, $PSVersionTable1 වන අනුවාදයේ ක්‍රියා නොකරයි; එය 2 වන අනුවාදයෙන් හඳුන්වා දෙන ලදී.

get-host

Name             : ConsoleHost
Version          : 2.0
InstanceId       : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-GB
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

$PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4200
BuildVersion                   6.0.6002.18111
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

5
ඔබට ස්තුතියි! සැ.යු: මගේ එක්ස්පී හි මම v1 පවර්ෂෙල් වෙතින් අතින් උත්ශ්‍රේණිගත කළ විට, සත්‍ය ෆෝල්ඩරය සහ රෙජිස්ට්‍රි මාර්ග (නොමඟ යවන? මෙහි අනෙක් අය සඳහන් කරන පරිදි මෙය සිදු වේ, නමුත් මා එය ස්ථාපනය කර ඇත්දැයි මා මෙතරම් කනස්සල්ලට පත්වීමට හේතුව එයයි. මගේ මාර්ගය; C: \ WINDOWS \ system32 \ windowspowershell \ v1.0
neTheAgile

4
Vers psversiontable නොපවතී නම්, ඔබ v1.0 හි සිටින බව උපකල්පනය කිරීම සම්පූර්ණයෙන්ම ආරක්ෂිතයි - ඒ වගේම ඔබේ ප්‍රශ්නයට පිළිතුරු සපයන හේ ප්‍රෙස්ටෝ. $host.versionවිශ්වාසදායක නොවේ - උදාහරණයක් ලෙස powergui හි, එය පවර්ෂෙල් එන්ජින් අනුවාදයට සමාන නොවන පවර්ගුයි ධාරක අනුවාදය ලබා දෙයි (එය අපේක්ෂිත දෙයයි.)
x0n

10
පිළිගත් පිළිතුරෙහි දැක්වෙන්නේ "... $ Host.Version සහ (Get-Host). අනුවාදය විශ්වාසදායක නොවේ - ඒවා පිළිබිඹු කරන්නේ ධාරකයේ අනුවාදය මිස එන්ජිම නොවේ" .
පීටර් මෝර්ටෙන්සන්

100

ඔබට බිල්ට් විචල්‍යය දෙස බැලිය හැකිය $psversiontable. එය නොපවතී නම්, ඔබට V1 ඇත. එය පවතින්නේ නම්, එය ඔබට අවශ්‍ය සියලු තොරතුරු ලබා දෙනු ඇත.

1 >  $psversiontable

Name                           Value                                           
----                           -----                                           
CLRVersion                     2.0.50727.4927                                  
BuildVersion                   6.1.7600.16385                                  
PSVersion                      2.0                                             
WSManStackVersion              2.0                                             
PSCompatibleVersions           {1.0, 2.0}                                      
SerializationVersion           1.1.0.1                                         
PSRemotingProtocolVersion      2.1    

97

පවර්ෂෙල් ස්ථාපනය කර ඇත්දැයි තීරණය කිරීම සඳහා, ඔබට පැවැත්ම සඳහා ලේඛකාධිකාරය පරීක්ෂා කළ හැකිය

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

සහ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

බ්ලොග් පෝස්ට් එකේ විස්තර කර ඇති පරිදි අගය 1 (ස්ථාපනය සඳහා) තිබේද යන්න පවර්ෂෙල් ස්ථාපනය කර ඇත්දැයි පරීක්ෂා කරන්න .

ස්ථාපනය කර ඇති පවර්ෂෙල් හි අනුවාදය තීරණය කිරීම සඳහා, ඔබට රෙජිස්ට්රි යතුරු පරීක්ෂා කළ හැකිය

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion

සහ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion

එය .ps1 තිර රචනය සිට ස්ථාපනය කර ඇති PowerShell අනුවාදය තීරණය කිරීම සඳහා, ඔබ තුළ PowerShell.com මත විස්තර වශයෙන්, පහත දැක්වෙන එක්-ලයිනර් භාවිතා කළ හැකි කුමන PowerShell සංස්කරණය මම මම ධාවනය .

$isV2 = test-path variable:\psversiontable

අනුවාදය නැවත ලබා දීම සඳහා එම වෙබ් අඩවියම ශ්‍රිතයක් ද ලබා දෙයි:

function Get-PSVersion {
    if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}

4
වින්ඩෝස් 2003 සේවාදායකයක පවර්ෂෙල් සඳහා ආරම්භක මෙනු ප්‍රවේශය මට සොයාගත නොහැකි වූ නිසා එය ප්‍රයෝජනවත් විය (එය එහි තිබුන නමුත් පැහැදිලිව පෙනෙන්නට නැත), නමුත් රෙජිස්ට්‍රි යතුර මගේ ප්‍රශ්නයට පිළිතුරු දුන්නේය.
හොලිස්ටික් සංවර්ධක

7
පවර්ස්ක්‍රිප්ට් 3.0 සඳහා නව ප්‍රවේශයක් ඇති බව පෙනේ, HKEY_LOCAL_MACHINE \ මෘදුකාංග \ මයික්‍රොසොෆ්ට් \ පවර්ෂෙල් \ 3 ( HKEY_LOCAL_MACHINE \ මෘදුකාංග \ මයික්‍රොසොෆ්ට් \ පවර්ෂෙල් \ 1 ට අමතරව ). අනුවාදය ලබා ගැනීම සඳහා මෙම ස්ථානයේ සුදුසු ස්ථානය HKEY_LOCAL_MACHINE \ මෘදුකාංග \ මයික්‍රොසොෆ්ට් \ පවර්ෂෙල් \ 3 \ පවර්ෂෙල් එන්ජින් \ පවර්ෂෙල්වර්ෂන් (නියැදි අගය "3.0") ලෙස පෙනේ.
පීටර් මෝර්ටෙන්සන්

49

කමාන්ඩ් ප්‍රොම්ප්ට් වැනි බාහිරව පවර්ෂෙල් ආයාචනය කිරීමෙන් පමණක් ඔබට එක් පේළියකින් සෘජුවම අනුවාදය පරීක්ෂා කළ හැකිය

powershell -Command "$PSVersionTable.PSVersion"

අනුව @psaul ඔබ හැකි ඇත්තෙන්ම එය (CMD, PowerShell හෝ Pwsh) පැමිණි තැන සිට අඥේයවාදියෙක් බව එක් ආඥා කර නැත. ඒකට ස්තූතියි.

powershell -command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"

මම පරීක්ෂා කර ඇති අතර එය සීඑම්ඩී සහ පවර්ෂෙල් යන දෙඅංශයේම දෝෂ රහිතව ක්‍රියාත්මක විය.

රූප


මෙම උත්සාහයෙන් මට මෙම බිහිසුණු දෝෂය ඇතිවිය: "System.Collections.Hashtable.PSVersion: 'System.Collections.Hashtable.PSVersion' යන පදය cmdlet, function, script file, or opera program එකක නමක් ලෙස හඳුනාගෙන නොමැත. නම අක්ෂර වින්‍යාසය, හෝ මාර්ගයක් ඇතුළත් කර ඇත්නම්, මාර්ගය නිවැරදි දැයි තහවුරු කර නැවත උත්සාහ කරන්න. එබැවින් සැමවිටම ක්‍රියා
නොකරයි

කෙළවරේ සිදුවීම් දැන ගැනීම හොඳ බැවින් ඔබ එය පෙන්වා දීම ගැන මම සතුටු වෙමි, නමුත් එය තවමත් බහුතරයක් දෙනා සඳහා ක්‍රියාත්මක වන බව මම අනුමාන කරමි.
පැට්‍රික් බාර්ඩ්

Power ගොන්මේටර් කෙනෙකු සිතන්නේ පවර්ෂෙල් මෙම විධානය සමඟ එකම ආකාරයකින් හැසිරෙනු ඇති බවයි, නමුත් අවාසනාවකට එය එසේ නොවේ. මම agnostically අතර වැඩ කිරීමට කාරක රීති විසින් අදාල කරුණ නිවැරදි කිරීමට උත්සාහයක් cmdහා powershellකැමැතියි. මමත් ඒ හා සමාන හැසිරීමක් බලාපොරොත්තු වන්නෙමි. :)
tresf

3
restresf (සහ onGonmator) ඔබට මෙය CMD, PowerShell, හෝ Pwsh (PS 6.0) වෙතින් අ nost ෙයවාදීව ධාවනය කළ හැකි නමුත් ඔබ මෙම පෝරමය භාවිතා කළ යුතුය: powerhell -command "(Get-Variable PSVersionTable -ValueOnly) .PSVersion" ( සෑම අවස්ථාවකම වැඩ කරන්න)
PSaul

මැක් වලද පරීක්ෂා කර ඇත. pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion" නියමයි.
tresf

38

පහත දැක්වෙන චෙක්පත සම්පූර්ණ කිරීමෙන් වින්ඩෝස් පවර්ෂෙල් අනුවාදය ස්ථාපනය කර ඇති බව ඔබට සත්‍යාපනය කළ හැකිය:

  1. ආරම්භය ක්ලික් කරන්න, සියලුම වැඩසටහන් ක්ලික් කරන්න, උපාංග ක්ලික් කරන්න, වින්ඩෝස් පවර්ෂෙල් ක්ලික් කරන්න, ඉන්පසු වින්ඩෝස් පවර්ෂෙල් ක්ලික් කරන්න.
  2. වින්ඩෝස් පවර්ෂෙල් කොන්සෝලය තුළ, විධාන විමසුමේදී පහත විධානය ටයිප් කර ENTER ඔබන්න:

    Get-Host | Select-Object Version

මේ ආකාරයට පෙනෙන ප්‍රතිදානය ඔබට පෙනෙනු ඇත:

Version
-------
3.0

http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/


1
පෙරනිමි විකල්පයන් සමඟ පවර්ෂෙල් ස්ථාපනය කර ඇති බවත් කෙටිමං ආරම්භක මෙනුවෙන් ඉවත් නොකළ බවත් ඔබ උපකල්පනය කරයි. රෙජිස්ට්රි පරීක්ෂණය භාවිතා කිරීමට වඩා හොඳය.
Xalrous

මම හිතන්නේ ඔබට පළමුව පවර්ෂෙල් භාවිතා කිරීමට අවශ්‍ය නම් එය ස්ථාපනය කළ යුතු ප්‍රමිතියක් ලෙස ක්‍රියාත්මක කිරීමට උත්සාහ කළහොත් එය අයිකනය සොයාගත නොහැකි නම් ඔබ එය සෙවීමට උත්සාහ කළහොත් සමහර විට ඔබ එය විධාන විමසුමෙන් ක්‍රියාත්මක කිරීමට උත්සාහ කරයි. මම හිතන්නේ නැහැ ඔබ රෙජිස්ට්රි එකෙන් පටන් ගන්නවා කියලා.
සූර්යග්‍රහණය

6
පිළිගත් පිළිතුරෙහි දැක්වෙන්නේ "... $ Host.Version සහ (Get-Host). අනුවාදය විශ්වාසදායක නොවේ - ඒවා පිළිබිඹු කරන්නේ ධාරකයේ අනුවාදය මිස එන්ජිම නොවේ" .
පීටර් මෝර්ටෙන්සන්

21

පවර්ෂෙල් ස්ථාපනය කර ඇත්දැයි පරීක්ෂා කිරීම සහ ස්ථාපිත අනුවාදය තීරණය කිරීම සඳහා මයික්‍රොසොෆ්ට් විසින් නිර්දේශිත ඉදිරි අනුකූලතා ක්‍රමය වන්නේ නිශ්චිත රෙජිස්ට්‍රි යතුරු දෙකක් බැලීමයි. සබැඳිය කැඩී ගියහොත් මම මෙහි විස්තර ප්‍රතිනිෂ්පාදනය කර ඇත්තෙමි.

සම්බන්ධිත පිටුවට අනුව:

වෙනත් ඕනෑම රෙජිස්ට්‍රි යතුරක් හෝ පවර්ෂෙල්.එක්ස් හි අනුවාදයක් හෝ පවර්ෂෙල්.එක්ස් හි පිහිටීම මත පදනම්ව දිගු කාලීනව වැඩ කිරීමට සහතික නොවේ.

නම්, පරීක්ෂා කිරීමට ඕනෑම අනුවාදයක PowerShell ස්ථාපිත වේ, ලේඛන පහත සඳහන් අගය සඳහා පරීක්ෂා:

  • ප්‍රධාන ස්ථානය: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • අගය නම: ස්ථාපනය කරන්න
  • අගය වර්ගය: REG_DWORD
  • අගය දත්ත: 0x00000001 (1

පරීක්ෂා කිරීමට අනුවාදය 1.0 හෝ 2.0 යන්න PowerShell ස්ථාපිත වේ, ලේඛන පහත සඳහන් අගය සඳහා පරීක්ෂා:

  • ප්‍රධාන ස්ථානය: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • අගය නම: පවර්ෂෙල්වර්ෂන්
  • අගය වර්ගය: REG_SZ
  • අගය දත්ත: <1.0 | 2.0>

5
පවර්ෂෙල් 3.0 සඳහා, HKEY_LOCAL_MACHINE \ මෘදුකාංග \ මයික්‍රොසොෆ්ට් \ පවර්ෂෙල් \ 3 නව එකක් ඇති බව පෙනේ .
පීටර් මෝර්ටෙන්සන්

11

ස්ථාපනය කර ඇත්දැයි පරීක්ෂා කිරීමට පහසුම ක්‍රමය මම සොයාගත්තේ:

  • විධාන විමසුමක් ධාවනය කරන්න (ආරම්භ කරන්න, ධාවනය කරන්න cmd, පසුව හරි)
  • ටයිප් කර powershellනැවත පහර දෙන්න. එවිට ඔබට පවර්ෂෙල් PSවිමසුම ලබා ගත යුතුය :

C:\Users\MyUser>powershell

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Users\MyUser>

ටයිප් කිරීමෙන් ඔබට පවර්ෂෙල් විමසුමේ අනුවාදය පරීක්ෂා කළ හැකිය $PSVersionTable.PSVersion:

PS C:\Users\MyUser> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

PS C:\Users\MyUser>

exitඔබට නැවත විධාන විමසුමට යාමට අවශ්‍ය නම් ටයිප් කරන්න ( exitනැවතත් ඔබට විධාන විමසුම වසා දැමීමට අවශ්‍ය නම්).

ස්ක්‍රිප්ට් ධාවනය කිරීමට, http://ss64.com/ps/syntax-run.html බලන්න .


3
පිළිගත් පිළිතුරට මෙන් මෙය පවර්ෂෙල් 1.0 සඳහා කිසිවක් ලබා නොදේ. රෙජිස්ට්රි ක්‍රමය වඩාත් පැහැදිලිය.
පීටර් මෝර්ටෙන්සන්

4
පවර්ෂෙල් මාර්ගයෙහි නොතිබුනේ නම්, මෙම අනුවාදය එය ස්ථාපනය කර නොමැති බවට ව්‍යාජ හැඟීමක් ලබා දෙනු ඇත. රෙජිස්ට්රි ක්රමය සම්පූර්ණ තොරතුරු ලබා දෙයි. පැවැත්ම සහ අනුවාදය.
Xalrous

9

$host.versionසරල වැරදි / විශ්වාස කළ නොහැකි ය. මෙය ඔබට සත්කාරක ක්‍රියාත්මක කළ හැකි අනුවාදය (powerhell.exe, powergui.exe, powerhell_ise.exe, powerhellplus.exe යනාදිය) ලබා දෙන අතර එන්ජිමේම අනුවාදය නොවේ .

එන්ජින් අනුවාදය අඩංගු වේ $psversiontable.psversion. පවර්ෂෙල් 1.0 සඳහා, මෙම විචල්‍යය නොපවතී, එබැවින් පැහැදිලිවම මෙම විචල්‍යය නොමැති නම් එන්ජිම 1.0 යැයි උපකල්පනය කිරීම සම්පූර්ණයෙන්ම ආරක්ෂිත වේ.


9

භාවිත:

$psVersion = $PSVersionTable.PSVersion
If ($psVersion)
{
    #PowerShell Version Mapping
    $psVersionMappings = @()
    $psVersionMappings += New-Object PSObject -Property @{Name='5.1.14393.0';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows 10 Anniversary Update'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.1.14300.1000';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows Server 2016 Technical Preview 5'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.494';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3172985 1607'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.122';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3140743 1603'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.117';FriendlyName='Windows PowerShell 5 RTM 1602';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.63';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3135173 1602'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.51';FriendlyName='Windows PowerShell 5 RTM 1512';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10514.6';FriendlyName='Windows PowerShell 5 Production Preview 1508';ApplicableOS='Windows Server 2012 R2'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10018.0';FriendlyName='Windows PowerShell 5 Preview 1502';ApplicableOS='Windows Server 2012 R2'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.9883.0';FriendlyName='Windows PowerShell 5 Preview November 2014';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows 8.1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='4.0';FriendlyName='Windows PowerShell 4 RTM';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='3.0';FriendlyName='Windows PowerShell 3 RTM';ApplicableOS='Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='2.0';FriendlyName='Windows PowerShell 2 RTM';ApplicableOS='Windows Server 2008 R2 SP1 and Windows 7'}
    foreach ($psVersionMapping in $psVersionMappings)
    {
        If ($psVersion -ge $psVersionMapping.Name) {
            @{CurrentVersion=$psVersion;FriendlyName=$psVersionMapping.FriendlyName;ApplicableOS=$psVersionMapping.ApplicableOS}
            Break
        }
    }
}
Else{
    @{CurrentVersion='1.0';FriendlyName='Windows PowerShell 1 RTM';ApplicableOS='Windows Server 2008, Windows Server 2003, Windows Vista, Windows XP'}
}

ස්ථාපිත පවර්ෂෙල් අනුවාදය තීරණය කරන්නේ කෙසේද යන්නෙන් ඔබට සවිස්තරාත්මක පිටපත බාගත කළ හැකිය .


8

මෙම පිටුව අමතක කර එය වෙත නැවත නොයාමට ඇති පහසුම ක්‍රමය නම් Get-Variable:

Get-Variable | where {$_.Name -Like '*version*'} | %{$_[0].Value}

සෑම විචල්යයක්ම මතක තබා ගැනීමේ අවශ්යතාවයක් නොමැත. පමණක් Get-Variableප්‍රමාණවත් (සහ "අනුවාදය ගැන යමක් තිබිය යුතුය").


8
එය සමානයි$PSVersionTable
orad

6
PS අනුවාදය සොයනවාද? $ PSVersion [tab] [enter] ටයිප් කරන්න. සිදු විය. කිසිවක් මතක තබා ගැනීමට අවශ්‍ය නැත :)
orad

1
මෙය සැබවින්ම ප්‍රයෝජනවත් වන්නේ යමෙකු භාවිතා කරන නල උපක්‍රම පිළිබඳව හුරුපුරුදු නම් පමණි. ආරම්භකයකුට මතක තබා ගැනීමට වඩා එම සින්ටැක්ස් පහසු බව මතක තබා ගත නොහැක $ PSVersionTable
Joseph Gabriel

1
යාලුවනේ, Get-Variable තනිවම ක්‍රියා කරයි (ඔබට අවශ්‍ය සියල්ලම අනුවාදය ලබා ගැනීමට නම්), පයිප්ප දැමීම විහිළුවක් පමණි :) පයිප්ප සින්ටැක්ස් ද මට මතක නැත.
රෝමන් පොක්‍රොව්ස්කිජ්

7

පවර්ෂෙල් ස්ථාපනය කර ඇත්දැයි පරීක්ෂා කිරීමට භාවිතා කරන්න:

HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )

RC2 හෝ RTM ස්ථාපනය කර ඇත්දැයි පරීක්ෂා කිරීමට භාවිතා කරන්න:

HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM

මුලාශ්‍රය: මෙම වෙබ් අඩවිය .


7

වඩාත්ම ප්‍රයෝජනවත් පිළිතුර පවතින්නේ නම් කොටස ආමන්ත්‍රණය නොකළ හෙයින් , ඉක්මන් හා අපිරිසිදු විසඳුමක් හරහා එය ලබා ගැනීමට මම සිතුවෙමි. එය රඳා පවතින්නේ ඔබට අවශ්‍ය දේ විය හැකි මාර්ග පරිසර විචල්‍යයේ පවර්ෂෙල් වීමයි . (මා නොදැන සිටි පරිදි ඉහළ පිළිතුරට තොප්පි ඉඟිය.) මෙය පෙළ ගොනුවකට අලවා එය නම් කරන්න

පවර්ෂෙල් අනුවාදය cmd පරීක්ෂා කරන්න

හෝ ඊට සමාන ය.

@echo off
echo Checking powershell version...
del "%temp%\PSVers.txt" 2>nul
powershell -command "[string]$PSVersionTable.PSVersion.Major +'.'+ [string]$PSVersionTable.PSVersion.Minor | Out-File ([string](cat env:\temp) + '\PSVers.txt')" 2>nul
if errorlevel 1 (
 echo Powershell is not installed. Please install it from download.Microsoft.com; thanks.
) else (
 echo You have installed Powershell version:
 type "%temp%\PSVers.txt"
 del "%temp%\PSVers.txt" 2>nul
)
timeout 15

4

මට අවශ්‍ය වූයේ පවර්ෂෙල් හි අනුවාදය පරීක්ෂා කර සුදුසු කේතය ධාවනය කිරීමයි. අපගේ සමහර සේවාදායකයන් v5 ධාවනය වන අතර අනෙක් ඒවා v4 වේ. මෙයින් අදහස් කරන්නේ සම්පීඩනය වැනි සමහර කාර්යයන් ලබා ගත හැකි හෝ නොතිබිය හැකි බවයි.

මෙය මගේ විසඳුමයි:

if ($PSVersionTable.PSVersion.Major -eq 5) {
    #Execute code available in PowerShell 5, like Compress
    Write-Host "You are running PowerShell version 5"
}
else {
    #Use a different process
    Write-Host "This is version $PSVersionTable.PSVersion.Major"
}


2

"Batch file get powerhell version" සඳහා වන ඉහළම සෙවුම් ප්‍රති result ලය මෙයයි, එබැවින් පවර්ෂෙල් අනුවාදය මත පදනම්ව කණ්ඩායම් ගොනුවක කොන්දේසි සහිත ප්‍රවාහයක් කරන්නේ කෙසේද යන්න පිළිබඳ මූලික උදාහරණයක් සැපයීමට මම කැමතියි.

සාමාන්‍ය උදාහරණය

powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
    echo Do some fancy stuff that only powershell v5 or higher supports
) else (
    echo Functionality not support by current powershell version.
)

සැබෑ ලෝක උදාහරණය

powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
    rem Unzip archive automatically
    powershell Expand-Archive Compressed.zip
) else (
    rem Make the user unzip, because lazy
    echo Please unzip Compressed.zip prior to continuing...
    pause
)

0

ඔබට PowerShell විධාන රේඛාවෙන් "host" විධානය ඇමතිය හැකිය. එය ඔබට $hostවිචල්යයේ වටිනාකම ලබා දිය යුතුය .


3
මෙය අර්ධ වැරදිය. hostවෙත විසඳයි Get-Host. කෙසේ වෙතත්, එය අනුවාදය ලබා ගැනීම සඳහා විශ්වාසදායක ක්රමයක් නොවේ.
මැක්සිමිලියන් බර්ස්ලි

0

පවර්ෂෙල් අනුවාදය තීරණය කළ හැකි කුඩා කණ්ඩායම් පිටපතක් මම සාදා ඇත:

@echo off
for /f "tokens=2 delims=:" %%a in ('powershell -Command Get-Host ^| findstr /c:Version') do (echo %%a)

මෙය හුදෙක් පවර්ෂෙල් අනුවාදය උපුටා ගෙන නූල Get-HostසොයයිVersion

අනුවාදය සමඟ රේඛාව සොයාගත් විට, එය forඅනුවාදය උපුටා ගැනීම සඳහා විධානය භාවිතා කරයි . මෙම අවස්ථාවේ දී අපි කියන්නේ පරිසීමකය මහා බඩවැලක් වන අතර පළමු මහා බඩවැලේ ඊළඟට සොයන්න, එහි ප්‍රති my ලය මගේ නඩුවයි 5.1.18362.752.


-1

තෝරාගත් ක්‍රියාකරුවෙකු සමඟ පිළිතුර දිගු කිරීම:

Get-Host | select {$_.Version}

7
පිළිගත් පිළිතුරෙහි දැක්වෙන්නේ "... $ Host.Version සහ (Get-Host). අනුවාදය විශ්වාසදායක නොවේ - ඒවා පිළිබිඹු කරන්නේ ධාරකයේ අනුවාදය මිස එන්ජිම නොවේ" .
පීටර් මෝර්ටෙන්සන්

EtPeterMortensen මගේ පිළිතුර පිළිගත් පිළිතුරට පෙර තිබූ බවක් පෙනේ
HaBo

2
AHaBo ඔබ බලන්නේ කුමක් ද? පිළිගත් පිළිතුර 2009 සිට ය.
ටයිලර් එච්

Y ටයිලර් එච් ඉතින් මොකක්ද? මම ඔබේ ප්‍රශ්නය අනුගමනය නොකරමි. මගේ පිළිතුර පැහැදිලිවම පවසන්නේ එය පිළිගත් පිළිතුරට දිගුවක් බවයි. එය සරල කළ අනුවාදයකි.
HaBo

2
@HaBo ඔබගේ පෙර ප්‍රකාශය කියැවෙන්නේ ඔබ පිළිගත් පිළිතුරට පෙර එය පළ කර තිබීම නිසා ඔබේ පිළිතුර සාධාරණීකරණය කරන බවයි, එය කිසිසේත් නොවේ. ඔබගේ පිළිතුර පළ කරන ලද්දේ පිළිගත් පිළිතුරෙන් වසර 7 කට පසුව වන අතර, පිළිතුරෙන් වසර 6 කට පසුව ඔබේ පිළිතුර සැබවින්ම 'දිගු වේ'; ඒ ගැන කථා කරන විට, එය පිළිගත් පිළිතුරේ දිගුවක් බව ඔබේ පිළිතුර පැහැදිලිව නොකියයි (එය පවා භාවිතා නොකරයි Get-Host).
ටයිලර් එච්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.