我需要从数百个为报告而编写的 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-Csv
或Export-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"