Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Powershell拍摄远程屏幕截图_Powershell_Active Directory_Screen Capture - Fatal编程技术网

如何使用Powershell拍摄远程屏幕截图

如何使用Powershell拍摄远程屏幕截图,powershell,active-directory,screen-capture,Powershell,Active Directory,Screen Capture,我正在尝试找出如何通过PowerShell从AD服务器上的管理员帐户到网络上的任何计算机进行远程屏幕截图 到目前为止,我有以下几点 $ComputerName = '<THECOMPUTER>' copy-item "C:\Public\Software\Take-Screenshot.ps1" "\\$ComputerName\C$\" Invoke-Command -ComputerName $ComputerName -ScriptBlock { power

我正在尝试找出如何通过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"
 } 
截图拍摄完成后,我会将其复制回主机,但问题是图片完全是黑色的


我想这可能是因为powershell正在运行该程序,但是没有连接到它的会话,所以确实没有屏幕

所以我做了这个,但有点牵扯其中。可与多个监视器配合使用

您需要在远程PC上安装
Screenshot.ps1
,在本地PC(谷歌)上安装触发器脚本和PSExec

然后是触发器脚本

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

首先创建远程PSSession是否有助于渲染屏幕截图?不,还是一张空白图片。你可以从NirSoft.net尝试nircmd.exe,它适合我。这太完美了。实际上,在我意识到需要将psexec附加到会话之后,我开始使用psexec,但我的尝试效果不佳。添加了一些代码来选择一个特定的用户,并将screenshot.ps1传输到机器上,但除此之外,这正是我想要的!我确实注意到,即使
-WindowStyle
隐藏的,当PSExec运行时,屏幕上的一个黑匣子闪烁了几分之一秒。有没有办法不隐藏它?可能有点晚了-为了摆脱黑匣子,你需要从一些已经不可见的东西启动ps1,比如vbs文件
# 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"