ইনস্টল করা পাওয়ারশেল সংস্করণ নির্ধারণ করুন


2631

কম্পিউটারে পাওয়ারশেলের কোন সংস্করণ ইনস্টল করা আছে এবং এটি আদৌ ইনস্টল করা থাকলে কীভাবে আমি তা নির্ধারণ করতে পারি?

উত্তর:


3582

$PSVersionTable.PSVersionইঞ্জিন সংস্করণ নির্ধারণ করতে ব্যবহার করুন । যদি ভেরিয়েবলটি বিদ্যমান না থাকে তবে ইঞ্জিনটি সংস্করণ হিসাবে ধরে নেওয়া নিরাপদ 1.0

নোট করুন $Host.Versionএবং (Get-Host).Versionনির্ভরযোগ্য নয় - তারা কেবল ইঞ্জিন নয়, হোস্টের সংস্করণ প্রতিফলিত করে। পাওয়ারজিইউআই, পাওয়ারশেলপিএলএস ইত্যাদি সমস্ত হোস্টিং অ্যাপ্লিকেশন এবং তারা তাদের পণ্যের সংস্করণটি প্রতিফলিত করার জন্য হোস্টের সংস্করণ সেট করবে - যা সম্পূর্ণ সঠিক, তবে আপনি যা খুঁজছেন তা নয়।

PS C:\> $PSVersionTable.PSVersion

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

2
@ ড্যানিয়েলক্যাসিডি - পার্টিতে দু'বছর দেরী হয়েছে, তবে "কিছু বৈশিষ্ট্য অনাদায়ীভাবে অনুপলব্ধ" কারণ পুরো জিনিসটির পরিবর্তে নেট .৩.২ কমপ্যাক্ট ফ্রেমওয়ার্ক ইনস্টল করার কারণে হতে পারে।
ডেভ নীলি

83
$PSVersionTableআরও নির্ভরযোগ্য এবং ফেরত দেয় $ PSVersion। আপনি ব্যবহার করতে পারেন $PSVersionTable.PSVersion। এমনকি যদি আপনি বিভিন্ন সংস্করণ ( invoke-command -computername myRemotePC -Credential foo {$host}) চালিত মেশিনের সাথে দূরবর্তীভাবে সংযুক্ত থাকেন তবে দেখে মনে হচ্ছে $hostকেবল সিরিয়ালাইজেশনের জন্য তারা স্বীকৃত সর্বনিম্ন সংস্করণটি দেখায় । যখন $PSVersionTableসত্য সংস্করণ প্রদর্শিত হবে। আশা করি এটি কাউকে সাহায্য করবে ..
ভলকান রাভেন

16
মনে হয় $ হোস্ট. ভার্সনটি ভাল পছন্দ নয় ... আপনি যদি পাওয়ারশেল 3 চালিত কোনও মেশিনে রিমোট করে থাকেন তবে রিমোটিংহস্টটি v1 বলে মনে হচ্ছে বলে আপনি 1.0 ফিরে পাবেন। $ PSVersionTable ব্যবহার করে সঠিকভাবে ফিরে আসে।
ড্যানি টুপেনি

25
@ স্টারফিশ কমান্ড প্রম্পট ব্যবহার করে প্রদর্শিত কমান্ড পাওয়ারশেল প্রবর্তন করবে। ইনস্টলড না থাকলে কি কমান্ডটি "পাওয়ারশেল পাওয়া যায়নি" দিয়ে ত্রুটিযুক্ত হবে না?
jpmc26

9
এর জন্য এখানে ফিরে আসতে এত ক্লান্ত যে আমি কেবল দৌড়ে এসে তাতে notepad $profileফেলে দিয়েছি function psver { $PSVersionTable; $PSVersionTable.PSVersion }। একটি পুনরায় লোড করুন . $profileএবং আমি psverবিশদ সংস্করণ তথ্য এবং অন্যান্য বিবরণ পেতে কেবল যে কোনও সময় টাইপ করতে পারি ।
ADTC

432

আমি হয় গেট-হোস্ট বা V PSVersionTable ব্যবহার করব । অ্যান্ডি স্নাইডার যেমন উল্লেখ করেছেন, $PSVersionTableসংস্করণ 1-এ কাজ করে না; এটি সংস্করণ 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
ধন্যবাদ! এনবি: আমার এক্সপিতে যেখানে আমি ম্যানুয়ালি ভি 1 পাওয়ারশেল থেকে আপগ্রেড করেছি, আসল ফোল্ডার এবং রেজিস্ট্রি পাথগুলি (বিভ্রান্তিকরভাবে ?!) রেফারেন্স v1 নয় ভি 2। এটি এখানে অন্যরা যেমন নির্দিষ্ট করে তবে এটিই আমি ইনস্টল করেছিলাম কিনা তা নিয়ে আমি এতটা উদ্বিগ্ন ছিল। আমার পথ; সি:
I উইন্ডোস

4
যদি vers psversiontable বিদ্যমান না থাকে তবে আপনি v1.0 এ আছেন তা ধরে রাখা সম্পূর্ণরূপে নিরাপদ - এবং ওহে প্রেস্টো, এটি আপনার প্রশ্নেরও উত্তর দেয়। $host.versionনির্ভরযোগ্য নয় - উদাহরণস্বরূপ পাওয়ারগুইতে, এটি পাওয়ারগুই হোস্ট সংস্করণ প্রদান করে যা পাওয়ারশেল ইঞ্জিন সংস্করণের মতো নয় (যা পছন্দসই))
x0n

10
গৃহীত উত্তরে বলা হয়েছে "... $ হোস্ট. ভার্সন এবং (গেট-হোস্ট)। সংস্করণ নির্ভরযোগ্য নয় - এগুলি কেবল ইঞ্জিন নয়, হোস্টের সংস্করণকে প্রতিবিম্বিত করে"
পিটার মর্টেনসেন

99

আপনি বিল্ট ইন ভেরিয়েবলটি দেখতে পারেন $psversiontable,। যদি এটি বিদ্যমান না থাকে, আপনার ভি 1 আছে। যদি এটি বিদ্যমান থাকে তবে এটি আপনাকে আপনার প্রয়োজনীয় সমস্ত তথ্য দেবে।

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    

96

পাওয়ারশেল ইনস্টল করা আছে কিনা তা নির্ধারণ করতে, আপনি অস্তিত্বের জন্য রেজিস্ট্রিটি পরীক্ষা করতে পারেন

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 স্ক্রিপ্ট থেকে ইনস্টল করা পাওয়ারশেলের যে সংস্করণটি নির্ধারণ করা যায়, আপনি নিচের এক-লাইনারটি ব্যবহার করতে পারেন, পাওয়ারশেল ডটকমের বিবরণে কোন পাওয়ারশেল সংস্করণ আমি চালাচ্ছি

$isV2 = test-path variable:\psversiontable

একই সাইটটি সংস্করণটি ফেরত দেওয়ার জন্য একটি ফাংশন দেয়:

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

4
দরকারী কারণ একটি উইন্ডোজ 2003 সার্ভারে আমি পাওয়ারশেলের জন্য স্টার্ট মেনু এন্ট্রিটি দেখতে পেলাম না (এটি ছিল তবে সুস্পষ্ট নয়) তবে রেজিস্ট্রি কী আমার প্রশ্নের উত্তর দিয়েছে।
হলিস্টিক বিকাশকারী

7
পাওয়ারস্ক্রিপ্ট ৩.০-এর জন্য একটি নতুন এন্ট্রি রয়েছে বলে মনে হচ্ছে, HKEY_LOCAL_MACHINE OF সফটওয়্যার \ মাইক্রোসফ্ট \ পাওয়ারশেল \ 3 ( HKEY_LOCAL_MACHINE OF সফটওয়্যার \ মাইক্রোসফ্ট \ পাওয়ারশেল \ 1 )। সংস্করণটি পাওয়ার ক্ষেত্রে এই ক্ষেত্রে যথাযথ জায়গা হ'ল HKEY_LOCAL_MACHINE T সফটওয়্যার \ মাইক্রোসফ্ট S পাওয়ারশেল \ 3 S পাওয়ারশেলজাইন \ পাওয়ারশেল ভার্শন (নমুনার মান "3.0") বলে মনে হচ্ছে।
পিটার মর্টেনসেন

47

আপনি কেবলমাত্র কমান্ড প্রম্পট থেকে যেমন বাহ্যিকভাবে পাওয়ারশেলের সাহায্যে এক লাইনের সাহায্যে সংস্করণটি পরীক্ষা করতে পারেন

powershell -Command "$PSVersionTable.PSVersion"

মতে @psaul আপনি করতে পারেন আসলে মাত্র একটি কমান্ড যে যেখানে এটি এসেছিলেন (সিএমডি, PowerShell বা Pwsh) থেকে অজ্ঞেয়বাদী আছে। এটার জন্য ধন্যবাদ.

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

আমি পরীক্ষা করেছি এবং এটি সিএমডি এবং পাওয়ারশেল উভয় ক্ষেত্রে নির্বিঘ্নে কাজ করেছে।

ভাবমূর্তি


এই চেষ্টাটির সাথে আমি এই ভয়াবহ ত্রুটি পেয়েছি: "সিস্টেম.কলেশনস.হ্যাশটেবল.পিএস ভার্সন: 'সিস্টেম.কলেশনস.হ্যাশটেবল.পিএস ভার্সন' শব্দটি একটি সেমিডলেট, ফাংশন, স্ক্রিপ্ট ফাইল বা অপারেবল প্রোগ্রামের নাম হিসাবে স্বীকৃত নয় Check নামের বানান, বা কোনও পথ অন্তর্ভুক্ত থাকলে, पथটি সঠিক কিনা তা যাচাই করুন এবং আবার চেষ্টা করুন। তাই সর্বদা কাজ করে না
গনমাটর

আমি খুশি যে আপনি চিহ্নিত করেছেন যেহেতু কোণার কেসগুলি জেনে রাখা ভাল তবে আমার ধারণা এটি এখনও বেশিরভাগ মানুষের পক্ষে কাজ করে।
প্যাট্রিক বার্ড

@ গনমাটর কেউ ভাববেন যে পাওয়ারশেল এই আদেশের সাথে একই আচরণ করবে, তবে দুর্ভাগ্যক্রমে এটি হয় না। আমি সিনট্যাক্সটি ঠিক রেখে চেষ্টা করেছি cmdএবং এর মধ্যে powershellকোনও ফল হয়নি n আমিও একই আচরণ আশা করতাম। :)
tresf

3
@ ট্রেসফ (এবং @ গনমেটার) আপনি এই পদক্ষেপটি সিএমডি, পাওয়ারশেল বা এমনকি পাউশ (পিএস .0.০) থেকে চালাতে পারেন তবে আপনাকে এই ফর্মটি ব্যবহার করতে হবে: পাওয়ারশেল-কম্যান্ড "(গেট-ভেরিয়েবল পিএস ভার্সন টেবিল-ভ্যালুঅনলি)। পিপিএস ভার্সন" (এটি হবে সমস্ত ক্ষেত্রে কাজ করুন)
পিএসএল

ম্যাকের উপরও পরীক্ষিত। pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion" দুর্দান্ত কাজ করে
tresf

37

আপনি নীচের চেকটি সম্পূর্ণ করে উইন্ডোজ পাওয়ারশেল সংস্করণ ইনস্টল করা যাচাই করতে পারেন:

  1. শুরু ক্লিক করুন, সমস্ত প্রোগ্রাম ক্লিক করুন, আনুষাঙ্গিকগুলি ক্লিক করুন, উইন্ডোজ পাওয়ারশেল ক্লিক করুন, এবং তারপরে উইন্ডোজ পাওয়ারশেল ক্লিক করুন।
  2. উইন্ডোজ পাওয়ারশেল কনসোলে, কমান্ড প্রম্পটে নিম্নলিখিত কমান্ডটি টাইপ করুন এবং তারপরে ENTER টিপুন:

    Get-Host | Select-Object Version

আপনি দেখতে পাবেন এমন আউটপুট দেখতে পাবেন:

Version
-------
3.0

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


1
আপনি ধরে নিচ্ছেন যে পাওয়ারশেলটি ডিফল্ট বিকল্পগুলির সাথে ইনস্টল করা হয়েছিল এবং শর্টকাটগুলি স্টার্ট মেনু থেকে সরানো হয়নি। রেজিস্ট্রি পরীক্ষা ব্যবহার করা ভাল।
জালোরাস

আমি মনে করি আপনি যদি পাওয়ারশেলটি প্রথমে এটি ইনস্টল করা উচিত হিসাবে চালিত করার চেষ্টা করেন তবে আপনি যদি আইকনটি এটি অনুসন্ধান করার চেষ্টা না করেন তবে সম্ভবত আপনি কমান্ড প্রম্পট থেকে এটি চালানোর চেষ্টা করছেন। আমি মনে করি না আপনি রেজিস্ট্রি থেকে শুরু করেন।
26-25

6
গৃহীত উত্তরে বলা হয়েছে "... $ হোস্ট. ভার্সন এবং (গেট-হোস্ট)। সংস্করণ নির্ভরযোগ্য নয় - এগুলি কেবল ইঞ্জিন নয়, হোস্টের সংস্করণকে প্রতিবিম্বিত করে"
পিটার মর্টেনসেন

21

মাইক্রোসফ্টের পাওয়ারশেল ইনস্টল করা আছে কিনা তা যাচাই করার জন্য মাইক্রোসফ্টের প্রস্তাবিত ফরোয়ার্ড সামঞ্জস্যপূর্ণ পদ্ধতি এবং ইনস্টলড সংস্করণ নির্ধারণের জন্য দুটি নির্দিষ্ট রেজিস্ট্রি কী দেখার প্রয়োজন। লিঙ্কটি ভেঙে যাওয়ার জন্য আমি এখানে বিশদটি পুনরুত্পাদন করেছি।

সংযুক্ত পৃষ্ঠা অনুসারে:

অন্য কোনও রেজিস্ট্রি কী (গুলি), বা পাওয়ারশেল.এক্সির সংস্করণ বা পাওয়ারশেল.এক্সির অবস্থানের উপর নির্ভর করে দীর্ঘমেয়াদে কাজ করার গ্যারান্টি নেই।

পাওয়ারশেলের কোনও সংস্করণ ইনস্টল করা আছে কিনা তা পরীক্ষা করতে নিবন্ধে নিচের মানটি পরীক্ষা করুন:

  • মূল অবস্থান: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • মান নাম: ইনস্টল
  • মান প্রকার: REG_DWORD
  • মান ডেটা: 0x00000001 (1

পাওয়ারশেলের 1.0 বা 2.0 সংস্করণ ইনস্টল করা আছে কিনা তা যাচাই করতে , রেজিস্ট্রিতে নিম্নলিখিত মানটি পরীক্ষা করুন:

  • মূল অবস্থান: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • মানটির নাম: পাওয়ারশেল ভার্সন
  • মান প্রকার: REG_SZ
  • মান ডেটা: <1.0 | 2.0>

5
পাওয়ারশেল 3.0.০ এর জন্য, একটি নতুন উপস্থিত রয়েছে, HKEY_LOCAL_MACHINE OF সফটওয়্যার \ মাইক্রোসফ্ট \ পাওয়ারশেল to 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 এর জন্য কোনও কিছুই ফেরায় না। রেজিস্ট্রি পদ্ধতি আরও স্পষ্ট।
পিটার মর্টেনসেন 0

4
পাওয়ারশেল যদি পথে না থাকে তবে এই সংস্করণটি একটি মিথ্যা ছাপ দেবে যে এটি ইনস্টল করা নেই। রেজিস্ট্রি পদ্ধতি সম্পূর্ণ তথ্য দেয়। উপস্থিতি এবং সংস্করণ।
জালরাস

9

$host.versionকেবল সাধারণ ভুল / বিশ্বাসযোগ্য নয়। এই আপনি হোস্টিং এক্সিকিউটেবল (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.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
পিএস সংস্করণ খুঁজছেন? টাইপ করুন $ PSVersion [ট্যাব] [এন্টার]। সম্পন্ন. কিছু মনে রাখার দরকার নেই :)
ওরাড

1
কেউ যদি ব্যবহৃত পাইপ ট্রিকগুলির সাথে খুব পরিচিত হয় তবে এটি সত্যই কার্যকর। কোনও শিক্ষানবিস যে কোনও উপায় মনে করতে সক্ষম হতে যাচ্ছে না যে কেবলমাত্র সেই সমস্ত সিনট্যাক্স কেবল স্মরণ রাখার চেয়ে সহজ $ PSVersionTable
জোসেফ গ্যাব্রিয়েল

1
ছেলেরা, গেট-ভেরিয়েবল একা ভাল কাজ করে (যদি আপনার কেবলমাত্র সংস্করণটি পেতে প্রয়োজন হয়), পাইপিংয়ে কেবল একটি রসিকতা আছে :) পাইপিং সিনট্যাক্সটি আমার মনে নেই।
রোমান পোক্রভস্কিজ

7

পাওয়ারশেল ইনস্টল রয়েছে কিনা তা পরীক্ষা করতে ব্যবহার করুন:

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

আরসি 2 বা আরটিএম ইনস্টল রয়েছে কিনা তা পরীক্ষা করতে ব্যবহার করুন:

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

যেহেতু সর্বাধিক সহায়ক উত্তরটি যদি উপস্থিত অংশটিকে সম্বোধন করে না, তাই আমি ভেবেছিলাম যে আমি একটি দ্রুত এবং মলিন সমাধানের মাধ্যমে এটি গ্রহণ করব। এটি পাওয়ারশেলের পথে পরিবেশের পরিবর্তনশীলটিতে নির্ভর করে যা সম্ভবত আপনি চান। (আমি জানতাম না বলে শীর্ষের উত্তরের টুপি টিপুন)) এটি কোনও পাঠ্য ফাইলে আটকে দিন এবং নাম দিন

পরীক্ষার পাওয়ারশেল Version.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"
}


1

এটি "ব্যাচের ফাইল পাওয়ারশেল সংস্করণ পান" এর শীর্ষ অনুসন্ধান ফলাফল, সুতরাং আমি পাওয়ার শেল সংস্করণের উপর নির্ভর করে একটি ব্যাচ ফাইলে শর্তাধীন প্রবাহ কীভাবে করব তার একটি মৌলিক উদাহরণ দিতে চাই I'd

জেনেরিক উদাহরণ

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

আপনি পাওয়ারশেল কমান্ডলাইন থেকে "হোস্ট" কমান্ড কল করতে পারেন। এটি আপনাকে $hostভেরিয়েবলের মান দিতে হবে ।


3
এটি আধা-ভুল। hostসমাধান করে Get-Host। নির্বিশেষে, সংস্করণটি পাওয়ার কোনও নির্ভরযোগ্য উপায় নয়।
ম্যাক্সিমিলিয়ান বার্সলে

-1

একটি নির্বাচিত অপারেটরের সাথে উত্তর প্রসারিত করা:

Get-Host | select {$_.Version}

7
গৃহীত উত্তরে বলা হয়েছে "... $ হোস্ট. ভার্সন এবং (গেট-হোস্ট)। সংস্করণ নির্ভরযোগ্য নয় - এগুলি কেবল ইঞ্জিন নয়, হোস্টের সংস্করণকে প্রতিবিম্বিত করে"
পিটার মর্টেনসেন

@ পিটারমোর্টেনসেন দেখে মনে হচ্ছে আমার উত্তরটি স্বীকৃত উত্তর হওয়ার আগেই হয়েছিল
হ্যাবো

2
@ হাবো আপনি কী দেখছেন? গৃহীত উত্তরটি ২০০৯ সালের
টাইলার এইচ

@ টাইলারহহ কী? আমি আপনার প্রশ্ন অনুসরণ করছি না। আমার উত্তর স্পষ্টভাবে এটি স্বীকৃত উত্তরের একটি বর্ধিতাংশ বলে। এটি একটি সরলীকৃত সংস্করণ।
হাবো

2
@ হাইবো আপনার আগের মন্তব্যে এমনটি পড়েছে যে আপনি গ্রহণযোগ্য উত্তরের আগে এটি পোস্ট করা হয়েছিল তা দ্বারা আপনার উত্তরকে ন্যায়সঙ্গত করছেন, যা মোটেও নয়। আপনার উত্তরটি স্বীকৃত উত্তরের 7 বছর পরে এবং উত্তরটির পরে 6 বছর পরে আপনার উত্তরটি আসলে 'প্রসারিত'; যার কথা বললে, আপনার উত্তর পরিষ্কারভাবে বলে না যে এটি গৃহীত উত্তরের একটি প্রসার (যা এমনকি ব্যবহার করে না Get-Host)।
টাইলার 14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.