将安装包输出从包管理器控制台保存到文件中

问题描述 投票:0回答:1

我有以下简单的 shell 命令:

PM> ipconfig | Out-File -FilePath c:\log.txt 

此命令运行良好,log.txt 的内容已成功添加到 log.txt 文件中。

但是它不适用于

Install-Package
命令,以下命令不会将输出保存到提供的文件中:

PM> Install-Package Newtonsoft.Json  | Out-File c:\log2.txt 

Attempting to gather dependency information for package 'Newtonsoft.Json.13.0.3' with respect to project 'ConsoleApp5', targeting 
...

log2.txt
已创建,但里面没有内容。如何将所有可能的内容(尤其是来自
Package Manager Console
)保存到文件中?

c# powershell visual-studio nuget package-manager-console
1个回答
0
投票

他们是不同的。

请看Out-File官方文档:

输出文件的描述

ipconfig 是一个将其输出直接写入标准输出流 (

stdout
) 的命令,可以使用
Out-File
轻松将其重定向到文件。但是,
Install-Package
(Visual Studio 中 NuGet 包管理器控制台的 cmdlet)不会以相同的方式写入其输出。

由于从Out-File中获取信息的原理,这样做根本无法获取和输出任何信息。因为这个powershell命令不仅不输出到标准输出流,甚至不输出到标准错误流。以下命令可以确认这一点:

Install-Package Newtonsoft.Json > output.log 2> error.log

因此,使用基于stdout或stderr的技术无法实现您的需求。

可以使用powershell自带的文本捕获命令来输出一些信息。你可以看看这是否是你所需要的:

# Start the transcript, specifying the output file path
Start-Transcript -Path "C:\installation_transcript.txt"

# Run your command here
Install-Package Newtonsoft.Json -Verbose

# Stop the transcript when done
Stop-Transcript
© www.soinside.com 2019 - 2024. All rights reserved.