【问题标题】:How to write the output of powershell query to txt or csv file?如何将 powershell 查询的输出写入 txt 或 csv 文件?
【发布时间】:2015-06-29 11:20:23
【问题描述】:

我有一个保留批量 IP 地址的查询,但找不到将输出写入 txt 或 csv 文件的方法。我曾尝试使用 export-csv 和 out-file cmdlet,但它不起作用。

Foreach ($line in (Import-Csv -header Scope,IP,MAC,Hostname  -Path C:\temp\NewDHCP.csv))
{
    Add-DhcpServerv4Reservation -ComputerName dhcp server-ScopeId $line.scope -IPAddress $line.IP -ClientId $line.MAC -HostName $line.hostname -Description "Reservation for Printer"| outfile c:\temp\result.txt
} 

Result.txt 文件为空。

希望查看输出是预订成功完成还是出现错误。

【问题讨论】:

  • 值得注意的是,您可以将outfile 更改为add-content,并且该脚本应该可以正常工作以查看成功的条目。请记住,Add-DhcpServerv4Reservation 返回的是一个具有许多属性的对象,而不仅仅是一个字符串,因此默认情况下它可能不会很好地输出,特别是因为它只是一个 WMI 包装器。请参阅TechNet,特别是输出部分。如果您希望文件中出现错误,请在管道之前添加 `2>&1`。

标签: powershell


【解决方案1】:

Out-File 移到foreach 括号外:

Foreach($line in $stuff) {Do-Stuff $line} | Out-File c:\temp\result.txt

如果您将Out-File 留在foreach 循环中,则默认行为将在每次迭代时覆盖文件。

此外,如果您删除 Out-File,请确保脚本确实将数据返回到控制台

编辑

Mike 是对的,前面的命令不会输出。 我通常这样做 foreach ,这确实有效:

$stuff | %{Do-Stuff $_} | Out-File c:\temp\result.txt

【讨论】:

  • 您使用的是ForEach-Object 的缩写,实际上与ForEach 循环的功能不同。此外,虽然您不能从 ForEach 循环中进行管道传输,但您可以将输出分配给一个变量,然后对其进行管道传输。
  • 从未意识到有什么不同。谢谢!
【解决方案2】:

大部分只是一个仅供参考,但你应该有什么工作,但可能有两点值得一提:

  1. 我希望这只是一个错字,但在问题中你有OutFile 应该只是Out-File
  2. 将日志记录移到循环之外是一个好主意,但对于您拥有它的方式,只需添加-Append 开关可能会得到您正在寻找的结果。还有-Encoding ASCII,具体取决于您的输出。

我不熟悉 cmdlet Add-DhcpServerv4Reservation,但只要将结果发送到标准输出,这一切都会起作用。

【讨论】:

    【解决方案3】:

    @Jon 很接近,但你不能像这样通过管道传递 foreach 循环。

    不过,您可以将它包含在 $() 中。看起来有点讨厌,但它确实有效。

    $(Foreach ($line in (Import-Csv -header Scope,IP,MAC,Hostname  -Path C:\temp\NewDHCP.csv))
    {
        Add-DhcpServerv4Reservation -ComputerName dhcp server-ScopeId $line.scope -IPAddress $line.IP -ClientId $line.MAC -HostName $line.hostname -Description "Reservation for Printer" 
    } ) | out-file c:\temp\result.txt
    

    【讨论】:

    • “你不能像这样管道一个 foreach 循环”。当然可以,我一直都这样做。
    • Nvm,看起来它不适用于 Foreach。我总是使用%{},它可以正常工作。奇怪
    猜你喜欢
    • 2021-09-12
    • 2018-07-11
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多