Назад | Перейти на главную страницу

Как я могу экспортировать результаты моего скрипта в файл?

Мне нужно получить некоторые подробности из сотен 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} } } 

Спасибо вам большое за ваше время!

Четыре лучших способа сбросить объекты (и списки объектов) в файл:

  • 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"

Вот небольшая функция под названием 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