长powershell命令的自动屏幕捕获(非文本输出)

时间:2019-01-10 18:07:07

标签: powershell screenshot

是否有一种方法可以自动拍摄一个或一系列快照来捕获powershell命令的整个输出?能够看到原始命令和/或Powershell窗口会很好。

这对于政府合规团队来说是必要的,因为他们感到安慰的是图片比文本输出要修改的工作更多。

New-Screenshot函数看起来很有希望,但是它使用打印屏幕将图像保存到剪贴板。另一种方法看起来很有希望,因为它们可以捕获缓冲区$Host.UI.RawUI.GetBufferContents中的所有文本。

自动化步骤

  1. [完成]运行clear
  2. [完成]运行命令
    • 可能将命令通过管道传递到more以查看其分页
  3. [完成]仅在命令窗口中单击打印屏幕并保存到文件
  4. 向下滚动到下一页并重复第3步,直到输出被完全捕获为止
  5. 将所有图像纳入单个图像。
  6. 重复步骤1并运行下一个命令,直到完成。

另一种方法是使文本实际变小以使其适合单个窗口。我宁愿选择第一种解决方案,但找不到通过Powershell滚动窗口的方法。

1 个答案:

答案 0 :(得分:1)

为什么不使用内置的Windows PSR工具?

当您单击屏幕上的任意位置时,这就是Windows实时捕获的内容。

Windows Problem Steps Recorder (PSR): quick and easy documenting of your steps and procedures

  

问题步骤记录器是Windows中可用的工具,因为   Windows 7(客户端)/ Windows 2008 R2。

     

在此博客文章Jump中,您将能够找到有关PSR的更多详细信息   (或问题步骤记录器)。

     

简而言之:

     

•这是内置的Windows工具,
  •允许单击鼠标捕获屏幕
  •并添加评论

尽管该链接讨论的是旧版OS,但仍在每个当前的Windows OS版本中 这会将其保存为.htm文件,该文件可以在任何浏览器中查看。

或者如果您打算使用PowerShell进行操作,请参见此脚本。

Automating Screenshots with PowerShell

<#
.SYNOPSIS

    Get-TimedScreenshot

    Author: Chris Campbell (@obscuresec)
    License: BSD 3-Clause

.DESCRIPTION

    A function that takes screenshots and saves them to a folder.

.PARAMETER $Path

    Specifies the folder path.

.PARAMETER $Interval

    Specifies the interval in seconds between taking screenshots.

.PARAMETER $EndTime

    Specifies when the script should stop running in the format HH-MM 

.EXAMPLE 

    PS C:\> Get-TimedScreenshot -Path c:\temp\ -Interval 30 -EndTime 14:00 

尽管如此,您现在仍然必须将其组装到word文档和链接中,或者手动查看每个文件以获取所需的照片。

OP的更新

至于……

  

可以使用定时的屏幕截图,但是我必须找到一种自动化的方法   向下滚动直到输出结束。

…您可以只使用Sendkeys Pagedown(我知道,我知道,sendkeys是一种hack),也可以看看使用selenium-powershell来实现针对任何目标屏幕的其他GUI自动化。 WASP仍然是一种选择,尽管不再适用。