কম্পিউটার

পাওয়ারশেল স্ক্রিপ্টে লগ ফাইলগুলিতে আউটপুট লেখা

আপনি আপনার 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

সমস্ত ক্ষেত্রে, কমান্ডগুলি আপনার নির্দিষ্ট করা পাঠ্যের সাথে একটি txt ফাইলে একটি নতুন লাইন যুক্ত করে৷

আপনি যদি প্রতিবার লগ ফাইলের বিষয়বস্তু ওভাররাইট করতে চান, তাহলে Set-Content ব্যবহার করুন cmdlet.

পাওয়ারশেল স্ক্রিপ্টে লগ ফাইলগুলিতে আউটপুট লেখা

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

এটিকে আরও সুবিধাজনক করতে, আপনি আপনার 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"

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

পাওয়ারশেল স্ক্রিপ্টে লগ ফাইলগুলিতে আউটপুট লেখা

আপনি Write-Host প্রতিস্থাপন করতে পারেন LogWrite দিয়ে কল আপনার স্ক্রিপ্টে বেশী.

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

আপনার বর্তমান PowerShell সেশন লগ করতে, স্টার্ট-ট্রান্সক্রিপ্ট cmdlet ব্যবহার করা হয়।

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

Transcript started, output file is C:\Users\user\Documents\PowerShell_transcript.DESKTOP-P2FHTKQ.+IzDgZiN.20210908163729.txt
আপনি নিম্নরূপ পাঠ্য ফাইলের পথ নির্দিষ্ট করতে পারেন:

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

–সংযোজন বিকল্পটি নির্দেশ করে যে নতুন সেশনগুলি ফাইলের শেষে লগ করা হবে (এটি ওভাররাইট না করে)।

কিছু পাওয়ারশেল কমান্ড চালান যা ফলাফলগুলি কনসোলে আউটপুট করে। উদাহরণস্বরূপ, চলমান প্রক্রিয়া, পরিষেবা এবং 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

বর্তমান পাওয়ারশেল সেশনের জন্য লগ করা বন্ধ করুন:

Stop-Transcript

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

পাওয়ারশেল স্ক্রিপ্টে লগ ফাইলগুলিতে আউটপুট লেখা

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

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

আপনি Start-Transcript ব্যবহার করতে পারেন এবং Stop-Transcript সমস্ত ক্রিয়া এবং আউটপুট নেটিভভাবে লগ করতে আপনার পাওয়ারশেল স্ক্রিপ্টে cmdlets৷

গ্রুপ পলিসি বিকল্পটি ব্যবহার করে পাওয়ারশেল ট্রান্সক্রিপশন চালু করুন (কম্পিউটার কনফিগারেশন -> প্রশাসনিক টেমপ্লেট -> উইন্ডোজ উপাদান -> উইন্ডোজ পাওয়ারশেল), আপনি একটি কম্পিউটারে চালানো সমস্ত পাওয়ারশেল কমান্ড এবং আউটপুটগুলির স্বয়ংক্রিয় লগিং সক্ষম করতে পারেন। কম্পিউটারে GPO সেটিংস আপডেট করার পরে, প্রতিটি চলমান powershell.exe প্রক্রিয়ার জন্য একটি পৃথক পাঠ্য লগ ফাইল তৈরি করা হবে এবং সমস্ত PS কমান্ড এবং তাদের আউটপুটগুলি লগ করা হবে৷
পাওয়ারশেল স্ক্রিপ্টে লগ ফাইলগুলিতে আউটপুট লেখা


  1. লিনাক্সে ফাইল এবং ডিরেক্টরি তালিকাভুক্ত করার জন্য কমান্ড

  2. কীভাবে একটি পাওয়ারশেল স্ক্রিপ্টে বিরাম যুক্ত করবেন (উদাহরণ সহ)

  3. কিভাবে PowerShell এ ফোল্ডার এবং সাবফোল্ডার মুছে ফেলতে হয়

  4. কীভাবে PowerShell ব্যবহার করে ফাইল এবং ফোল্ডার মুছবেন