हेल्पडेस्क सपोर्ट टीम ने मुझे रिमोट कंप्यूटर से यूजर डेस्कटॉप का स्क्रीनशॉट जल्दी से प्राप्त करने के लिए पावरशेल स्क्रिप्ट लिखने के लिए कहा। मुख्य शर्त यह है कि हेल्पडेस्क कर्मचारी ग्राफिकल रिमोट सपोर्ट टूल्स (एससीसीएम, रिमोट असिस्टेंस, रिमोट डेस्कटॉप सेशन शैडोइंग, आदि) के माध्यम से उपयोगकर्ता के कंप्यूटर से कनेक्ट नहीं होना चाहिए।
पावरशेल का उपयोग करके स्क्रीनशॉट कैप्चर करना
सबसे पहले, आइए जानें कि पावरशेल के साथ स्थानीय कंप्यूटर पर स्क्रीनशॉट कैसे लें। वर्तमान डेस्कटॉप छवि को कैप्चर करने के लिए, आप अंतर्निहित .NET वर्ग System.Windows.Forms का उपयोग कर सकते हैं . मुझे यह पॉवरशेल स्क्रिप्ट मिली है:
$Path ="C:\ScreenCapture"
# सुनिश्चित करें कि स्क्रीनशॉट रखने के लिए निर्देशिका बनाई गई है, अन्यथा इसे बनाएं
अगर (!(test-path $path)) {
नया-आइटम -आइटम टाइप निर्देशिका -फोर्स -पथ $पथ
}
ऐड-टाइप -असेंबलीनाम सिस्टम।विंडोज.फॉर्म
$स्क्रीन =[System.Windows.Forms.Screen]::PrimaryScreen.Bounds
# वर्तमान स्क्रीन रिज़ॉल्यूशन प्राप्त करें
$image =New-Object System.Drawing.Bitmap($screen.Width, $screen.Height)
# एक ग्राफिक ऑब्जेक्ट बनाएं
$ग्राफिक =[System.Drawing.Graphics]::FromImage($image)
$point =New-Object System.Drawing.Point(0, 0)
$graphic.CopyFromScreen($ पॉइंट, $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)
यह पावरशेल स्क्रिप्ट स्क्रीनशॉट को स्टोर करने के लिए एक निर्देशिका बनाता है, वर्तमान स्क्रीन रिज़ॉल्यूशन प्राप्त करता है, वर्तमान कार्यक्षेत्र की एक छवि को कैप्चर करता है और इसे पीएनजी फ़ाइल के रूप में सहेजता है। पावरशेल स्क्रिप्ट चलाएँ और जांचें कि आपके डेस्कटॉप के स्क्रीनशॉट के साथ निर्दिष्ट निर्देशिका में एक पीएनजी फ़ाइल दिखाई देती है (आप साझा नेटवर्क फ़ोल्डर के लिए यूएनसी पथ निर्दिष्ट कर सकते हैं)। सुविधा के लिए, पीएनजी फ़ाइल के नाम में एक कंप्यूटर का नाम, एक उपयोगकर्ता नाम, एक वर्तमान तिथि और समय होता है।
यदि आप बैच फ़ाइल से PS स्क्रिप्ट को कॉल करना चाहते हैं, तो इस कमांड का उपयोग करें (इस मामले में, आपको PowerShell निष्पादन नीति सेटिंग्स को बदलने की आवश्यकता नहीं है):
powershell.exe -executionpolicy बायपास -फ़ाइल c:\ps\CaptureLocalScreen.ps1
पावरशेल स्क्रिप्ट संपादित करने के लिए, मैं पावरहेल आईएसई के बजाय विजुअल स्टूडियो कोड का उपयोग करना पसंद करता हूं।
आप सभी डोमेन उपयोगकर्ताओं के डेस्कटॉप पर पावरशेल स्क्रिप्ट के लिए शॉर्टकट रखने के लिए जीपीओ बना सकते हैं और इसे कॉल करने के लिए हॉट की असाइन कर सकते हैं। अब, जब किसी ऐप में कोई समस्या या त्रुटि दिखाई देती है, तो उपयोगकर्ता केवल असाइन की गई हॉट कुंजियों को दबा सकता है। फिर हेल्पडेस्क साझा फ़ोल्डर में एक उपयोगकर्ता डेस्कटॉप स्क्रीनशॉट दिखाई देता है।
PowerShell का उपयोग करके किसी दूरस्थ कंप्यूटर से डेस्कटॉप स्क्रीनशॉट कैसे लें?
अगला कार्य पॉवरशेल के माध्यम से दूरस्थ कंप्यूटर पर उपयोगकर्ता के डेस्कटॉप का स्क्रीनशॉट प्राप्त करना है। यह या तो एक स्टैंडअलोन कंप्यूटर हो सकता है जो विंडोज 10 या आरडीएस सर्वर चला रहा हो।
एक ग्राफिक टूल का उपयोग करके आरडीएस सर्वर पर उपयोगकर्ता डेस्कटॉप से कनेक्ट करने का एक पसंदीदा तरीका शैडो आरडीपी सत्र है।
यदि आप किसी RDS सर्वर (या डेस्कटॉप Windows, जिसमें एकाधिक समवर्ती RDP कनेक्शन की अनुमति है) से डेस्कटॉप स्क्रीनशॉट प्राप्त करना चाहते हैं, तो आपको पहले दूरस्थ कंप्यूटर पर उपयोगकर्ता सत्र ID प्राप्त करनी होगी। निम्न PowerShell स्क्रिप्ट में एक दूरस्थ कंप्यूटर/सर्वर और उपयोगकर्ता खाते का नाम निर्दिष्ट करें:$ComputerName ="nld-rds1"
$RDUserName ="h.jansen"
$quser =((((क्वेरी उपयोगकर्ता / सर्वर:$कंप्यूटर नाम) -बदलें '^>', '') -बदलें '\s{2,}', ',' | ConvertFrom-Csv)
$usersess=$quser | जहां {$_.USERNAME -जैसे $RDUserName -और $_.STATE -eq "Active"}
$usersessID=$usersess.ID
$usersessID =1
से बदलें . इसे और अधिक सुविधाजनक बनाने के लिए, PowerShell स्क्रिप्ट फ़ाइल को किसी साझा नेटवर्क फ़ोल्डर में सहेजें। फिर CaptureLocalScreen.ps1 . संपादित करें फ़ाइल करें और इसका पथ बदलें:
$पथ =\\nld-fs01\Screen\Log
उपयोगकर्ता स्क्रीनशॉट इस फ़ोल्डर में सहेजे जाएंगे। प्रमाणित उपयोगकर्ताओं . के लिए फ़ोल्डर को लिखने की अनुमति दें डोमेन समूह।
उपयोगकर्ता सत्र आईडी प्राप्त करने के बाद, आप PsExec
का उपयोग करके दूरस्थ रूप से उपयोगकर्ता सत्र से जुड़ सकते हैं टूल और स्क्रिप्ट चलाएँ:
।
तब हेल्पडेस्क टीम का सदस्य अपने कंप्यूटर से स्क्रिप्ट चला सकता है, और दूरस्थ कंप्यूटर के वर्तमान डेस्कटॉप का एक स्क्रीनशॉट निर्दिष्ट निर्देशिका में दिखाई देगा।