Экспорт результатов серверных служб из файла CSV в Powershell
Я пытаюсь сравнить сервисы, работающие на 9 серверах, которые должны иметь одинаковую настройку, но в настоящее время не так. Я решил создать скрипт, который экспортирует все сервисы из powershell в файл csv, поэтому я сравниваю серверы от a до b, от a до c, от a до d и т. Д.
Каждый CSV-файл содержит следующие столбцы: имя, заголовок, состояние, начальный режим
Я хотел бы иметь возможность сравнить различия и придумал небольшой скрипт powershell, показанный ниже
$IWB06 = import-csv C:\PS_Temp\PIN-VUHOIWB06_Services.csv
$IWB09 = import-csv C:\PS_Temp\PIN-VUHOIWB09_Services.csv
Compare-Object -ReferenceObject $IWB06 -DifferenceObject $IWB09 -Property 'Unique ID', 'name', 'caption', 'state', 'startmode', 'comparrison' -PassThru -IncludeEqual |
Format-Table -AutoSize
Моя единственная проблема заключается в том, что это отображается на консоли PowerShell, но я не могу экспортировать результаты в файл CSV.
Любое предложение о том, как экспортировать то, что отображается в консоли в файл CSV
3 ответа
Замените свою последнюю строку следующим:
$Results = Compare-Object -ReferenceObject $IWB06 -DifferenceObject $IWB09 -Property 'Unique ID', 'name', 'caption', 'state', 'startmode', 'comparrison' -PassThru -IncludeEqual
$Results | Export-Csv -NoTypeInformation -Encoding Unicode -Path C:\temp\MyResult.csv #Replace with your output csv destination
Сравнение двух файлов одновременно звучит очень неэффективно. Почему бы не объединить все ваши CSV в один объект с дополнительным столбцом, обозначающим источник. Вы могли бы тогда использовать Group-Object
чтобы подвести итог. Что-то вроде этого:
$path = 'C:\PS_Temp\{0}'
(ls *.csv).Name | % {
$file = $_
Write-Host $_
(Import-Csv ($path -f $_)).'Unique ID' | % {
New-Object psobject -Property @{
file = $file
id = $_
}
}
} | Group-Object id | % {
$_ | Add-Member -MemberType NoteProperty -Name Files -Value ($_.Group.file -Join '|') -PassThru
} | Select Name, Files, Count
Это простой пример, использующий только уникальный идентификатор, но вы можете расширить его, чтобы включить другие столбцы.
Вывод будет что-то вроде этого:
Name Files Count
---- ----- -----
3 PIN-VUHOIWB06.csv|PIN-VUHOIWB09.csv 2
4 PIN-VUHOIWB06.csv|PIN-VUHOIWB09.csv 2
5 PIN-VUHOIWB06.csv|PIN-VUHOIWB09.csv 2
6 PIN-VUHOIWB06.csv|PIN-VUHOIWB09.csv 2
7 PIN-VUHOIWB06.csv 1
8 PIN-VUHOIWB06.csv 1
9 PIN-VUHOIWB06.csv 1
1 PIN-VUHOIWB09.csv 1
2 PIN-VUHOIWB09.csv 1
Добавьте это к своему коду:
$comparison = Compare-Object -ReferenceObject $IWB06 -DifferenceObject $IWB09 -Property 'Unique ID', 'name', 'caption', 'state', 'startmode', 'comparrison' -PassThru -IncludeEqual |
$comparison | Export-CSV -path $someFullPath