কম্পিউটার টিউটোরিয়াল

PowerShell দিয়ে উইন্ডোজ প্রসেস ম্যানেজমেন্ট

পাওয়ারশেলে লোকাল বা রিমোট কম্পিউটারে প্রসেস ম্যানেজ করার অনেক ফিচার রয়েছে। পাওয়ারশেল ব্যবহার করে আপনি চলমান প্রসেসের তালিকা পেতে পারেন, হ্যাঙ্গ করা প্রসেস সাসপেন্ড করতে পারেন, উইন্ডো টাইটেল দিয়ে প্রসেস খুঁজে বের করতে পারেন, হিডেন বা ইন্টারেক্টিভ মোডে নতুন প্রসেস শুরু করতে পারেন, ইত্যাদি।

Windows 10-এ উপলব্ধ প্রসেস ম্যানেজমেন্ট কমান্ডলেটের তালিকা দেখতে:

Get-Command –Noun Process
  • Get-Process — চলমান উইন্ডোজ প্রসেসের তালিকা পাওয়া;
  • Start-Process — প্রসেস/প্রোগ্রাম শুরু করা;
  • Stop-Process — প্রসেস বাধ্য করে বন্ধ করা (kill);
  • Debug-Process — প্রসেস ডিবাগ করা;
  • Wait-Process — প্রসেস শেষ হওয়া পর্যন্ত অপেক্ষা করা।

Get-Process: চলমান প্রসেসের তালিকা পাওয়া

Get-Process কমান্ডলেট লোকাল কম্পিউটারে চলমান প্রসেসের তালিকা দেখায়।

ডিফল্টভাবে চলমান প্রসেসের এই প্রপার্টিগুলো দেখায়:

  • Handles — এই প্রসেস দ্বারা খোলা ইনপুট-আউটপुट ফাইল ডেসক্রিপ্টর (হ্যান্ডেল) সংখ্যা;
  • NPM(K) — নন-পেজড মেমরি (non-paged pool)। এটি প্রসেস ডেটার সাইজ (KB-এ) যা কখনো ডিস্কে পেজড হয় না;
  • PM(K) — প্রসেস মেমরির সাইজ যা পেজড হতে পারে;
  • WS(K) — প্রসেস দ্বারা ব্যবহৃত ফিজিক্যাল মেমরির সাইজ (KB-এ) (Working Set);
  • CPU(s) — প্রসেস দ্বারা ব্যবহৃত CPU টাইম (সকল CPU-এর টাইম গড়ে);
  • ID — ইউনিক প্রসেস আইডেন্টিফায়ার;
  • SI (Session ID) — প্রসেস সেশন আইডি (0 মানে সকল সেশনের জন্য, 1 — প্রথম লগঅন ইউজারের জন্য, 2 — দ্বিতীয় লগঅন ইউজারের জন্য, ইত্যাদি);
  • ProcessName

একাধিক প্রসেসের সকল প্রপার্টি লিস্ট করতে:

Get-Process cmd,excel,notep* | Format-List *

নির্দিষ্ট প্রসেস প্রপার্টি মাত্র দেখাতে, যেমন নাম (ProcessName), স্টার্ট টাইম (StartTime), প্রসেস উইন্ডো টাইটেল (MainWindowTitle), এক্সিকিউটেবল ফাইল নাম (Path) এবং ডেভেলপার নাম (Company):

Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company | ft

GUI-সহ চলমান ইউজার প্রসেসের তালিকা দেখাতে (ব্যাকগ্রাউন্ড ও সিস্টেম প্রসেস দেখাবে না):

Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle

IncludeUserName অপশন ব্যবহার করে প্রসেস শুরু করে ব্যবহারকারীর নাম (মালিক) দেখাতে পারেন:

Get-Process -Name winword -IncludeUserName

Where-Object ব্যবহার করে কিছু কритеরিয়া অনুযায়ী প্রসেস সিলেক্ট করতে পারেন। উদাহরণস্বরূপ, ৩০০ MB-র বেশি RAM ব্যবহার করে প্রসেসগুলো দেখান, মেমরি ব্যবহার অনুযায়ী ডিসেন্ডিং অর্ডারে সর্ট করুন এবং মেমরি সাইজ KB-র পরিবর্তে MB-এ দেখান:

Get-Process | where-object {$_.WorkingSet -GT 300000*1024} | select processname, @{l="Used RAM(MB)"; e={$_.workingset / 1mb}} | sort "Used RAM(MB)" –Descending

Get-Process কমান্ডলেটের CPU প্যারামিটারে নির্দিষ্ট প্রসেস দ্বারা ব্যবহৃত প্রসেসর টাইম সেকেন্ডে থাকে। প্রসেস দ্বারা ব্যবহৃত CPU পার্সেন্টেজ দেখাতে (Task Manager-এর মত), এই ফাংশন ব্যবহার করুন:

function Get-CPUUsagePercent
{
 $CPUPercent = @{
 Name = 'CPUPercent'
 Expression = {
 $TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
 [Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
 }
 }
 Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
}
Get-CPUUsagePercent

হ্যাঙ্গ করা প্রসেস (যে রেসপন্স দিচ্ছে না) খুঁজে বের করতে:

Get-Process | where-object {$_.Responding -eq $false}

Start-Process, Stop-Process: PowerShell দিয়ে প্রসেস শুরু বা বন্ধ করা

PowerShell ব্যবহার করে নতুন প্রসেস শুরু করতে:

Start-Process -FilePath notepad

যদি $env:path এনভায়রনমেন্ট ভেরিয়েবলে এক্সিকিউটেবল ফাইল না থাকে, ফুল পাথ দিন:

Start-Process -FilePath 'C:\distr\app.exe'

প্রোগ্রাম চালাতে আর্গুমেন্ট পাস করতে পারেন:

Start-Process -FilePath ping -ArgumentList "-n 10 10.1.56.21"

WindowStyle অপশন ব্যবহার করে প্রসেস উইন্ডো স্টার্ট মোড সেট করতে পারেন (normal, minimized, maximized, hidden)। উদাহরণস্বরূপ, প্রোগ্রাম ম্যাক্সিমাইজড উইন্ডোতে চালু করে প্রসেস শেষ হওয়া পর্যন্ত অপেক্ষা করতে:

Start-Process -FilePath tracert -ArgumentList "10.1.56.21" –wait -windowstyle Maximized

Stop-Process কমান্ডলেট ব্যবহার করে যেকোনো প্রসেস বন্ধ করতে পারেন। উদাহরণস্বরূপ, চলমান সব নোটপ্যাড প্রসেস বন্ধ করতে:

Stop-Process -Name notepad

ডিফল্টভাবে প্রসেস কিল করার আগে কনফার্মেশন চাইবে না। নির্দিষ্ট কRITEERIA মেলা সকল প্রসেস বন্ধ হবে। কনফার্মেশন সক্ষম করতে –Confirm অপশন যোগ করুন:

Stop-Process -Name notepad.exe -Confirm

এছাড়া এইভাবেও প্রসেস কিল করতে পারেন:

(Get-Process -Name cmd).Kill()

PowerShell থেকে উইন্ডোজ প্রসেস ম্যানেজারকে রেসপন্স না দেয়া সকল অ্যাপ বাধ্য করে বন্ধ করতে:

Get-Process | where-object {$_.Responding -eq $false} | Stop-Process

PowerShell ব্যবহার করে হ্যাঙ্গ বা বন্ধ হওয়া প্রসেস অটোমেটিক্যালি রিস্টার্ট করা যায়।

PowerShell ব্যবহার করে রিমোট কম্পিউটারে প্রসেস ম্যানেজ করা

Get-Process কমান্ডলেটের ComputerName অপশন ব্যবহার করে রিমোট কম্পিউটারে প্রসেস ম্যানেজ করা যায় (WinRM অবশ্যই সক্রিয় ও কনফিগার করা থাকতে হবে)।

Get-Process -ComputerName srv01, srv02, srv03 | Format-Table -Property ProcessName, ID, MachineName

আমরা রিমোট কম্পিউটারে প্রসেস ম্যানেজ করার জন্য বিল্ট-ইন Get-Process ফিচার ব্যবহার করলাম। রিমোট কম্পিউটারে প্রসেস ম্যানেজ করার পাওয়ারশেল রিমোটিং ফিচার (Invoke-Command এবং Enter-PSSession কমান্ডলেট) এখানে আলোচনা করা হয়নি।

রিমোট কম্পিউটারে প্রসেস কিল করতে চাইলে, মনে রাখবেন Stop-Process কমান্ডলেটে –ComputerName প্যারামিটার নেই। রিমোট কম্পিউটারে প্রসেস বন্ধ করতে নিচের পাওয়ারশেল কোড ব্যবহার করুন:

$RemoteProcess = Get-Process -Name cmd -ComputerName srv01
Stop-Process -InputObject $RemoteProcess
  1. উইন্ডোজ টাস্ক ম্যানেজারের ৫টি শক্তিশালী বিকল্প

  2. Windows PowerShell স্ক্রিপ্ট দিয়ে প্রোডাক্টিভিটি বাড়ান

  3. উইন্ডোজ ১১/১০-এ কোন প্রসেস অ্যাডমিন অধিকার দিয়ে চলছে কিনা তা কিভাবে জানবেন

  4. উইন্ডোজ ১০-এ পאוয়ারশেল ব্যবহার করে ইনস্টল্ড প্রোগ্রামের তালিকা তৈরি করুন