在 PowerShell 脚本中,我有一个类似的函数Log-Statistics()
,它只是将一些内容输出到标准输出。但它也可以将内容输出到特定的日志文件。
但是,Log-
不是一个批准的 PS 动词。
有什么推荐吗?
我正在考虑:
Out-Statistics()
Write-Statistics()
LogStatistics()
在 PowerShell 脚本中,我有一个类似的函数Log-Statistics()
,它只是将一些内容输出到标准输出。但它也可以将内容输出到特定的日志文件。
但是,Log-
不是一个批准的 PS 动词。
有什么推荐吗?
我正在考虑:
Out-Statistics()
Write-Statistics()
LogStatistics()
考虑到其他示例,我决定使用WRITE
它确实执行写入操作(在屏幕上或作为文件)。
OUT
(对我来说)意味着这是输出(管道的 iE 端)
我有Write-Log
和Write-ErrorLog
作为我使用的辅助函数(及其其他变体)(虽然不是最佳实践,但我通常将我的 Write-Log 与一个-Append
开关配合使用,以不覆盖日志(并找到我快速写入输出的所有实例) . 理想情况下,这是用已经存在的Add-Content
) 完成的。
它也很适合他们的表亲Write-Error
,,,,Write-Warning
等Write-Verbose
。
不幸的是,您链接到的文档并未反映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 的某些批准的动词不是严格的自然语言语法意义上的动词。
我会使用类似 Invoke-LogStatistics()