powershell - 哪个流在powershell中记录输出文件?
问题描述
默认情况下,文件外记录流 1 还是流 6?
如果我有一个命令:
invoke-expression $cmd *>&1 |
out-file -encoding ASCII -Append FilePath $log
out-file 将哪些流记录到文件中?
1 Success stream PowerShell 2.0 Write-Output
2 Error stream PowerShell 2.0 Write-Error
3 Warning stream PowerShell 3.0 Write-Warning
4 Verbose stream PowerShell 3.0 Write-Verbose
5 Debug stream PowerShell 3.0 Write-Debug
6 Information stream PowerShell 5.0 Write-Information
只是Stream 1吗?还是流 6?我有点困惑,因为大多数 shell 只有 1 和 2,而 powershell 添加了 6,就像 1?
解决方案
您正在使用管道( |
) 向Out-File
.
只有 stream 1
,默认通过管道发送成功(数据)输出流。您引用
的概念about_Redirection帮助主题记录了所有 6 个 PowerShell 流。
可选地 - 正如您所做的那样 -您可以将其他流合并到 stream 中1
,这也会导致它们的输出被包含在内。
您可以合并:
各个流的数量;例如
3>&1
,将警告流 (3
) 合并到成功流中;可以使用多个这样的重定向。所有(其他)流,由 表示
*
,即使用*>&1
由于您使用的是,所有*>&1
流的输出都通过管道发送,因此由Out-File
.
顺便说一句: >
,重定向运算符(与 一起>>
)是 的有效别名Out-File
,因此您可以单独使用它来保存到文件- 假设Out-File
的默认字符编码是可以接受的:[1]
& { 'success'; Write-Warning 'warning' } *> allstreams.txt
定位文件>
还允许您将单个流保存到单独的文件中:
& { 'success'; Write-Warning 'warning' } > data.txt 3> warnings.txt
[1] 在 PowerShell 5.1 及更高版本中,您可以通过首选项变量Out-File
以同样适用于 的方式更改默认编码- 请参阅此答案。>
$PSDefaultParameterValues
推荐阅读
- merge - 使用“将 [分支名称] 合并到当前分支”选项的最佳方法是什么 - SourceTree
- pyinstaller - PyInstaller 导入错误
- microsoft-graph-api - 是否有任何 API 可用于在一个驱动器图 API 中获取垃圾(回收站)项目?
- javascript - PHP 无法上传图片,也看不到 $image 值。所有其他工作,都是关于 ajax,没有刷新表单
- angular - 使用 ng-bootstrap modal Angular 2+ 使模式淡入/淡出
- apache-beam - 在 Apache Beam 中将嵌套的重复字段组合成数组
- jquery - jQuery:在单独的 DIV 上克隆和剪切部分 SVG 图像
- java - 如何使用进度文本作为拇指制作垂直搜索栏
- bootstrap-4 - Jumbotron 图像未显示
- php - 在 laravel 中显示类别级别