Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
alvibol
0 / 0 / 0
Регистрация: 28.03.2017
Сообщений: 18
#1

Запутался в объектах - PowerShell

16.05.2017, 11:27. Просмотров 256. Ответов 5
Метки нет (Все метки)

Добрый день! Снова нуждаюсь в Вашей помощи:
есть код:
PowerShell
1
2
3
4
5
6
7
8
9
Import-Module ActiveDirectory
$comps = Get-ADComputer -Filter * -property * 
foreach ($comp in $comps){
$Name = $comp.Name
$OperatingSystem = $comp.OperatingSystem
$job=@{Name = $Name;OperatingSystem = $OperatingSystem}
$PC= New-Object -TypeName PSObject -Property $job
$mas=$mas,$PC
}
Хочу получить таблицу вида:
Код
Name                                                        OperatingSystem
----                                                        ---------------
SRV1                                                      Windows Server 2008 R2 Enterprise
SRV2                                                      Windows Server 2008 R2 Enterprise
SRV3                                                      Windows Server 2008 R2 Enterprise
PC1                                                        Windows 7 Корпоративная
Если бы это был не цикл, то присвоить значения $mas можно через запятую ( $mas=$pC1,$PC2 и т.д ), что я и попробовал в цикле, но так не прокатывает...

Добавлено через 30 минут
Я понимаю, что $comps - это по сути то, что я пытаюсь получить в $mas, и даже больше. Просто в $job планируется добавить несколько значений, например информация о дисках, которая получается через WMI (Get-WMIObject -Class Win32_LogicalDisk).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2017, 11:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Запутался в объектах (PowerShell):

Вопрос о объектах-типах и объектах-экземплярах
Меня интересует вопрос о объектах-типах и объектах - экземплярах. Рихтер...

UI на 3d объектах
Всем привет. Подскажите такой момент : Есть игровая сцена 2d или 3d, в...

Процедуры в объектах
Никак не могу справиться с ошибками при компиляции. Вот код: module...

Поля в объектах
Всем здравствуйте. есть вот такая задачка. Вроде сделал, но ошибка выбивает при...

Радиус в объектах.
Помогите пожалуйста записать правильно радиус и висоту чтобы выщитувало...

Автоматизация освещения на 4-х объектах
Посоветовали обратиться на этот сайт, говорят здесь очень толковые ребята. Так...

5
KDE777
683 / 505 / 216
Регистрация: 22.01.2016
Сообщений: 1,418
16.05.2017, 11:35 #2
Цитата Сообщение от alvibol Посмотреть сообщение
Хочу получить таблицу вида:
Name OperatingSystem
Зачем такие сложности?

PowerShell
1
2
$PCs = Get-ADComputer -Filter * -property OperatingSystem | select name,OperatingSystem | ft -a
$PCs | ft -a
Или сразу без переменой:

PowerShell
1
Get-ADComputer -Filter * -property OperatingSystem | ft name,OperatingSystem -a
Добавлено через 2 минуты
Цитата Сообщение от alvibol Посмотреть сообщение
Просто в $job планируется добавить несколько значений, например информация о дисках, которая получается через WMI
Если нужно создать объект, в которой будут собраны (в цикле) данные из разных источников, тогда здесь показано готовое решение: Список пользователей, нужно вытащить Member Of
1
alvibol
0 / 0 / 0
Регистрация: 28.03.2017
Сообщений: 18
16.05.2017, 12:01  [ТС] #3
Цитата Сообщение от KDE777 Посмотреть сообщение
Если нужно создать объект, в которой будут собраны (в цикле) данные из разных источников, тогда здесь показано готовое решение: Список пользователей, нужно вытащить Member Of
Спасибо, помогло
0
alvibol
0 / 0 / 0
Регистрация: 28.03.2017
Сообщений: 18
29.05.2017, 12:27  [ТС] #4
Еще вопрос, есть цикл, в котором формируются фрагменты html, сколько их будет всего я не знаю, но нужно их потом все на одной странице отобразить.
попробовал так:
PowerShell
1
2
3
4
5
6
7
$servers="server1","server02","server-3"
$Body=@()
ForEach ($server in $servers){
$frag=GEt-EventLog -LogName "System" -ComputerName $server | ConvertTo-Html -Fragment
$Body+= $frag | Select *
}
ConvertTo-Html -Body $Body
Не знаю сколько итераций будет, т.к. планируется редактировать содержание переменной $servers.
В итоге получаю ошибку, что переменная ($Body) пустая, подскажите как правильно данное реализовать, если это вообще возможно
0
KDE777
683 / 505 / 216
Регистрация: 22.01.2016
Сообщений: 1,418
29.05.2017, 13:20 #5
Цитата Сообщение от alvibol Посмотреть сообщение
$frag=GEt-EventLog -LogName "System" -ComputerName $server | ConvertTo-Html -Fragment
Эта строчка создаст таблицу на десятки мегабайт, с огромным количеством строчек (от десятков тысяч до миллиона) и это только для одного сервера. Не слишком много данных для отправки по почте???

Цитата Сообщение от alvibol Посмотреть сообщение
подскажите как правильно данное реализовать, если это вообще возможно
В данном случае можно обойтись без ForEach:

PowerShell
1
2
$servers = "server1","server02","server-3"
$body = GEt-EventLog -LogName System -Newest 10 -ComputerName $servers | select TimeGenerated,MachineName,EventID,Message | ConvertTo-Html
Если ForEach всё-таки нужен (планируете запрашивать с серверов что-то ещё), тогда так:

PowerShell
1
2
3
4
5
6
7
$log = @()
ForEach ($server in $servers)
{
    $log += GEt-EventLog -LogName System -Newest 10 -ComputerName $server | select TimeGenerated,MachineName,EventID,Message
}
 
$body = $log | ConvertTo-Html -Fragment
1
alvibol
0 / 0 / 0
Регистрация: 28.03.2017
Сообщений: 18
29.05.2017, 14:26  [ТС] #6
планирую выбирать только warning и error только за последнюю неделю и всего несколько полей (датагенерации, код, описание), помимо массива $servers хочу еще массив $events="system","application", а также хотелось бы сформировать это на странице таким образом, чтобы каждый сервер/event были отдельной таблицей, т.е. у каждой таблице был -Precontent "<h3>$server/$event</h3>". Т.е хотелось бы выводить на одной странице Несколько таблиц со своими заголовками.

Добавлено через 7 минут
получается, что не объекты складывать нужно, а уже сконвертированные фрагменты html, только как это сделать не пойму.
В сети нашел такой пример :
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$frag1 = Get-CSInfo –computername SERVER2 | ConvertTo-Html -As LIST -Fragment –PreContent '<h2>Computer Info</h2>' | Out-String
$frag2 = Get-WmiObject -Class Win32_LogicalDisk -Filter 'DriveType=3' -ComputerName SERVER2 |
Select-Object @{name='Drive';expression={$_.DeviceID}},
@{name='Size(GB)';expression={$_.Size / 1GB -as [int]}},
@{name='FreeSpace(GB)';expression={
$_.freespace / 1GB -as [int]}} | ConvertTo-Html -Fragment -PreContent '<h2>Disk Info</h2>' | Out-String
 
$head = @'
<style>
body { background-color:#dddddd;
           font-family:Tahoma;
       font-size:12pt; }
td, th { border:1px solid black;
           border-collapse:collapse; }
th { color:white;
           background-color:black; }
           table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
'@
 
ConvertTo-HTML -head $head -PostContent $frag1, $frag2 -PreContent "<h1>Hardware Inventory for SERVER2</h1>"
Вот примерно того же и я хочу добиться, только у меня фрагментов неизвестное количество

Добавлено через 29 минут
кажется получилось
' | Out-String
Главное выделено жирным
т.е. фрагменты в виде строк в цикле складываются в переменную, которая уже потом конвертируется. Невнимательно прочитал вначале...
0
29.05.2017, 14:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2017, 14:26
Привет! Вот еще темы с решениями:

Get и Set в классах и объектах
Необходимо по ID изменить какую-либо строку. Не могу немного понять, как...

Caption в динамических объектах
Здравствуйте всем.:senor: Какой алгоритм задавания параметров Width i Height...

Объясните разницу в объектах
Добрый день! Чем отличаются Window и window? Object от object, Document от...

Копирование строк в объектах
В методе DeleteMessage() я хочу удалить сообщение путём копирования в него...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru