shell脚本怎么加入按键精灵脚本时间限制制?

Write-Host 输出与输出对象、字符串和 PowerShell 听录混合使用很复杂。 脚本与听录使用 PowerShell 管道的方式之间存在微妙的交互,这可能会产生意想不到的结果。

从脚本发出对象时,这些对象的格式由 Out-Default 进行处理。 但是,脚本完成并停止听录后,可能会发生格式设置。 这意味着输出不会被转录。 字符串的处理方式有所不同。 有时,字符串输出通过格式传递,但并非总是如此。 Write-Host 会立即写入主机进程。 Write-Object 通过格式设置系统发送。 将复杂对象的输出与到主机的写入相结合使得很难预测哪些内容会记录到转录中。

场景 1 - 结构化对象在所有其他操作末尾的输出

请考虑以下脚本及其输出:

控制台的输出显示预期的输出,但不按预期的顺序显示。 Write-Host 4 显示在 Get-Location 之前,因为 Write-Host 已经过优化,会直接写入主机。 听录中有一个代码,用于将输出复制到转录文件和控制台。 然后,我们就有了作为脚本输出发送的常规

由于在脚本退出前已关闭听录,因此不会在转录中呈现。 对象已发送给管道中的下一个使用者。 在本例中是 Out-Default,它是由 PowerShell 自动插入的。 为了进一步复杂化,字符串的输出也会在格式设置系统中得到优化。 第一个 Write-Output 2 被发出并由转录捕获。 但是,插入 Get-Location 对象会导致其输出推送到需要实际格式设置的内容堆栈中,这将为可能还需要格式设置的任何其余对象设置一些状态。 正因如此,第二个 Write-Output 5 脚本未添加到转录中。

场景 2 - 将对象发出操作移到开头

请考虑以下脚本及其输出:

我们可以看到,Write-Host 命令发生在任何内容之前,然后对象开始出现。字符串的 Write-Output 强制对象在屏幕上呈现,但请注意转录仅包含 Write-Host 的输出。 这是因为这些字符串对象在脚本关闭听录后通过管道传递给 Out-Default 进行格式设置。

场景 3 - 在脚本末尾发出对象

在此场景中,复杂对象的输出位于脚本末尾。

此示例与最初的场景相比略有差别,但现在所有内容都记录到转录中。 原始代码包装在脚本块中,格式化程序通过 Out-Default 显式调用。

请注意,最后一次 Write-Host 调用仍然无序,这是因为 Write-Host 中的优化不会进入输出流。

}

我要回帖

更多关于 按键精灵脚本时间限制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信