PowerShell Tee-Object无需覆盖文件

时间:2013-03-29 03:43:56

标签: powershell powershell-v2.0

我正在尝试创建一个使用Tee-Object将变量放入文件(minedown.conf)的应用程序,但每次向文件添加内容时都会覆盖它。我正在使用

$account = Read-Host "Enter your Account SID number"
"account = $account" | Tee-Object -FilePath c:\minedown\minedown.conf
$token = Read-Host "Enter your Authority Token"
"token = $token" | Tee-Object -FilePath c:\minedown\minedown.conf
$from = Read-Host "Enter your Twilio number"
"from - $from" | Tee-Object -FilePath c:\minedown\minedown.conf

我正试图让每一条都成为一条单独的线。

3 个答案:

答案 0 :(得分:9)

另外,在PowerShell 3.0中,-Append开关已添加到Tee-Object cmdlet。

答案 1 :(得分:4)

Tee-Object不是您要查找的CmdLet,请尝试Set-contentAdd-Content

$account = Read-Host "Enter your Account SID number"
"account = $account" | Set-content -Path c:\minedown\minedown.conf
$token = Read-Host "Enter your Authority Token"
"token = $token" | Add-Content -Path c:\minedown\minedown.conf
$from = Read-Host "Enter your Twilio number"
"from - $from" | Add-Content -Path c:\minedown\minedown.conf

Tee-Object的目的实际上是在管道序列中充当'T',以便将数据从输入发送到输出并发送到文件或变量(以便调试管道)序列例如。

答案 2 :(得分:1)

如上所述,Tee-Object(别名tee)用于将输出分成两个方向。在Linux(tee)上,它对于进入屏幕和&文件。在PowerShell中,更多的是用于放置屏幕并将其重新放回管道以及其他东西,但不能执行追加。不是你真的想要它。

但是,我需要使用Linux方式并将其显示在屏幕上以及写入文件(在追加模式下)。所以我使用下面的方法首先将它写入管道,然后将它放到屏幕上(带有颜色)并将其放在一个附加到的文件中,而不是仅仅覆盖。也许对某人有用:

Write-Output "from - $from" | %{write-host $_ -ForegroundColor Blue; out-file -filepath c:\minedown\minedown.conf -inputobject $_ -append}