一个函数提供一些反馈(通过Write-Verbose),处理一个对象,然后将该对象放回输出流。
function f([parameter(Mandatory=$True, ValueFromPipeline=$True [System.Object] $obj)
{
Write-Verbose "Processing obj"
do-something $obj
$obj
}
我需要反馈消息转到控制台和日志文件,但不要进入管道,如
function f([parameter(Mandatory=$True, ValueFromPipeline=$True)][System.Object] $obj)
{
# Show message on the console and write it to the log file.
Write-Verbose "Processing obj" 4>&1 | Tee-Object log.txt
do-something $obj
$obj
}
以上命令不能用于这样的命令:
obj1,obj2,obj3,... | f | do-something-cmdlet
因为Tee-Object会将所有详细消息写入输出流,并将流向下一个管道。
有没有办法完成这项工作,或者我需要一个“日志”功能,可以打印每个消息两次 - 控制台和文件?
答案 0 :(得分:0)
我利用日志功能来做这样的事情。
Function Write-Log
{
Param(
[Parameter(Position=0,ValueFromPipeline)]
[String]$Message
)
Process
{
Write-Host $Message
$Message | Out-File -FilePath $global:LogFile -Append
}
}