Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 173
Благодарности: 4

Профиль | Отправить PM | Цитировать


Вообщем я сдался
Нашел как это можно скинуть в ячейки Excel
Создается файл, затем в ячейки через цикл вносятся данные:
Сразу могу сказать, что не получилось:
1. удаление листов не срабатывает - закоментировал.
2. при закрытие таблицы, процесс excel висит в памяти
3. нужно искать, чтобы он это всё сам сохранял
Код: Выделить весь код
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
#добавляем рабочую книгу
$workbook = $excel.workbooks.add()
#обращаемся к первому листу-книге
$sheet = $workbook.worksheets.Item(1)
#удаляем лишние книги
#$workbook.workSheets.item(2).delete()
#$workbook.WorkSheets.item(3).delete()
#Задаем массив имен компьютеров
$pslist = Get-Content pslist.txt
#Переименновываем таблицу
$workbook.WorkSheets.item(1).Name = "Processes"
#Получаем ссылку на переименовыванную таблицу
$sheet = $workbook.WorkSheets.Item("Processes")
#Начинаем отчет от второй строки, поскольку в первой строке - имя столбца
$x = 2
#Что-то сложное и не понятное - судя по названию для форматирования
$lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
$colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type]
$borderWeight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
$chartType = "microsoft.office.interop.excel.xlChartType" -as [type]
#Форматируем первую строку - Жирный шрифт и т.д.
For ($b = 1; $b -le 2; $b++)
{
 $sheet.cells.item(1,$b).font.bold = $true
 $sheet.cells.item(1,$b).borders.LineStyle = $lineStyle::xlDashDot
 $sheet.cells.item(1,$b).borders.ColorIndex = $colorIndex::xlColorIndexAutomatic
 $sheet.cells.item(1,$b).borders.weight = $borderWeight::xlMedium
}
#Задаем названия столбцов - первая строка
$sheet.cells.item(1,1) = "Host Name"
$sheet.cells.item(1,2) = "Str1"
$sheet.cells.item(1,3) = "Str2"
$sheet.cells.item(1,4) = "Str3"
$sheet.cells.item(1,5) = "Ctr4"
# Обрабатываем данные в цикле

foreach ($1 in $pslist) 
{
 $INI = Get-Content -Path "\\$1\c$\windows\file.ini"
 $Str1 = ($ini | Select-String Str1) -replace "Str1=",""
 $Str2 = ($ini | Select-String Str2) -replace "Str2",""
 $Str3 = ($ini | Select-String Str3) -replace "Str3",""
 $Str4 = ($ini | Select-String Str4) -replace "Str4",""
#начинаем писать в ячейки полученные значения 
$sheet.cells.item($x,1) = $1
 $sheet.cells.item($x,2) = $Str1
 $sheet.cells.item($x,3) = $Str2
 $sheet.cells.item($x,4) = $Str3
 $sheet.cells.item($x,5) = $Str4
 $x++
}
#делаем ячейки по ширине данных
$range = $sheet.usedRange
$range.EntireColumn.AutoFit() | out-null
#end foreach

С уважением, Евгений

Отправлено: 17:19, 18-03-2011 | #3