Uslužbenci tehnične podpore so zahtevali, da napišejo skript PowerShell, da hitro odkrijete posnetek zaslona uporabniškega namizja iz oddaljenega računalnika. Hkrati uslužbenec HelpDesk ne sme biti povezan z uporabnikovim računalnikom prek grafičnih orodij oddaljene podpore (SCCM, oddaljena pomoč, seja Shadow itd.).
Vsebina:
- Ustvarite posnetek zaslona s programom PowerShell
- Kako dobiti zaslon namizja iz oddaljenega računalnika iz PowerShell-a?
Ustvarite posnetek zaslona s programom PowerShell
Najprej bomo ugotovili, kako narediti posnetek zaslona trenutnega zaslona na lokalnem računalniku iz PowerShell-a. Za pridobitev namizne slike bomo uporabili vgrajeni razred .NET - System.Windows.Forms. Imam takšen skript PowerShell:
$ Path = "C: \ ps \ posnetki zaslona"
# Preverite, ali je bil ustvarjen imenik za shranjevanje posnetkov zaslona, če ni, ga ustvarite
Če (! (Testna pot $ pot))
Nov element-ImenikTypeType -Force -Path $ pot
Add-Type -AssemblyName System.Windows.Forms
$ screen = [System.Windows.Forms.Screen] :: PrimaryScreen.Bounds
# Pridobite ločljivost zaslona
$ image = Nov objektni sistem.Vlečenje.Bitmap ($ screen.Width, $ screen.Height)
# Ustvari grafični objekt
$ graphics = [System.Drawing.Graphics] :: FromImage ($ image)
$ point = Nov objektni sistem.Nišete.Point (0, 0)
$ graphic.CopyFromScreen ($ točka, $ točka, $ image.Size);
$ cursorBounds = New-Object System.Drawing.Rectangle ([System.Windows.Forms.Cursor] :: Položaj, [System.Windows.Forms.Cursor] :: Current.Size)
# Ustvari posnetek zaslona
[System.Windows.Forms.Cursors] :: Privzeto risanje ($ grafična, $ cursorBounds)
$ screen_file = "$ pot \" + $ env: ime računalnika + "_" + $ env: uporabniško ime + "_" + "$ ((datum-datum) .tostring ('yyyy.MM.dd-HH.mm.ss ')). png "
# Shrani posnetek zaslona v png datoteko
$ image.Save ($ screen_file, [System.Drawing.Imaging.ImageFormat] :: Png)
Ta skript ustvari imenik za shranjevanje posnetkov zaslona, pridobi trenutno ločljivost zaslona, prejme slike delovnega prostora in ga shrani v png datoteko.
Zaženite navedeni skript PowerShell in preverite, ali se je v določenem imeniku (lahko določite pot UNC do omrežne mape) v png datoteki prikazala png datoteka s posnetkom zaslona vašega namizja. Za udobje ime datoteke png vsebuje ime računalnika, uporabnika, trenutni datum in čas.
Če želite uporabiti klic tega skripta PS iz skriptov, uporabite ta ukaz (v tem primeru vam ni treba spremeniti nastavitev PowerShell ExecutionPolicy):
powershell.exe -executionpolicy bypass -file c: \ ps \ PS-Capture-Local-Screen.ps1
Bližnjico do tega skripta PowerShell lahko postavite prek GPO na namizja vseh uporabnikov domene in za povezovanje vročih tipk. Ko se v kateri koli aplikaciji pojavi težava ali napaka, mora uporabnik samo pritisniti dodeljeno kombinacijo tipk. Posledično se v omrežni mapi HelpDesk prikaže posnetek zaslona uporabniškega namizja.
Kako dobiti zaslon namizja iz oddaljenega računalnika iz PowerShell-a?
Naslednja naloga je, da s programom PowerShell dobite posnetek zaslona uporabniškega namizja na oddaljenem računalniku / strežniku. Lahko je bodisi ločen računalnik z Windows 10 ali strežnik RDS.
Najboljši način grafične povezave z namizjem uporabnikov na strežniku RDS je senčenje oddaljenega namizja.Če želite dobiti namizje zaslona s strežnika RDS (ali namiznega sistema Windows, na katerem je dovoljeno več povezav RDP), morate najprej pridobiti ID seje uporabnika na oddaljenem računalniku. V naslednjem skriptu morate določiti ime oddaljenega strežnika in uporabniški račun.
$ ComputerName = "msk-rds1"
$ RDUserName = "avivanov"
$ quser = (((poizvedba uporabnik / strežnik: $ ComputerName) -replace '^>', ") -replace '\ s 2,', ',' | Pretvori iz Csv)
$ usersess = $ quser | kjer je $ _. USERNAME podobno $ RDUserName -and $ _. STATE -eq "Active"
$ usersessID = $ usersess.ID
$ usersessID = 1
.Za udobje morate datoteko shraniti s skriptom PowerShell, da posnamete posnetek zaslona v omrežni imenik. Če želite to narediti, uredite skript PS-Capture-Local-Screen.ps1, spremenite pot v:
$ Pot = \\ server1 \ Zaslon \ Dnevnik
Posnetki zaslona uporabnikov bodo shranjeni v ta imenik. Omogoči pisanje dostopa do tega imenika za skupino domen Pooblaščeni uporabniki.
Ko dobite ID seje uporabnika, se lahko z PsExec na daljavo povežete z njegovo sejo in zaženete skript:
.\ PsExec.exe -s -i $ usersessID \\ $ ComputerName powershell.exe -executionpolicy bypass -WindowStyle Hidden -file "\\ server1 \ Screen \ PS-Capture-Local-Screen.ps1"
Zdaj lahko uslužbenec HelpDeska zažene ta skript iz svojega računalnika in posnetek zaslona trenutne slike namizja uporabnika oddaljenega računalnika se prikaže v določenem imeniku.