【发布时间】:2014-07-11 15:53:44
【问题描述】:
我有功能可以输出到不同的多个位置,如下所示:
Function OutputToInfo
{
%{
Write-Host $_;
Out-File -FilePath $InfoLog -InputObject $_ -Append
}
}
但是,当我运行我的脚本并像这样调用函数时:
"Script started at: ${TS}" | OutputToInfo
它不会输出到任何一个位置。输出到控制台的是函数本身-
%{
Write-Host $_;
Out-File -FilePath $InfoLog -InputObject $_ -Append
}
此代码有效:
"Script started at: ${TS}" | %{write-host $_; out-file -filepath $ErrorLog -inputobject $_ -append}
但是我的脚本在我想输出到多个位置的每一行之后看起来都很草率。
有人知道为什么我的功能没有按预期工作吗?
【问题讨论】:
-
听起来您正在尝试实现自己的
Tee-Object版本。该 cmdlet 是否不足以满足您的要求? -
不幸的是,事实并非如此。我需要同时写入控制台以及其他文件(有时超过两个)。不过,我想我正在取得一些进展。不知道为什么我在我的职能一开始就有“回归”。编辑 OP 以反映新代码和新错误。
-
Tee-Object写入文件和输出流。这涵盖了您的前 2 个功能。要写入两个文件,请在管道中连续调用两次Tee-Object。或者编写一个函数,该函数接受一组文件名来写入并循环遍历它。 -
我根据我的其他线程的答案进行了尝试 - link 但无法让它与我的脚本一起使用。人们建议其他可行的替代方案,例如我现在使用的替代方案。我只是不确定为什么它不能在函数中工作。
标签: powershell output powershell-2.0 user-defined-functions