Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 27.12.2017
Сообщений: 25

Вывод результата выполнения скрипта в .csv

25.06.2018, 09:47. Показов 2844. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня, нужна помощь с:
Cкрипт опрашивает около 200 компьютеров в лесу AD. Не все из них могут быть доступны, а опросить в конечном итоге нужно ВСЕ. Как можно уговорить скрипт при экспортировании в .csv файл не заменять строки с существующими компьютерами, но вносить те до которых ранее он не мог достучаться, но теперь они доступны?

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
cls 
$OUpaths = @('OU=Computers,OU=DK,DC=domain,DC=com')
 
foreach ($iOUpath in $OUpaths) 
{ 
($all_PC += Get-ADComputer -SearchBase $iOUpath -Filter *) 
} 
$infoColl = @() 
$all_PC | %{ 
$PC = $_ 
$PC_name = $PC.name 
if (Test-Connection $PC_name -Count 1 -ErrorAction "SilentlyContinue"){ 
$PC_group_all | %{ 
$PC_group = $_ 
Write-Output "$PC_group" 
Write-Host "Добро пожаловать. Начата проверка компьютера" -ForeGroundColor Green $PC_name 
$a = 1 
$b = 1 
$c = 1 
function get-monitorsize 
{ 
Get-WmiObject -computername $PC_name -Namespace root\wmi -Class WmiMonitorBasicDisplayParams | 
select @{N=”Computer”; E={$_.__SERVER}}, 
InstanceName, 
@{N=”Horizonal”; E={[System.Math]::Round(($_.MaxHorizontalImageSize/2.54), 2)}}, 
@{N=”Vertical”; E={[System.Math]::Round(($_.MaxVerticalImageSize/2.54), 2)}}, 
@{N=”Size”;E={[System.Math]::Round(([System.Math]::Sqrt([System.Math]::Pow($_.MaxHorizontalImageSize, 2) + [System.Math]::Pow($_.MaxVerticalImageSize, 2))/2.54),2)}} 
} 
$CPU = Get-WmiObject -computername $PC_name Win32_Processor 
$OSInfo = Get-WmiObject -computerName $PC_name Win32_OperatingSystem 
$Motherinfo = Get-WmiObject -computername $PC_name Win32_BaseBoard 
$HDDInfo = Get-WmiObject -computername $PC_name Win32_DiskDrive 
$LogicInfo = Get-WmiObject -Filter "DriveType=3" -computername $PC_name Win32_LogicalDisk 
$VideoInfo = Get-WmiObject -computername $PC_name Win32_videoController 
$MonitorInfo = Get-WmiObject -computername $PC_name Win32_DesktopMonitor 
$OSTotalVirtualMemory = [math]::round($OSInfo.TotalVirtualMemorySize / 1MB, 2) 
$OSTotalVisibleMemory = [math]::round(($OSInfo.TotalVisibleMemorySize / 1MB), 2) 
$PhysicalMemory = Get-WmiObject CIM_PhysicalMemory -ComputerName $PC_name | Measure-Object -Property capacity -Sum | % { [Math]::Round(($_.sum / 1GB), 2)} 
$DiskSpace = Get-WmiObject -computername $PC_name Win32_LogicalDisk -Filter "DriveType=3" | % {[math]::round($_.Size / 1GB, 2)} 
$DiagonalInf = get-monitorsize -computername $PC_name 
 
$infoObject = New-Object PSObject 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Имя компьютера" -value $PC_name 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Процессор" -value $CPU.Name 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Материнская плата" -value $Motherinfo.Manufacturer 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Модель мат. платы" -value $Motherinfo.Product 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Оперативная память" -value $PhysicalMemory 
foreach ($HDD in $HDDInfo) 
{ 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Жесткий диск $a" -value $HDD.Model 
$a++ 
} 
foreach ($Space in $DiskSpace) 
{ 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Размер HDD $b" -value $Space 
$b++ 
} 
foreach ($Diagonal in $DiagonalInf) 
{ 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Диагональ монитора $c" -value $Diagonal.size 
$c++ 
} 
$infoObject 
$infoColl += $infoObject 
} 
} 
else {Write-Host "Не могу достучаться до $PC_name" -ForeGroundColor Red} 
 
$infoColl | Export-Csv -path C:\AC\Инвентаризация_$((Get-Date).ToString('MM-dd-yyyy')).csv -Encoding UTF8 -Delimiter ";" -NoTypeInformation}
Как выглядит выходной файл в данный момент (Для наглядности) https://pp.userapi.com/c845523... XgkTXo.jpg
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2018, 09:47
Ответы с готовыми решениями:

Вывод результата выполнения скрипта в Excel
И снова добрый день с: Есть некий скрипт, проверяющий железки на всех компьютерах в лесу AD и выводящий результат для каждой отдельной...

Вывод результата выполнения скрипта в модальном окне
суть в следующем: на сайте в шапке задуман адрес и ссылка на схему проезда. в яндексовском api-maps сгенерировал скрипт на вывод объекта...

Обработка результата выполнения SQL скрипта
есть скрипт UPDATE tblProduct SET Name = 'Работ' WHERE ProductID = 34 AND TimeStampF = 0x000000000000659C IF (@@ROWCOUNT = 0) ...

4
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
25.06.2018, 10:40
Цитата Сообщение от AsterCody Посмотреть сообщение
Export-Csv
Дык, man export-csv -full, где есть:
-Append [<SwitchParameter>]
Indicates that this cmdlet adds the CSV output to the end of the specified file. Without this parameter, Export
-CSV replaces the file contents without warning.

This parameter was introduced in Windows PowerShell 3.0.
0
0 / 0 / 0
Регистрация: 27.12.2017
Сообщений: 25
25.06.2018, 16:10  [ТС]
Я в этом деле не сильно сведущий, можете разжевать? с:

Добавлено через 2 часа 3 минуты
Мне нужно чтобы скрипт не записывал данные об опрашиваемом компьютере если его имя уже есть в .csv файле в первом столбце "Имя компьютера", то бишь пропускал его и продолжал опрашивать пока не опросит и не запишет в одном экземпляре данные обо всех компьютерах в лесу.
0
 Аватар для volodin661
6677 / 2270 / 346
Регистрация: 10.12.2013
Сообщений: 7,838
25.06.2018, 16:31
Я бы ( да, думаю, и любой, кто возьмётся решать задачу подобного рода ) запихивал бы результат в БД для достижения наилучших результатов.

Схема следующая: сначала производится SQL-операция UPDATE, если она заканчивается неудачей, производится операция INSERT.




( Но разжёвывать, конечно же, не хочется )
0
 Аватар для bidstrup
419 / 179 / 27
Регистрация: 11.03.2018
Сообщений: 771
26.06.2018, 22:31
AsterCody,

С учётом предыдущих вопросов на эту тему:
Сначала создаётся соответствующая таблица в базе данных SQL Server (Express version).

Затем:
  1. Результаты опроса зверей компьютеров в лесу складываются в эту таблицу.
  2. Если нужно представление результатов в Excel - виде, то он генерируется из этой таблицы.
Для второго пункта возможны два варианта:
  • Генерация отчётов с помощью ReportBuilder с последующим экспортом в XLS
  • Генерация отчётов самостоятельно скриптом Powershell.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2018, 22:31
Помогаю со студенческими работами здесь

Вывод результата с csv в таблицу.
Ребята, помогите! Выводит найденное в один столбец. Как сделать, чтоб выводило строки согласно шапке??? &lt;table border=&quot;1&quot;...

AJAX выводит код скрипта вместо его выполнения и вывода результата
ajax.js var default_content=&quot;&quot;; $(document).ready(function(){ checkURL(); $('ul li a').click(function (e){ ...

Вывод результата скрипта в intup
Добрый день! имеем скрип &lt;script&gt; ... ... document.querySelector(&quot;#pot&quot;).textContent = timut выводим результат его...

Вывод результата консольного скрипта
Можно ли настроить nginx так, что бы он выводил результат некоторой команды? Результат сыпется в stdout.

Вывод результата работы скрипта в таблице
Доброго времени суток! Как сделать чтобы результаты работы скрипта отзывов выводился в таблице - может быть такая тема или похожая тема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru