如何使用Powershell进行远程截图
How to take a remote screenshot with Powershell
我正在尝试弄清楚如何通过 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 运行正在运行程序,但没有附加会话,所以真的没有屏幕??
所以我让它工作了,但它有点复杂。适用于多台显示器。
远程 PC 上需要 Screenshot.ps1
,本地 PC 上需要触发脚本和 PSExec (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"
我正在尝试弄清楚如何通过 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 运行正在运行程序,但没有附加会话,所以真的没有屏幕??
所以我让它工作了,但它有点复杂。适用于多台显示器。
远程 PC 上需要 Screenshot.ps1
,本地 PC 上需要触发脚本和 PSExec (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"