1

在 PowerShell 脚本中,我有一个类似的函数Log-Statistics(),它只是将一些内容输出到标准输出。但它也可以将内容输出到特定的日志文件。

但是,Log-不是一个批准的 PS 动词

有什么推荐吗?

我正在考虑:

  • Out-Statistics()
  • Write-Statistics()
  • LogStatistics()
4

3 回答 3

2

考虑到其他示例,我决定使用WRITE它确实执行写入操作(在屏幕上或作为文件)。 OUT(对我来说)意味着这是输出(管道的 iE 端)

我有Write-LogWrite-ErrorLog作为我使用的辅助函数(及其其他变体)(虽然不是最佳实践,但我通常将我的 Write-Log 与一个-Append开关配合使用,以不覆盖日志(并找到我快速写入输出的所有实例) . 理想情况下,这是用已经存在的Add-Content) 完成的。

它也很适合他们的表亲Write-Error,,,,Write-WarningWrite-Verbose

于 2020-09-03T11:00:30.737 回答
1

不幸的是,您链接到的文档并未反映Out-*cmdlet 的共同点是使用 PowerShell 的显示输出格式化系统(导致对象的丰富、多行表示)这一事实。

鉴于日志通常是面向行的,并且理想情况下应该适合编程处理Out因此不是正确的动词[1]使用。


请注意,PowerShell 命令不会将其(常规)输出写入标准输出(标准输出),因为 PowerShell 具有更复杂的6 个输出流系统 - 请参阅about_Redirections - 其中流号1,成功输出流,用于数据只有.


Add,按照 的示例Add-Content在按需创建时附加到现有资源。

但是,这种逻辑在内置 cmdlet 中并不一致,因为有些只有默认创建或替换形式(例如,Out-File),并带有一个可选-Append开关作为附加内容的选择。


基于上述,一种选择是:

  • 使用并且默认情况下,通过(假设该命令在 PowerShell 中实现)Add-Statistics将其输出到信息流( ) ,因此它不会干扰数据(成功流)输出。6
    Write-Information

    • 注意:默认Write-Information静音,您可以通过-InformationAction常用参数或$InformationPreference首选项变量进行更改。或者,使用Write-Host,它(在 PSv5+ 中)也写入信息流 ( ),但默认情况下显示6其输出。
  • 要么添加一个-OutFile参数来Add-Statistics写入文件(按需创建它),要么让调用者将信息流输出重定向到具有类似内容的文件6>log.txt(即使Write-Information输出无声,如果没有重定向,它也可以工作)。


[1] 如链接文档中所述,“动词”在这里使用松散;PowerShell 的某些批准的动词不是严格的自然语言语法意义上的动词。

于 2020-07-08T22:20:59.283 回答
0

我会使用类似 Invoke-LogStatistics()

于 2021-09-08T13:52:00.610 回答