- শক্তির উৎস স্থায়িত্ব এবং উন্নত ক্রস-সেশন অনুসন্ধানের জন্য সেশন ইতিহাস এবং PSReadLine একত্রিত করে।
- Get/Invoke/Add/Clear-History, শর্টকাট (F7, F8, F9, Ctrl+R/S), এবং PSReadLine বিকল্পগুলির সাহায্যে PowerShell পরিচালনা করুন।
- সিএমডি ইতিহাস দেখার, রপ্তানি করার এবং আকার সামঞ্জস্য করার জন্য F7 এবং doskey অফার করে, যদিও এটি শুধুমাত্র প্রতি সেশনে।
- ৪৬৮৮/৪৬৮৯ ইভেন্টের সাথে অডিট করার মাধ্যমে আপনি সিস্টেম স্তরে প্রক্রিয়া এবং কমান্ড লাইন লগ করতে পারবেন।
ডকুমেন্টেশন করার সময়, কোনো কাজের পুনরাবৃত্তি করার সময় বা ভুল সংশোধন করার সময় কনসোলে আমরা যা টাইপ করেছি তা পর্যালোচনা করা অত্যন্ত মূল্যবান । উইন্ডোজ কমান্ড প্রম্পট (CMD) এবং পাওয়ারশেল উভয়ই ব্যবহার করে, এবং প্রতিটি কমান্ড হিস্ট্রি ভিন্নভাবে পরিচালনা করে। এর শর্টকাট, সার্চ অপশন, এক্সপোর্ট এবং ডিলিট করার মতো ফিচারগুলো আয়ত্ত করা জরুরি।
এই ব্যবহারিক ও বিস্তারিত নির্দেশিকায় আপনি শিখবেন, পাওয়ারশেল (PowerShell) এবং সিএমডি (CMD)-তে কীভাবে হিস্ট্রি দেখতে, অনুসন্ধান করতে, এক্সপোর্ট, ইম্পোর্ট এবং ডিলিট করতে হয়; পিএসরিডলাইন (PSReadLine)-এর পারসিস্টেন্ট হিস্ট্রি কীভাবে কাজ করে; ক্লিয়ার-হিস্ট্রি (Clear-History) কী কী প্যারামিটার প্রদান করে; কোন শর্টকাটগুলো আপনার কাজকে দ্রুততর করে; এবং ফরেনসিক লগের প্রয়োজন হলে ইভেন্ট ৪৬৮৮ ও ৪৬৮৯ ব্যবহার করে কীভাবে প্রসেস অডিট করতে হয়।
পাওয়ারশেল বনাম সিএমডি: তাদের ইতিহাস কীভাবে কাজ করে
হিস্টোরির ক্ষেত্রে পাওয়ারশেল এবং সিএমডি একই পর্যায়ের নয় । সিএমডি শুধুমাত্র সক্রিয় সেশন চলাকালীন কমান্ডগুলো সংরক্ষণ করে, অন্যদিকে পাওয়ারশেল তার অন্তর্নির্মিত সেশন হিস্টোরির সাথে PSReadLine মডিউল দ্বারা পরিচালিত একটি স্থায়ী হিস্টোরিকে একত্রিত করে।
পাওয়ারশেলের অন্তর্নির্মিত সেশন হিস্ট্রি পরিবর্তনশীল এবং কনসোল বন্ধ করলে তা মুছে যায়; এটি Get-History কমান্ডের মাধ্যমে অ্যাক্সেস করা যায় এবং Invoke-History, Add-History, বা Clear-History-এর মতো কমান্ডলেট ব্যবহার করে পরিচালনা করা যায়। ডিফল্টরূপে, $MaximumHistoryCount ভেরিয়েবলটি এন্ট্রির সংখ্যা সীমিত করে এবং সাধারণত এর মান ৪০৯৬ সেট করা থাকে।
PSReadLine প্রতিটি ব্যবহারকারী এবং হোস্টের জন্য একটি হিস্ট্রি ফাইল সংরক্ষণ করে এবং সেশনগুলোর মধ্যে সেই হিস্ট্রি বজায় রাখে। PowerShell 5.0 থেকে উপলব্ধ এই ফাইলটির মাধ্যমে আপ এবং ডাউন অ্যারো কী ব্যবহার করে নেভিগেট করা যায় এবং কিবোর্ড শর্টকাট ব্যবহার করে ধাপে ধাপে অনুসন্ধান করা যায়।
PowerShell-এ দেখুন এবং অনুসন্ধানের ইতিহাস
Get-History হলো সেশন হিস্ট্রিতে প্রবেশের পথ । এটি আইডি, কমান্ড লাইন এবং এক্সিকিউশন অর্ডার প্রদর্শন করে; এর অ্যালিয়াস হলো 'h'। তবে, এটি শুধুমাত্র বর্তমান সেশনে যা ঘটেছে তা-ই প্রতিফলিত করে, স্থায়ী PSReadLine ফাইলটি নয়।
Get-History
কনসোলের কীবোর্ড শর্টকাটগুলো সময় বাঁচায় : আগের কমান্ডের জন্য আপ অ্যারো, পরের কমান্ডের জন্য ডাউন অ্যারো, একটি উইন্ডোতে তালিকা দেখার জন্য F7, বন্ধ করার জন্য ESC, প্রিফিক্স দিয়ে খোঁজার জন্য F8 (টাইপ করে F8 চাপুন), এবং আইডি দিয়ে কার্যকর করার জন্য F9।
রিভার্স সার্চ খুবই কার্যকরী : Ctrl+R চাপলে কমান্ডের অংশবিশেষ টাইপ করে হিস্ট্রিতে পেছনের দিকে সার্চ করা যায় এবং Ctrl+S চাপলে সামনের দিকে সার্চ করা যায়। PSReadLine আপনাকে '#string' দিয়ে সার্চ করার এবং Tab চেপে ম্যাচগুলোর মধ্যে লাফিয়ে যাওয়ার সুবিধাও দেয়।
হিস্ট্রির ক্রমটি অদ্ভুত মনে হতে পারে : পাওয়ারশেল কমান্ড টাইপ করার সাথে সাথে নয়, বরং সেগুলো শেষ হলে যোগ করে, এবং নেস্টেড প্রম্পটের ক্ষেত্রে কিছু কমান্ড আগের লেভেলে ফিরে না আসা পর্যন্ত রেকর্ড করা হয় না, যা দীর্ঘ সময় ধরে চলার ক্ষেত্রে বিভ্রান্তিকর হতে পারে।
PSReadLine এর সাথে স্থায়ী ইতিহাস
PSReadLine প্রতিটি ব্যবহারকারী এবং হোস্টের জন্য একটি টেক্সট ফাইলে স্থায়ী লগ সংরক্ষণ করে , যার ফলে PowerShell বন্ধ করে পুনরায় খোলার পরেও পূর্ববর্তী কমান্ডগুলো পুনরুদ্ধার করা যায়।
%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
আপনি Get-PSReadLineOption এবং Set-PSReadLineOption ব্যবহার করে এর আচরণ দেখতে ও পরিবর্তন করতে পারেন । এর মাধ্যমে আপনি ডুপ্লিকেট, কেস সেনসিটিভিটি, সেভ পাথ এবং স্টাইলের মতো বিষয়গুলোসহ অন্যান্য পছন্দগুলো কনফিগার করতে পারেন।
Get-PSReadLineOption | Select HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle
বিবেচনার জন্য প্রধান বিকল্পসমূহ :
- HistoryNoDuplicates: ডুপ্লিকেট এড়িয়ে চলে, ডুপ্লিকেট কমানো
- MaximumHistoryCount: সর্বাধিক সংখ্যক সঞ্চিত কমান্ড নিয়ন্ত্রণ করে
- HistorySearchCursorMovesToEnd: অনুসন্ধানে কার্সারের অবস্থান সামঞ্জস্য করে
- HistorySearchCaseSensitive: কেস-সংবেদনশীল অনুসন্ধান করে
- HistorySavePath: ইতিহাস ফাইলের পথ নির্ধারণ করে।
- HistorySaveStyle: ইতিহাস কখন সংরক্ষণ করা হবে তা নির্ধারণ করে, বিকল্পগুলির মধ্যে রয়েছে SaveIncrementally, SaveAtExit, এবং SaveNothing
এটি Set-PSReadLineOption ব্যবহার করে কাস্টমাইজ করা যায় । উদাহরণস্বরূপ, শুধুমাত্র প্রস্থানের সময় সংরক্ষণ করতে এবং ডিস্কে লেখা কমাতে:
Set-PSReadLineOption -HistorySaveStyle SaveAtExit
আপনি `$MaximumHistoryCount` ব্যবহার করে হিস্ট্রির আকারও নিয়ন্ত্রণ করতে পারেন । এটিকে ১০০টি কমান্ডে সীমাবদ্ধ করতে, ভেরিয়েবলটি পরিবর্তন করুন এবং PowerShell পুনরায় চালু করুন; এটিকে স্থায়ী করতে, আপনার PowerShell প্রোফাইলে এটি যুক্ত করুন।
$MaximumHistoryCount = 100
PowerShell-এ ইতিহাস সাফ করুন, ফিল্টার করুন এবং পরিচালনা করুন
Clear-History স্থায়ী PSReadLine ফাইলকে প্রভাবিত না করে সক্রিয় সেশনের ইতিহাস মুছে ফেলে । এটি একেবারে নতুন করে শুরু করতে অথবা আইডি, প্যাটার্ন, পরিমাণ বা বয়স অনুযায়ী নির্দিষ্ট এন্ট্রি মুছে ফেলার জন্য ব্যবহৃত হয়।
প্যারামিটার সেট সহ প্রধান সিনট্যাক্স :
Clear-History <int[]>] <int>]
Clear-History <int>] >]
ব্যবহৃত প্যারামিটারগুলো হলো : আইডেন্টিফায়ার দ্বারা ডিলিট করার জন্য -Id, সুনির্দিষ্ট প্যাটার্ন বা ওয়াইল্ডকার্ডের জন্য -CommandLine, এন্ট্রির সংখ্যা নির্ধারণের জন্য -Count, এবং ক্রম উল্টে দিয়ে সবচেয়ে সাম্প্রতিকগুলো ডিলিট করার জন্য -Newest। এটি -WhatIf প্যারামিটারের মাধ্যমে কনফার্মেশন এবং সিমুলেশন মোডও সাপোর্ট করে।
উদাহরণ: সক্রিয় সেশনের সমস্ত ইতিহাস মুছে ফেলুন :
Get-History
Clear-History
Get-History
উদাহরণ: -Count এবং -Newest ব্যবহার করে শেষের ৫টি এন্ট্রি মুছে ফেলুন :
Clear-History -Count 5 -Newest
Get-History
উদাহরণ: -CommandLine ব্যবহার করে প্যাটার্নের সাথে মেলে এমন এন্ট্রিগুলি মুছে ফেলুন :
Clear-History -CommandLine '*Help*', '*Syntax'
Get-History
উদাহরণ: নির্দিষ্ট আইডি দ্বারা মুছুন :
Clear-History -Id 3, 5
Get-History
উদাহরণ: একটি নির্দিষ্ট আইডি থেকে ক্রমানুসারে মুছে ফেলার জন্য -Id এবং -Count একসাথে ব্যবহার করা :
Clear-History -Id 7 -Count 5
Get-History
মনে রাখবেন : -Count এর সাথে -Id ব্যবহার করলে অন্তর্ভুক্ত Id থেকে বাদ দেওয়া হয়, -CommandLine এর সাথে ব্যবহার করলে মিলগুলো ক্রমানুসারে বাদ দেওয়া হয়, এবং ডিফল্টরূপে সবচেয়ে পুরানো এন্ট্রিগুলো মুছে ফেলা হয়, যদি না আপনি -Newest ব্যবহার করেন।
PowerShell-এ ইতিহাস থেকে কমান্ড চালান এবং লোড করুন
Invoke-History কোনো হিস্ট্রি এন্ট্রিকে ওভাররাইট না করেই কার্যকর করে। এর বিকল্প নাম হলো 'r'। প্যারামিটার ছাড়া এটি সর্বশেষ এন্ট্রিটির পুনরাবৃত্তি করে; একটি আইডি সহ এটি হুবহু সেই কমান্ডটি কার্যকর করে।
Invoke-History # Repetir la última entrada
Invoke-History -Id 12 # Ejecutar la entrada 12
আপনি কার্যপ্রণালী নথিভুক্ত করতে বা শেয়ার করতে ইতিহাসটি এক্সপোর্ট এবং ইম্পোর্টও করতে পারেন । এটি CSV বা Clixml-এ এক্সপোর্ট করা হয় এবং Add-History ব্যবহার করে পুনরায় ইম্পোর্ট করা হয়।
Get-History | Export-Csv -Path .\historial.csv -NoTypeInformation
Get-History | Export-Clixml -Path .\historial.xml
$h = Import-Clixml .\historial.xml
$h | Add-History
CMD-তে ইতিহাস দেখুন এবং পরিচালনা করুন
CMD শুধুমাত্র সক্রিয় সেশন চলাকালীনই হিস্টরি সংরক্ষণ করে । আপনি আপ এবং ডাউন অ্যারো কী ব্যবহার করে নেভিগেট করতে পারেন, স্ক্রল করার জন্য PgUp এবং PgDn ব্যবহার করতে পারেন, এবং সমস্ত সংরক্ষিত কমান্ডসহ একটি উইন্ডো খুলতে F7 চাপতে পারেন; ESC চাপলে সেই উইন্ডোটি বন্ধ হয়ে যায়।
CMD-তে অন্যান্য দরকারি শর্টকাটগুলো হলো: প্রদর্শিত তালিকা থেকে কমান্ড নম্বর জানতে F9 এবং লাইনে এ পর্যন্ত যা টাইপ করেছেন, তা দিয়ে শুরু হওয়া মিলগুলো খুঁজতে F8।
ডসকি তার কার্যক্ষমতা আরও বাড়িয়েছে : এটি আপনাকে 'doskey /history' কমান্ডের মাধ্যমে সম্পূর্ণ ইতিহাস দেখার অথবা রিডাইরেকশন ব্যবহার করে একটি ফাইলে তা সংরক্ষণ করার সুযোগ দেয়, যেমন, 'doskey /history > C:\cmd_history.txt'। এছাড়াও আপনি /listsize=100 কমান্ডের মাধ্যমে মেমোরির আকারও নিয়ন্ত্রণ করতে পারেন।
মেমরিতে থাকা হিস্ট্রি মুছে ফেলার জন্য Alt+F7 কিবোর্ড শর্টকাটটি ব্যবহার করুন। মনে রাখবেন, আপনি যদি আগে থেকে হিস্ট্রি এক্সপোর্ট না করে থাকেন, তবে CMD বন্ধ করলে তা হারিয়ে যায়।
CMD-তে আরও শক্তিশালী ও স্থায়ী হিস্ট্রি রাখার জন্য , আপনি Clink-এর মতো টুল ব্যবহার করতে পারেন, যা হিস্ট্রি ম্যানেজমেন্ট ও সার্চিং-এর ক্ষেত্রে উল্লেখযোগ্য উন্নতি ঘটায়, অথবা Windows Terminal ব্যবহার করতে পারেন, যা বিভিন্ন কনসোলকে একত্রিত করে এবং PowerShell ও WSL2 সাপোর্ট করে।
ইভেন্ট ভিউয়ারের সাহায্যে অডিট কমান্ড এবং প্রক্রিয়া
সার্বিক ও কেন্দ্রীভূত নিয়ন্ত্রণের জন্য , আপনি অ্যাডভান্সড অডিটিং ব্যবহার করে প্রসেস তৈরির তথ্য লগ করতে পারেন। ইভেন্ট ৪৬৮৮ প্রতিটি চালু হওয়া প্রসেস রেকর্ড করে, যার মধ্যে ব্যবহারকারী, কনটেক্সট এবং কমান্ড লাইন সম্পর্কিত তথ্য অন্তর্ভুক্ত থাকে; ইভেন্ট ৪৬৮৯ এর সমাপ্তি নির্দেশ করে।
স্থানীয় নিরাপত্তা নীতির উন্নত অডিটিং বিভাগে, আপনার পছন্দ অনুযায়ী সফল এবং/অথবা ব্যর্থ কনফিগার করে 'অডিট প্রক্রিয়া তৈরি' সক্রিয় করুন।
এরপর, gpedit.msc- তে Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies > Detailed Tracking-এ গিয়ে পলিসিটি অ্যাডজাস্ট করুন এবং এটি এনাবল করুন।
এই ইভেন্টগুলো দেখতে , Windows-এ ইভেন্ট ভিউয়ার খুলুন, Windows Logs > Security-তে যান এবং ID 4688 দিয়ে ফিল্টার করুন। আরও বিস্তারিত বিশ্লেষণের জন্য, Logbinder Supercharger-এর মতো টুল পর্যালোচনায় সহায়তা করতে পারে।
পাওয়ারশেলে দরকারী সিএমডিলেট এবং ইতিহাসের নোট
প্রধান হিস্ট্রি কমান্ডলেটগুলো হলো: দেখার জন্য Get-History (এলিয়াস 'h'), এক্সিকিউট করার জন্য Invoke-History (এলিয়াস 'r'), কমান্ড যোগ করার জন্য Add-History, এবং ডিলিট করার জন্য Clear-History (এলিয়াস 'clhy')। PowerShell এবং PSReadLine-এর হিস্ট্রি একসাথে থাকে, কিন্তু Clear-History শুধুমাত্র সক্রিয় সেশনের হিস্ট্রিকে প্রভাবিত করে।
Clear-History সম্পর্কে শেষ কথা : এটি পাইপ ইনপুট গ্রহণ করে না, কোনো আউটপুট ফেরত দেয় না, -CommandLine-এ ওয়াইল্ডকার্ড সমর্থন করে, এবং অতিরিক্ত নিয়ন্ত্রণের জন্য -Verbose ও -ErrorAction-এর মতো CommonParameters সমর্থন করে।
PowerShell এবং CMD-তে হিস্ট্রি আয়ত্ত করার মাধ্যমে দ্রুত কমান্ড পুনরুদ্ধার করা, পদ্ধতি ডিবাগ করা, তথ্য নথিভুক্ত করা এবং নিরীক্ষা করা সহজ হয়। PSReadLine ডেটা সংরক্ষণ ও অনুসন্ধানের ক্ষমতা প্রদান করে, অন্যদিকে Clear-History নিয়ন্ত্রণ করে কোন কমান্ডগুলো সেশনে থাকবে, এবং ইভেন্ট 4688 ও 4689 লগিংকে নিরাপত্তা ও কমপ্লায়েন্সের একটি উচ্চ স্তরে উন্নীত করে।
সাধারণভাবে বাইট এবং প্রযুক্তির বিশ্ব সম্পর্কে উত্সাহী লেখক। আমি লেখার মাধ্যমে আমার জ্ঞান ভাগ করে নিতে পছন্দ করি, এবং আমি এই ব্লগে এটিই করব, আপনাকে গ্যাজেট, সফ্টওয়্যার, হার্ডওয়্যার, প্রযুক্তিগত প্রবণতা এবং আরও অনেক কিছু সম্পর্কে সবচেয়ে আকর্ষণীয় জিনিস দেখাব৷ আমার লক্ষ্য হল আপনাকে একটি সহজ এবং বিনোদনমূলক উপায়ে ডিজিটাল বিশ্বে নেভিগেট করতে সাহায্য করা।
