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

PowerShell স্ক্রিপ্টে আউটপুট লগ ফাইলে লেখা

আপনি আপনার PowerShell স্ক্রিপ্টের চালানোর অবস্থা নিয়ন্ত্রণ এবং সমস্ত কার্যকলাপ ট্র্যাক করতে সাধারণ টেক্সট লগ ফাইল ব্যবহার করতে পারেন। এটি ত্রুটি ডিবাগ করতে বা স্ক্রিপ্টের কার্যক্রম ऑডিট করতে উপকারী। এই আর্টিকেলে আমরা দেখাবো PowerShell স্ক্রিপ্টে লগিং ব্যবহারের কিছু পদ্ধতি, অর্থাৎ আউটপুট টেক্সট লগ ফাইলে লেখা।

সর্বসাধারণ ক্ষেত্রে, যদি আপনি একটি তথ্যবহুল বার্তা বা PowerShell কমান্ডের ফলাফল একটি টেক্সট লগ ফাইলে লিখতে চান, তবে আপনি PS আউটপুট টেক্সট ফাইলে রিডাইরেক্ট করতে নিচের ফরম্যাটগুলোর যেকোনো একটি ব্যবহার করতে পারেন:

Write-Output "Files are successfully created in $env:computername" >> C:\PS\Logs\TestLog.txt
Add-Content -Path C:\PS\Logs\TestLog.txt -Value "Files are successfully created in $env:computername"
"Files are successfully created in $env:computername" | Out-File -FilePath C:\PS\Logs\TestLog.txt –Append

সभी কেসে, কমান্ডগুলো আপনার নির্দিষ্ট টেক্সট সহ একটি নতুন লাইন টেক্সট ফাইলে যোগ করে।

যদি আপনি প্রতিবার লগ ফাইলের কন্টেন্ট ওভাররাইট করতে চান, তবে Set-Content কামডলেট ব্যবহার করুন।

PowerShell স্ক্রিপ্টে আউটপুট লগ ফাইলে লেখা

এই পদ্ধতির প্রধান খামি হলো আপনি বুঝতে পারবেন না কোন এন্ট্রি কখন লগ ফাইলে লেখা হয়েছে (অর্থাৎ ইভেন্ট কখন ঘটেছে)। আপনি লগ ফাইলে বর্তমান টাইমস্ট্যাম্প যোগ করতে পারেন। এটি স্ক্রিপ্টটি কখন চালানো হয়েছে এবং নির্দিষ্ট ইভেন্ট কখন ঘটেছে তা চিনতে সাহায্য করবে।

এটি আরও সুবিধাজনক बनाने জন্য, আপনি আপনার PowerShell স্ক্রিপ্টে একটি আলাদা ফাংশন তৈরি করতে পারেন যা প্রাপ্ত ডেটা লগ ফাইলে লিখবে এবং প্রতিটি ইভেন্টের জন্য টাইমস্ট্যাম্প যোগ করবে।

আপনি নিচের মত ফাংশন তৈরি করতে পারেন:

$Logfile = "C:\PS\Logs\proc_$env:computername.log"
function WriteLog
{
 Param ([string]$LogString)
 $Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
 $LogMessage = "$Stamp $LogString"
 Add-content $LogFile -value $LogMessage
}

তারপর আপনি যদি কিছু লগ করতে চান তবে WriteLog ফাংশনটি কল করুন।

WriteLog "The script is run"
WriteLog "Calculating…."
Start-Sleep 20
WriteLog "The script is successfully executed"

এখন আপনি লগ ফাইলে প্রতিটি এন্ট্রির সময় দেখতে পারেন।

PowerShell স্ক্রিপ্টে আউটপুট লগ ফাইলে লেখা

আপনি আপনার স্ক্রিপ্টে Write-Host কলগুলো LogWrite দিয়ে রিপ্লেস করতে পারেন।

PowerShell-এ একটি বিল্ট-ইন ট্রান্সক্রিপ্ট ফিচার রয়েছে যা PS কনসোলে দেখানো সব কমান্ড এবং আউটপুট একটি টেক্সট লগ ফাইলে সংরক্ষণ করে।

আপনার বর্তমান PowerShell সেশন লগ করতে Start-Transcript কামডলেট ব্যবহার করা হয়।

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

Transcript started, output file is C:\Users\user\Documents\PowerShell_transcript.DESKTOP-P2FHTKQ.+IzDgZiN.20210908163729.txt

আপনি টেক্সট ফাইলের পাথ নিচের মত নির্দিষ্ট করতে পারেন:

Start-Transcript -Append C:\PS\Logs\PSScriptLog.txt

–Append অপশনটি নির্দেশ করে যে নতুন সেশনগুলো ফাইলের শেষে লগ হবে (ওভাররাইট ছাড়া)।

কিছু PowerShell কমান্ড চালান যেগুলো কনসোলে ফলাফল আউটপুট করে। উদাহরণস্বরূপ, চলমান প্রসেসের তালিকা, সার্ভিসগুলো এবং AD রিপ্লিকেশন স্ট্যাটাস দেখান:

Get-Process| where-object {$_.WorkingSet -GT 500000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending
Get-Service | Where-Object {$_.status -eq 'Running'}
Get-ADReplicationFailure -Target mun-dc01

বর্তমান PowerShell সেশনের জন্য লগিং বন্ধ করুন:

Stop-Transcript

তারপর ট্রান্সক্রিপ্ট লগ ফাইলটি খুলুন।

PowerShell স্ক্রিপ্টে আউটপুট লগ ফাইলে লেখা

আপনি দেখতে পাচ্ছেন, লগে কনসোলে চালানো সকল PowerShell কমান্ডের সম্পূর্ণ ইতিহাস এবং সব আউটপুট দেখাচ্ছে।

সभी এরর ও ওয়ার্নিং ও লগ হয়, যা জটিল PowerShell স্ক্রিপ্ট ডিবাগ করার সময় অত্যন্ত সুবিধাজনক।

আপনি আপনার PowerShell স্ক্রিপ্টে Start-Transcript এবং Stop-Transcript কামডলেট ব্যবহার করে স্বাভাবিকভাবে সব অ্যাকশন এবং আউটপুট লগ করতে পারেন।

গ্রুপ পলিসি অপশন Turn on PowerShell Transcription (Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell) ব্যবহার করে, আপনি একটি কম্পিউটারে চলমান সকল PowerShell কমান্ড এবং আউটপুটের স্বয়ংক্রিয় লগিং সক্ষম করতে পারেন। কম্পিউটারে GPO সেটিংস আপডেট করার পর, প্রতিটি চলমান powershell.exe প্রসেসের জন্য আলাদা একটি টেক্সট লগ ফাইল তৈরি হবে এবং সকল PS কমান্ড ও তাদের আউটপুট লগ হবে।

PowerShell স্ক্রিপ্টে আউটপুট লগ ফাইলে লেখা

  1. এসেনশিয়াল লিনাক্স ls কমান্ড: ফাইল ও ডিরেক্টরি দ্রুত ও কার্যকরভাবে লিস্ট করুন

  2. PowerShell-এ Delay যোগ করুন: সহজ Pause কমান্ড এবং ব্যবহারিক উদাহরণ

  3. PowerShell: ফোল্ডার ও সাবফোল্ডার দ্রুত ও নির্ভরযোগ্যভাবে ডিলিট করার উপায়

  4. পাওয়ারশেল দিয়ে দক্ষতার সাথে ফাইল ও ফোল্ডার ডিলিট করুন: ধাপে ধাপে গাইড