কম্পিউটার

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

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

PowerShell ব্যবহার করে স্ক্রিনশট ক্যাপচার করা

প্রথমত, আসুন জেনে নিই কিভাবে PowerShell দিয়ে স্থানীয় কম্পিউটারে স্ক্রিনশট নিতে হয়। একটি বর্তমান ডেস্কটপ ছবি ক্যাপচার করতে, আপনি বিল্ট-ইন .NET ক্লাস System.Windows.Forms ব্যবহার করতে পারেন . আমি এই PowerShell স্ক্রিপ্ট পেয়েছি:

$Path = "C:\ScreenCapture"
# Make sure that the directory to keep screenshots has been created, otherwise create it
If (!(test-path $path)) {
New-Item -ItemType Directory -Force -Path $path
}
Add-Type -AssemblyName System.Windows.Forms
$screen = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
# Get the current screen resolution
$image = New-Object System.Drawing.Bitmap($screen.Width, $screen.Height)
# Create a graphic object
$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)
# Get a screenshot
[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"
# Save the screenshot as a PNG file
$image.Save($screen_file, [System.Drawing.Imaging.ImageFormat]::Png)

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

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

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

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

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

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

কিভাবে PowerShell ব্যবহার করে একটি দূরবর্তী কম্পিউটার থেকে একটি ডেস্কটপ স্ক্রিনশট নিতে হয়?

পরবর্তী কাজটি হল PowerShell এর মাধ্যমে দূরবর্তী কম্পিউটারে ব্যবহারকারীর ডেস্কটপের একটি স্ক্রিনশট পাওয়া। এটি হয় Windows 10 চালিত একটি স্বতন্ত্র কম্পিউটার বা একটি RDS সার্ভার হতে পারে৷

৷ একটি গ্রাফিক টুল ব্যবহার করে একটি RDS সার্ভারে ব্যবহারকারীর ডেস্কটপে সংযোগ করার একটি পছন্দের উপায় হল শ্যাডো আরডিপি সেশন।

আপনি যদি একটি RDS সার্ভার থেকে একটি ডেস্কটপ স্ক্রিনশট পেতে চান (অথবা একটি ডেস্কটপ উইন্ডোজ, যাতে একাধিক সমসাময়িক RDP সংযোগ অনুমোদিত হয়), আপনাকে প্রথমে দূরবর্তী কম্পিউটারে একটি ব্যবহারকারী সেশন আইডি পেতে হবে৷ নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্টে একটি দূরবর্তী কম্পিউটার/সার্ভার এবং একটি ব্যবহারকারী অ্যাকাউন্টের নাম উল্লেখ করুন:
$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

আপনি যদি একটি একক ব্যবহারকারীর সাথে দূরবর্তী কম্পিউটার থেকে স্ক্রিনশট পেতে স্ক্রিপ্টটি ব্যবহার করেন, সেশন নম্বরটি সর্বদা 1 হবে। পূর্ববর্তী RDS সার্ভার ক্যোয়ারী ব্লকটি $usersessID = 1 দিয়ে প্রতিস্থাপন করুন। .

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

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

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

আপনি একটি ব্যবহারকারী সেশন আইডি পাওয়ার পরে, আপনি PsExec ব্যবহার করে দূরবর্তীভাবে ব্যবহারকারী সেশনের সাথে সংযোগ করতে পারেন টুল এবং স্ক্রিপ্ট চালান:

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

তারপরে একজন হেল্পডেস্ক দলের সদস্য তার কম্পিউটার থেকে স্ক্রিপ্টটি চালাতে পারে এবং দূরবর্তী কম্পিউটারের বর্তমান ডেস্কটপের একটি স্ক্রিনশট নির্দিষ্ট ডিরেক্টরিতে উপস্থিত হবে৷


  1. দুর্দান্ত স্ক্রিনশট নেওয়ার জন্য 5টি বিনামূল্যের অ্যান্ড্রয়েড অ্যাপ

  2. কিভাবে:একটি Mac এ একটি স্ক্রিনশট নিন

  3. কীভাবে ম্যাকে স্ক্রিনশট করবেন - একটি কীবোর্ড শর্টকাট দিয়ে একটি স্ক্রিন ক্যাপচার নিন

  4. কীবোর্ড শর্টকাট সহ ম্যাক ওএসে স্ক্রিনশটগুলি কীভাবে নেওয়া যায়