Как сделать удаленный скриншот с помощью Powershell - PullRequest
2 голосов
/ 31 января 2020

Я пытаюсь выяснить, как сделать удаленные снимки экрана через PowerShell из учетной записи администратора на сервере AD на любой компьютер в сети.

Пока у меня есть следующее.

 $ComputerName = '<THECOMPUTER>'

 copy-item "C:\Public\Software\Take-Screenshot.ps1" "\\$ComputerName\C$\"

 Invoke-Command -ComputerName $ComputerName -ScriptBlock {
     powershell -nop -c "C:\Take-Screenshot.ps1"
 } 

Take-Screenshot.ps1 здесь из здесь , но я добавил следующее в конец скрипта, чтобы фактически запустить функцию.

Take-ScreenShot -screen -file C:\s.png -imagetype png 

После снимок экрана снят, я скопирую его обратно на хост, но проблема в том, что картинка полностью черная.

Я думаю, это может быть из-за того, что powershell запускает программу, но сеанс не присоединен к нему, так что там действительно нет экрана ??

1 Ответ

5 голосов
/ 31 января 2020

Итак, я заставил это работать, но это немного связано. Работает с несколькими мониторами.

Вам понадобится Screenshot.ps1 на удаленном P C, ваш скрипт запуска и PSExe c на локальном P C (Google).

# This is Screenshot.ps1
# Add types and variables
$File = "C:\Temp\Screenshot1.bmp"
Add-Type -AssemblyName System.Windows.Forms
Add-type -AssemblyName System.Drawing

# Gather Screen resolution information
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top

# Set bounds
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height

# Create Object
$graphic = [System.Drawing.Graphics]::FromImage($bitmap)

# Capture
$graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)

# Save
$bitmap.Save($File)

А потом для скрипта триггера

#Setup Variables
$ComputerName = "ComputerName"
$PSExec = "C:\temp\tools\psexec.exe"

# Captures session details
$quser = (((query user /server:$ComputerName) -replace '^>', '') -replace '\s{2,}', ',' | ConvertFrom-Csv)

# Takes screenshot of remote PC
&$PSExec -s -i $quser.ID "\\$ComputerName\" PowerShell -WindowStyle Hidden -File "C:\Temp\screenshot.ps1"
...