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

পাওয়ারশেল দিয়ে ব্যবহারকারীর ডেস্কটপের স্ক্রিনশট নেওয়া

একটি হেল্পডেস্ক সাপোর্ট টিম আমাকে একটি পাওয়ারশেল স্ক্রিপ্ট লিখতে বলেছিল যাতে দূরবর্তী কম্পিউটার থেকে ব্যবহারকারীর ডেস্কটপের স্ক্রিনশট দ্রুত পাওয়া যায়। মূল শর্ত হল হেল্পডেস্ক কর্মী গ্রাফিক্যাল রিমোট সাপোর্ট টুলস (SCCM, Remote Assistance, Remote Desktop Session Shadowing, ইত্যাদি) এর মাধ্যমে ব্যবহারকারীর কম্পিউটারে কানেক্ট করবেন না।

পাওয়ারশেল ব্যবহার করে স্ক্রিনশট ক্যাপচার করা

প্রথমে, পাওয়ারশেল দিয়ে লোকাল কম্পিউটারে স্ক্রินশট নেওয়া কিভাবে শিখি। বর্তমান ডেস্কটপের ছবি ক্যাপচার করতে বিল্ট-ইন .NET ক্লাস System.Windows.Forms ব্যবহার করা যায়। আমার লেখা পাওয়ারশেল স্ক্রিপ্ট:

$Path = "C:\ScreenCapture"
# স্ক্রিনশট সংরক্ষণ করার ডিরেক্টরি আছে কিনা চেক করুন, নাইলে তৈরি করুন
If (!(test-path $path)) {
New-Item -ItemType Directory -Force -Path $path
}
Add-Type -AssemblyName System.Windows.Forms
$screen = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
# বর্তমান স্ক্রিন রেজোলিউশন পান
$image = New-Object System.Drawing.Bitmap($screen.Width, $screen.Height)
# একটি গ্রাফিক্যাল অবজেক্ট তৈরি করুন
$graphic = [System.Drawing.Graphics]::FromImage($image)
$point = New-Object System.Drawing.Point(0, 0)
$graphic.CopyFromScreen($point, $point, $image.Size);
$cursorBounds = New-Object System.Drawing.Rectangle([System.Windows.Forms.Cursor]::Position, [System.Windows.Forms.Cursor]::Current.Size)
# স্ক্রিনশট নিন
[System.Windows.Forms.Cursors]::Default.Draw($graphic, $cursorBounds)
$screen_file = "$Path\" + $env:computername + "_" + $env:username + "_" + "$((get-date).tostring('yyyy.MM.dd-HH.mm.ss')).png"
# স্ক্রিনশট PNG ফাইল হিসেবে সংরক্ষণ করুন
$image.Save($screen_file, [System.Drawing.Imaging.ImageFormat]::Png)

এই পাওয়ারশেল স্ক্রিপ্ট স্ক্রিনশট সংরক্ষণের জন্য ডিরেক্টরি তৈরি করে, বর্তমান স্ক্রিন রেজোলিউশন পায়, বর্তমান ওয়ার্কস্পেসের ছবি ক্যাপচার করে এবং PNG ফাইল হিসেবে সংরক্ষণ করে। পাওয়ারশেল স্ক্রিপ্ট চালান এবং নির্দিষ্ট ডিরেক্টরিতে PNG ফাইল তৈরি হয়েছে কিনা চেক করুন (আপনি শেয়ারড নেটওয়ার্ক ফোল্ডারের UNC পাথও নির্দিষ্ট করতে পারেন) আপনার ডেস্কটপের স্ক্রিনশটসহ। সুবিধার জন্য, PNG ফাইলের নামে কম্পিউটার নাম, ব্যবহারকারীর নাম, বর্তমান তারিখ এবং সময় থাকে।

আপনি যদি PS স্ক্রিপ্টকে ব্যাচ ফাইল থেকে কল করতে চান, তবে এই কমান্ড ব্যবহার করুন (এই কেসে পাওয়ারশেল এক্সিকিউশন পলিসি সেটিংস পরিবর্তন করার দরকার নেই):

powershell.exe -executionpolicy bypass -file c:\ps\CaptureLocalScreen.ps1

পাওয়ারশেল স্ক্রিপ্ট এডিট করতে আমি ভিজ্যুয়াল স্টুডিও কোড পছন্দ করি পাওয়ারশেল ISE-এর বদলে।

আপনি একটি GPO তৈরি করে সকল ডোমেন ব্যবহারকারীর ডেস্কটপে পাওয়ারশেল স্ক্রিপ্টের শর্টকাট রাখতে পারেন এবং হট কিজ অ্যাসাইন করতে পারেন। এখন, যেকোনো অ্যাপে সমস্যা বা এরর আসলে, ব্যবহারকারী শুধু অ্যাসাইন করা হট কিজ চাপাবে। তারপর ব্যবহারকারীর ডেস্কটপ স্ক্রিনশট হেল্পডেস্ক শেয়ারড ফোল্ডারে আসবে।

পাওয়ারশেল ব্যবহার করে রিমোট কম্পিউটার থেকে ডেস্কটপ স্ক্রিনশট নেওয়া

পরবর্তী কাজ হলো পাওয়ারশেল ব্যবহার করে রিমোট কম্পিউটারে ব্যবহারকারীর ডেস্কটপের স্ক্রিনশট নেওয়া। এটি হয় উইন্ডোজ ১০ চলমান একটি স্ট্যান্ডঅ্যালোন কম্পিউটার বা একটি RDS সার্ভার হতে পারে।

RDS সার্ভারে ব্যবহারকারীর ডেস্কটপে গ্রাফিক্যাল টুল ব্যবহার করে কানেক্ট করার পছন্দসই পদ্ধতি হলো Shadow RDP Session।

আপনি যদি একটি RDS সার্ভার থেকে (বা ডেস্কটপ উইন্ডোজ থেকে, যেখানে একাধিক কাঙ্কারেন্ট RDP কানেকশন অনুমোদিত) ডেস্কটপ স্ক্রিনশট নিতে চান, তবে প্রথমে রিমোট কম্পিউটারে ব্যবহারকারীর সেশন ID পেতে হবে। নিচের পাওয়ারশেল স্ক্রিপ্টে রিমোট কম্পিউটার/সার্ভারের নাম এবং ব্যবহারকারীর অ্যাকাউন্ট নির্দিষ্ট করুন:

$ComputerName = "nld-rds1"
$RDUserName = "h.jansen"
$quser = (((query user /server:$ComputerName) -replace '^>', '') -replace '\s{2,}', ',' | ConvertFrom-Csv)
$usersess=$quser | where {$_.USERNAME -like $RDUserName -and $_.STATE -eq "Active"}
$usersessID=$usersess.ID

আপনি যদি একক ব্যবহারকারীর রিমোট কম্পিউটার থেকে স্ক্রিনশট लेने için এই স্ক্রিপ্ট ব্যবহার করেন, তবে সেশন নম্বর সবসময় ১ হবে। পূর্বের RDS সার্ভার কোয়েরি ব্লকটি $usersessID = 1 দিয়ে প্রতিস্থাপন করুন।

সুবিধার জন্য, পাওয়ারশেল স্ক্রিপ্ট ফাইলটি একটি শেয়ারড নেটওয়ার্ক ফোল্ডারে সংরক্ষণ করুন। তারপর CaptureLocalScreen.ps1 ফাইল এডিট করুন এবং পাথ পরিবর্তন করুন:

$Path = \\nld-fs01\Screen\Log

ব্যবহারকারীর স্ক্রিনশটগুলো এই ফোল্ডারে সংরক্ষণ হবে। ডোমেন গ্রুপ Authenticated Users-কে এই ফোল্ডারের রাইট পারমিশন দিন।

ব্যবহারকারীর সেশন ID পাওয়ার পর, PsExec টুল ব্যবহার করে ব্যবহারকারীর সেশনে রিমোটলি কানেক্ট করুন এবং স্ক্রিপ্ট চালান:

.\PsExec.exe -s -i $usersessID \\$ComputerName powershell.exe -executionpolicy bypass -WindowStyle Hidden -file "\\nld-fs01\Screen\CaptureLocalScreen.ps1"

তারপর একটি হেল্পডেস্ক টিম সদস্য তার কম্পিউটার থেকে স্ক্রিপ্ট চালাবে, এবং রিমোট কম্পিউটারের বর্তমান ডেস্কটপের স্ক্রিনশট নির্দিষ্ট ডিরেক্টরিতে আসবে।

  1. স্ক্রিনশট নেওয়ার ৫টি সেরা ফ্রি অ্যান্ড্রয়েড অ্যাপ

  2. ম্যাকএ স্ক্রিনশট নেওয়ার পদ্ধতি

  3. ম্যাক স্ক্রিনশট কৌশল: পূর্ণ বা আংশিক ক্যাপচারের জন্য দ্রুত কীবোর্ড শর্টকাট

  4. ম্যাক স্ক্রিনশট মास্টার করুন: সব প্রয়োজনের জন্য কুইক কীবোর্ড শর্টকাট