Мне нужно получить некоторые подробности из сотен 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} } }
Спасибо вам большое за ваше время!
Четыре лучших способа сбросить объекты (и списки объектов) в файл:
ConvertTo-Csv
или Export-Csv
ConvertTo-Html
ConvertTo-Json
ConvertTo-Xml
Имейте в виду, что convertto-*
просто возьмет объект, сериализует и выдаст текст. Итак, вам придется использовать out-file
$test = "I am a object"
$test | ConvertTo-Xml | out-file "C:\test.xml"
Вот небольшая функция под названием 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
Вы должны попробовать какую-нибудь команду, встроенную в PowerShell, например Экспорт-csv, ConvertTo-XML, Out-File, Экспорт-Clixml.
Пример:
Get-Process | Export-Csv process.txt