如何使用Powershell远程截图

omvjsjqw  于 2023-11-18  发布在  Shell
关注(0)|答案(1)|浏览(139)

我正试图弄清楚如何通过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来自here,但我在脚本的底部添加了以下内容以实际运行该函数。

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


截图后,我会把它复制回主机,但问题是图片是完全黑色的。
我想这可能是因为powershell正在运行该程序,但没有附加到它的会话,所以真的没有屏幕??

aoyhnmkz

aoyhnmkz1#

所以我让这个工作,但它是一个有点参与。工程与多个显示器。
您需要在远程PC上安装Screenshot.ps1,在本地PC(Google)上安装触发器脚本和PSExec。

# 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"

相关问题