এই আর্টিকেলে আমরা জানব কোন কোন PowerShell ভার্সনগুলো আছে, Windows PowerShell এবং PowerShell Core-এর মধ্যে পার্থক্য কী, এবং লোকাল বা রিমোট কম্পিউটারে ইনস্টল করা PowerShell ভার্সন কীভাবে চেক করতে হয়।
Windows PowerShell এবং PowerShell Core-এর ইতিহাস এবং ভার্সন
PowerShell ডিফল্টভাবে Windows 7 SP1 এবং Windows Server 2008 R2 SP1 থেকে সব Windows ভার্সনে ইনস্টল করা থাকে। নিচের টেবিলে সব PowerShell ভার্সনের তালিকা দেওয়া হলো:
| PS Version | নোট |
| PowerShell 1.0 | Windows Server 2003 SP1 এবং Windows XP-এ ম্যানুয়ালি ইনস্টল করা যায় |
| PowerShell 2.0 | Windows Server 2008 R2 এবং Windows 7 |
| PowerShell 3.0 | Windows 8 এবং Windows Server 2012 |
| PowerShell 4.0 | Windows 8.1 এবং Windows Server 2012 R2 |
| PowerShell 5.0 | Windows 10 RTM-এ প্রি-ইনস্টলড এবং Windows Update দিয়ে অটোমেটিক্যালি 5.1-এ আপডেট হয় |
| PowerShell 5.1 | Windows 10-এ বিল্ট-ইন (Build 1709 থেকে) এবং Windows Server 2016 |
| PowerShell Core 6.0 এবং 6.1 | নেক্সট ক্রস-প্ল্যাটফর্ম PowerShell ভার্সন (.NET Core-ভিত্তিক) যা সব সাপোর্টেড Windows ভার্সনে এবং MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE-এ ইনস্টল করা যায় |
| PowerShell Core 7.0 | লেটেস্ট PowerShell ভার্সন (March 2020-এ রিলিজ, .NET Core 3.1 ব্যবহার করা হয়েছে .NET Core 2.x-এর বদলে) |
পূর্বের Windows ভার্সনে ম্যানুয়ালি nieu PowerShell ভার্সন ইনস্টল করা যায়। এর জন্য উপযুক্ত ভার্সনের Windows Management Framework ডাউনলোড ও ইনস্টল করুন (PowerShell এর একটি অংশ)।
উল্লেখ্য যে গত ২ বছরে Microsoft ক্লাসিক Windows PowerShell-এর ডেভেলপমেন্ট বন্ধ রেখেছে (শুধু বাগ ফিক্স এবং সিকিউরিটি আপডেট রিলিজ হয়) এবং ওপেন-সোর্স ক্রস-প্ল্যাটফর্ম PowerShell Core-এ ফোকাস করছে।
Windows PowerShell এবং PowerShell Core-এর পার্থক্য কী?
- Windows PowerShell .NET Framework-ভিত্তিক (উদাহরণস্বরূপ, PowerShell 5-এর জন্য .NET Framework v4.5 প্রয়োজন, নিশ্চিত করুন যে এটি ইনস্টল করা আছে)। PowerShell Core .Net Core-ভিত্তিক;
- Windows PowerShell শুধু Windows অপারেটিং সিস্টেমে কাজ করে, তবে PowerShell Core ক্রস-প্ল্যাটফর্ম এবং Linux-এও কাজ করতে পারে;
- PowerShell Core Windows PowerShell-এর সাথে পুরোপুরি কম্প্যাটিবল নয়, তবে Microsoft পurar ভের্সনল PS কমান্ডলেট এবং স্ক্রিপ্টের সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি উন্নত করতে কাজ করছে (পুরনো PS1 স্ক্রিপ্ট PowerShell Core-এ মাইগ্রেট করার আগে টেস্ট করা সুপারিশ করা হয়)। PowerShell Core 7 Windows PowerShell-এর সাথে সর্বোচ্চ কম্প্যাটিবিলিটি প্রদান করে;
- PowerShell Core স্ক্রিপ্ট এডিট করতে PowerShell ISE Editor ব্যবহার করা যায় না (তবে Visual Studio Code ব্যবহার করা যায়);
- যেহেতু Windows PowerShell আর ডেভেলপ হচ্ছে না, PowerShell Core-এ মাইগ্রেট শুরু করার পরামর্শ দেওয়া হয়।
কনসোল থেকে PowerShell ভার্সন কীভাবে জানবেন?
আপনার কম্পিউটারে কোন PowerShell ভার্সন ইনস্টল করা আছে সেটা জানার সবচেয়ে সহজ উপায় হলো এই কমান্ড ব্যবহার করা:
host
Version প্রপার্টির মান চেক করুন।
নিচের স্ক্রিনশট Windows 10-এ लिये গেছে যেখানে ডিফল্টভাবে PowerShell 5.1 ইনস্টল করা থাকে, Windows Server 2016-এ যেভাবে।

অথবা
$PSVersionTable
শুধু PowerShell ভার্সন ভ্যালু পেতে:
$PSVersionTable.PSVersion.major
(এই উদাহরণে ক্লিন Windows Server 2008 R2-এ PSVersion 2.0 পাওয়া গেল)

$PSVersionTable কমান্ড সঠিকভাবে PowerShell Core-এ বিভিন্ন অপারেটিং সিস্টেমে কাজ করে।
রেজিস্ট্রি 통해서ও ইনস্টল করা PowerShell ভার্সন জানা যায়। রেজিস্ট্রি কী HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine-এ PowerShellVersion প্যারামিটারের মান Get-ItemProperty কমান্ডলেট দিয়ে পান:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

উপরের মেথড Windows Server 2012/Windows 8 বা nieu ভার্সনে কাজ করে।
Windows Server 2008 R2/Windows 7-এ অন্য রেজিস্ট্রি কী থেকে রেজিস্ট্রি প্যারামিটারের মান পাওয়া যায়:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

ইনস্টল করা PowerShell Core ভার্সন জানতে নিচের কমান্ড ব্যবহার করুন:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions* -Name 'SemanticVersion').SemanticVersion
রিমোট কম্পিউটারে PowerShell ভার্সন চেক করা
রিমোট হোস্টে PowerShell ভার্সন চেক করতে $PSVersionTable এনভায়রনমেন্ট ভেরিয়েবলের মান বা রেজিস্ট্রি থেকে সরাসরি ইনফরমেশন নিন। অন্যান্য মেথড ভুল ডেটা রিটার্ন করতে পারে।
PowerShell Remoting ব্যবহার করে Invoke-Command কমান্ডলেট দিয়ে রিমোট কম্পিউটারে ইনস্টল করা PowerShell ভার্সন পাওয়া যায়:
Invoke-Command -ComputerName mun-dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred

Major Minor Build Revision PSComputerName ----- ----- ----- -------- -------------- 5 1 14393 3383 mun-dc01
টেক্সট ফাইল হিসেবে স্পেসিফাই করা রিমোট কম্পিউটার তালিকা ব্যবহার করে একাধিক কম্পিউটারে ইনস্টল করা PowerShell ভার্সন পাওয়া যায়:
Invoke-Command -ComputerName (Get-Content C:\PS\host_list.txt) -
ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}
অথবা Get-ADComputer দিয়ে ডোমেন কম্পিউটার তালিকা নিয়ে রিমোটলি সেগুলোর PowerShell ভার্সন চেক করুন:
$adcomputer=(Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase 'OU=servers,OU=Munich,dc=woshub,dc=com' ).Name
Invoke-Command -ComputerName $adcomputer -Scriptblock{$PSVersionTable.psversion} -ErrorAction SilentlyContinue
যদি আপনার PowerShell স্ক্রিপ্ট কোনো স্পেসিফিক PS ভার্সনের ফিচার ব্যবহার করে, তবে আপনি আপনার স্ক্রিপ্টকে অন্য PowerShell ভার্সনে স্যুইচ করতে ফোর্স করতে পারেন। উদাহরণস্বরূপ, PowerShell v3 মোডে কনসোল চালানোর জন্য (.Net Framework 3.5 ইনস্টল করা থাকতে হবে):
PowerShell.exe -version 3
আপনার স্ক্রিপ্ট নির্দিষ্ট PS ভার্সনের কমান্ডলেট বা ফিচার ব্যবহার করলে আপনার PowerShell ভার্সন জানা গুরুত্বপূর্ণ হতে পারে। স্ক্রিপ্টে ইনস্টল করা PowerShell ভার্সন ডিটেক্ট করে সেটি বেসড করে কমান্ডলেট ব্যবহার করতে চাইলে নিচের PS স্ক্রিপ্ট চালান:
$ps_version = $PSVersionTable.PSVersion.major
if ( $ps_version -eq "2" )
{
write "You are using Powershell 2.0"
}
elseif ( $ps_version -eq "5" )
{
write " You are using Powershell 5"
}
পরবর্তী আর্টিকেলে আমরা Windows-এ PowerShell ভার্সন আপডেট করার পদ্ধতি দেখব।