如何将脚本的结果导出到文件?

如何将脚本的结果导出到文件?

我需要从数百个为报告而编写的 XML 文件中获取一些详细信息。下面的脚本提供了正确的结果,但我希望它们以文件、cvs、xls 或 txt 的形式呈现,这样我就可以提供这些报告正在使用的数据库字段列表。

$get = get-childitem D:\Data\Desktop\Projects\Reports\Test -include *.xml -recurse 
ForEach ($xmlfile in $get)
{
$Report = $xmlfile
$Fields = [xml](Get-Content $Report)
$Fields.reportsettings.fieldlist.field | select @{ L = 'Description'; E = {$_.desc}},
                                                @{ L = 'Field Name'; E = {$_.criterion}},
                                                @{ L = 'Field ID'; E = {$_.id} } } 

非常感谢您的宝贵时间!

答案1

这是一个名为 Out-ExcelReport 的小函数。只需将任何内容输入到该函数,它就会在 Microsoft Excel 中打开 - 前提是您的系统中安装了该函数:

function Out-ExcelReport
{
  param
  (
    $Path = "$env:temp\$(Get-Random).csv"
  )

  $Input | Export-Csv -Path $Path -Encoding UTF8 -NoTypeInformation -UseCulture
  Invoke-Item -Path $Path
}
Get-Process | Out-ExcelReport

答案2

将对象(和对象列表)转储到文件的 4 种最佳方法是:

  • CSV -ConvertTo-CsvExport-Csv
  • HTML -ConvertTo-Html
  • JSON-ConvertTo-Json
  • XML-ConvertTo-Xml

请记住,这convertto-*只会获取对象、序列化并输出文本。因此,您必须使用out-file

$test = "I am a object"
$test | ConvertTo-Xml | out-file "C:\test.xml"

答案3

您应该尝试 PowerShell 中的一些内置命令,例如导出-csv转换为 XML输出文件出口-Clixml

例子:

Get-Process | Export-Csv process.txt

相关内容