PowerShell写入主机附加到文本文件

PowerShell写入主机附加到文本文件,powershell,Powershell,我是PowerShell新手,正在编写一个超过500行的脚本。 我经常使用write host命令。现在我正在做日志部分。 还有,很抱歉英语不好 我希望脚本将每个write host命令保存在.txt中, 追加并仍然让write host命令输出传递到Shell输出 我尝试过的事情: &{ # the script } *>> $logPath 它可以工作,但不允许输出通过。一种方法是通过如下方式包装整个脚本来使用cmdlet:- @( Write-Output &quo

我是PowerShell新手,正在编写一个超过500行的脚本。 我经常使用
write host
命令。现在我正在做日志部分。 还有,很抱歉英语不好

我希望脚本将每个
write host
命令保存在.txt中, 追加并仍然让
write host
命令输出传递到Shell输出

我尝试过的事情:

&{
# the script 
} *>> $logPath

它可以工作,但不允许输出通过。

一种方法是通过如下方式包装整个脚本来使用cmdlet:-

@(
Write-Output "######### Loop 1 #########"
foreach ($i in (1..5))
{
    Write-Output $i "--> Loop1"
}

Write-Output "######### Loop 2 #########"
foreach ($i in (6..11))
{
    Write-Output $i "--> Loop2"
}

Write-Output "######### Loop 3 #########"
foreach ($i in (12..15))
{
    Write-Output $i "--> Loop3"
}
) | Out-file $env:USERPROFILE\Desktop\Output.txt -width 50

使用
Write Output
而不是
Write Host
作为
Write Host
写入控制台本身,其中as
Write Output
将输出发送到管道。有关详细信息,请参阅。

我无法复制您的问题。如果我将脚本替换为写入主机“Hello World”,它会将
Hello World
写入显示器。对于PowerShell版本,您正在使用吗?
Tee对象
cmdlet就是为此而设计的。它将输出传递到控制台和文件。
@(
Write-Output "######### Loop 1 #########"
foreach ($i in (1..5))
{
    Write-Output $i "--> Loop1"
}

Write-Output "######### Loop 2 #########"
foreach ($i in (6..11))
{
    Write-Output $i "--> Loop2"
}

Write-Output "######### Loop 3 #########"
foreach ($i in (12..15))
{
    Write-Output $i "--> Loop3"
}
) | Out-file $env:USERPROFILE\Desktop\Output.txt -width 50