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

Добавление в свойство одного PSObject свойства другого объекта типом вложения

09.12.2015, 13:30. Показов 4578. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток народ. Встал такой вопрос. Надо добавить в свойство одного объекта другие объекты.
Например :
Создается несколько объектов USER, CAR, ADRESS (Скажите, что это напрямую в свойства можно занести. но нет. пример от балды, и учитывается что машины может быть две). данные берутся из разных источников и поэтому формируются в разных функциях

USER.name = "ivan"
USER.lastname ="ivanov"
USER.CAR.model = 'BMV"
USER.CAR.regNumber = "t 214 nc"
USER.CAR.model = 'lada"
USER.CAR.regNumber = "t 210 nc"
USER.ADRESS.street="Brow"
USER.ADRESS.number ="24B"
USER.ADRESS.city="London"

Что то в этом роде. Как видно объект имеет вложенность. В JS такой объект легко создать.
Есть ли что то подобное в PowerShell?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2015, 13:30
Ответы с готовыми решениями:

Создать Generic Mapper, который будет мапить схожие свойства одного объекта в свойства другого
Нужно создать generic mapper, который будет мапить схожие(similar) свойства одного объекта в...

Binding свойства объекта в combobox к свойству другого объекта :)
Всем привет)) У меня есть WPF приложение на котором расположен ComboBox с объектами этого класа ...

Свойство объекта в виде массива char заполняется только для одного объекта
Есть два свойства: одно - string, второе - массив char. Если начать заполнять их двум и более...

Изменить свойства одного контролла событием другого
Есть 2 пользовательских контрола class Timeline : Control {} class Bar : Control {} Затем...

5
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
09.12.2015, 14:32 2
Stazot,
PowerShell
1
2
3
4
5
6
$User=New-Object PSobject -Property @{
name = "Ivan"
lastname="Ivanov"
Car=@{Model="lada";RegNumber="t 214 nc"}
Address=@{street="Brow";number="24B";city="London"}
}
Изменение записи
PowerShell
1
$user.car.model="test"
1
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
09.12.2015, 14:47 3
Цитата Сообщение от Stazot
В JS такой объект легко создать.
Ну дык и храните в JSON, потом просто дессериализуете данные с помощью ConvertFrom-Json. Например, JSON хранится отдельным файлом:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "User" : "Ivan",
  "LastName" : "Ivanov",
  "CAR" : {
    "model" : "BMW",
    "regNumber" : "t 214 nc"
  },
  "ADDRESS" : {
    "street" : "Brow",
    "number" : "24B",
    "city" : "London"
  }
}
Извлекаем из него данные:
PowerShell
1
(Get-Content objects.json) -join "`n" | ConvertFrom-Json
Правда стоит иметь в виду, что ConvertFrom-Json нет в ранних версиях PowerShell, - там нужно будет обращаться к типам .NET; впрочем, самый простой способ использовать такие контейнеры как Hashtable или PSObject.
1
2 / 2 / 0
Регистрация: 31.10.2013
Сообщений: 112
09.12.2015, 16:54  [ТС] 4
Попробую описать суть задачи из которой вышла эта мысль. У меня есть список компов из AD ~=500 у каждого компа от 1 до трех мониторов. стоит задача пройтись по всем компам и вытащить из WMI объектов информацию модель машины, серийник, модель, серийник, парт номер и дату выпуска монитора и завязать это все на объект с именем машины. и должно выглядеть примерно так $computers[Comp1].monitor[1].name --> samsung или $Monitors = $Computers[comp1].monitor и получить массив объектов-мониторов
такое реально?
пробовал Add-Member -InputObject $comp -MemberType PropertySet(и другие) $mon не получается вылетает с ошибкой
0
2 / 2 / 1
Регистрация: 07.07.2015
Сообщений: 15
09.12.2015, 17:19 5
Лучший ответ Сообщение было отмечено Stazot как решение

Решение

В powershell свойства объекта можно добавлять по мере необходимости.
Например так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$userArray = @()
$user = New-Object -TypeName PSObject
 
$monitor = New-Object -TypeName PSObject -Property @{
name = "LG"
number = "123"
}
$user | Add-Member monitors @()
$user.monitors += $monitor
 
$monitor2 = New-Object -TypeName PSObject -Property @{
name = "ASUS"
size = "21"
}
$user.monitors += $monitor2
 
$user.monitors[0] |  Add-Member size "19"
$user.monitors
1
2 / 2 / 0
Регистрация: 31.10.2013
Сообщений: 112
09.12.2015, 19:21  [ТС] 6
Спасибо ребята. Очень помогли!!!!!!
0
09.12.2015, 19:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2015, 19:21
Помогаю со студенческими работами здесь

Как из одного ViewController изменить свойства другого?
Здравствуйте! У меня приложение на UITabBarController, я хочу чтобы если пользователь нажал...

Вызвать процедуру\функцию из другого объекта\класса. Из одного класса\объекта сделать два
Здравствуйте. Подскажите что не правильно делаю, и возможно ли вообще - вызвать процедуру\функцию...

Как копировать свойства одного объекта в другой объект?
Добрый день! Есть некий компонент с определенными свойствами QFrame templateFreme;...

ООП. Агрегация. Меняю свойство у одного вложенного объекта, а изменяется у всех
Идея такая: надо реализовать игру Точки. Пока для игры есть 2 класса: Dot(собственно точка) и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru