Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Создание переменной (коллекции) с несколькими значениями

Ответить
Настройки темы
PowerShell - [решено] Создание переменной (коллекции) с несколькими значениями

Пользователь


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

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


Друзья, подскажите, как создать переменную с несколькими значениями, что бы их было 4-5 или больше? Умею создавать только хэштейбл ($var = @{a=1;b=2;}), но там только (2 значения) Name и Value... Спасибо.

Отправлено: 10:20, 16-01-2014

 

Ветеран


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

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


Вопрос непонятен. Если требуется создать объект с заданными свойствами, то можно воспользоваться например(так методов много):
Код: Выделить весь код
1) 
$Object = New-Object PSObject                                       
$Object | add-member Noteproperty a1 1                 
$Object | add-member Noteproperty a2 2              
$Object | add-member Noteproperty a3 3            
$Object | add-member Noteproperty a4 4            
$Object | add-member Noteproperty a5 5            

2) 
$Object = New-Object PSObject -Property @{ 
	a1 = 1
	a2 = 2
	a3 = 3
	a4 = 5
	a5 = 5
}
     
3)
$Object = "" | Select @{n="a1";e={1}},@{n="a2";e={2}},@{n="a3";e={3}},@{n="a4";e={4}},@{n="a5";e={5}}

4) Для PowerShell v3 и выше:
$Object = [pscustomobject]@{a1=1; a2=2; a3=3; a4=4; a5=5}
https://social.technet.microsoft.com...m-objects.aspx
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:58, 16-01-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


Прошу прощения за тавтологию...

Хочу немного другого результата добиться:

Допустим выполняется цикл в котором создаются переменные и им присваиваются определенные значения:

Код: Выделить весь код
foreach ($connection in $connections)
	{	
		$SessionID = $connection.SessionID
		$infoBase = $connection.infoBase.Name
		$MemorySize = $connection.process.MemorySize
		$processPID = $connection.process.PID
	}
Каждый раз в цикле данным переменным будут присваиваться разные значения.
Мне необходимо создать одну переменную, которая сможет в себе сохранить параметры этих переменных из всего цикла, то есть переменная должна иметь примерно вот такой вид - Name = $SessionID Param1 = $InfoBase Param2 = $MemorySize Param3 = $processPID

Типа такой структуры в переменной:
Name | Param1 | Param2 | Param3

Выглядить в целом примерно так:
Name1 | Base1 | 4123123 | 4321
Name2 | Base2 | 4123123 | 4321
Name3 | Base3 | 4456763 | 6479
...

Моих знаний хватает лишь на 2 значения ) например $collection += @{$SessionID = $infoBase;}, вот бы добавить сюда еще 2 нужных

Я так понимаю нужно как-то плюсовать значения переменной в цикле, но как вот построить такую структуру, возможно ли?

Последний раз редактировалось rudimko, 16-01-2014 в 12:14.


Отправлено: 12:03, 16-01-2014 | #3


Ветеран


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

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


Код: Выделить весь код
$con = @()
foreach ($connection in $connections)
{	
	$con +=  New-Object PSObject -Property @{ 
		SessionID = $connection.SessionI
		infoBase = $connection.infoBase.Name
		MemorySize = $connection.process.MemorySize
		processPID = $connection.process.PID
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:55, 16-01-2014 | #4


Пользователь


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

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


Здорово, но есть затык небольшой...

К примеру вывожу переменную: $con | format-list
читать дальше »
Код: Выделить весь код
5860620           : 8132860
4972                : 4940
3222                : 3615
V8_BASE_1       : V8_BASE_2

5860620           : 8132860
4972                : 4940
3222                : 31464
V8_BASE_1       : V8_BASE_3

5860620           : 8132860
4972                : 4940
3222                : 28400
V8_BASE_1       : V8_BASE_3
и тд....


Как задать названия для заголовков правильно? Написал до цикла:
читать дальше »
Код: Выделить весь код
$con +=  New-Object PSObject -Property @{	
$nameSessionID = "SessionID"
$nameInfoBase = "InfoBase"
$nameMemorySize = "MemorySize"
$nameProcessPID = "ProcessPID"
}


Заголовки появились, но первым значением в коллекции переменной идут значения из заголовков, только потом полезные данные.
читать дальше »
Код: Выделить весь код
infoBase   : infoBase 
processPID : processPID 
MemorySize : MemorySize
SessionID  : SessionID

infoBase   : BASE_4
processPID : 5012
MemorySize : 6979204
SessionID  : 3425


Еще вопрос... Можно ли как-то объединить данные в этой переменной, как бы слить, например:
есть несколько одинаковых значений "ProcessPID" и "MemorySize", но значения "InfoBase" и "SessionID" разные, можно ли соединить их? Ну например значение "ProcessPID" и "MemorySize" останется таким же, а "InfoBase" будет сливаться (добавляться) - "V8_BASE_1, V8_BASE_2", так же и "SessionID" - "3615, 107653"

Например, что бы выглядело не так:
читать дальше »
Код: Выделить весь код
infoBase   : BASE_4
processPID : 5012
MemorySize : 6979204
SessionID  : 3425

infoBase   : BASE_1
processPID : 5012
MemorySize : 6979204
SessionID  : 7296

infoBase   : BASE_3
processPID : 4972
MemorySize : 6381188
SessionID  : 107076

infoBase   : BASE_2
processPID : 4972
MemorySize : 6381188
SessionID  : 8582

infoBase   : BASE_1
processPID : 4972
MemorySize : 6381188
SessionID  : 1875

infoBase   : BASE_1
processPID : 4972
MemorySize : 6381188
SessionID  : 1890


А вот так:
читать дальше »
Код: Выделить весь код
infoBase   : BASE_4, BASE_1
processPID : 5012
MemorySize : 6979204
SessionID  : 3425, 7296

infoBase   : BASE_3, BASE_2, BASE_1
processPID : 4972
MemorySize : 6381188
SessionID  : 107076, 8582, 1875, 1890


Kazun, спасибо, хэлп.

Последний раз редактировалось rudimko, 16-01-2014 в 15:08.


Отправлено: 14:01, 16-01-2014 | #5


Ветеран


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

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


"Название Свойства" = Значение

Я же привел пример выше уже.

Код: Выделить весь код
$con +=  New-Object PSObject -Property @{	
	"SessionID" = $nameSessionID 
	"InfoBase" = $nameInfoBase
	"MemorySize" = $nameMemorySize 
	"ProcessPID" = $nameProcessPID 
}
Можно и сгруппировать:
Код: Выделить весь код
$con = $con | group ProcessPID | Foreach {
	if($_.Count -gt 1) {
		New-Object PSObject -Property @{
			"SessionID" = ($_.Group | Foreach {$_.SessionID}) -join ","
			"InfoBase" = ($_.Group | Foreach {$_.InfoBase}) -join ","
			"MemorySize" = ($_.Group | Foreach {$_.MemorySize}) -join ","
			"ProcessPID" = $_.Name
		}
	}
	else {
		$_.Group
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:08, 16-01-2014 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Создание переменной (коллекции) с несколькими значениями

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. NiOl Скриптовые языки администрирования Windows 7 31-01-2019 19:58
Создание 1 учетной записи с несколькими сеансами на разных ПК Jeck90 Хочу все знать 1 01-08-2013 00:20
Создание мультизагрузки с несколькими различными svcpack.inf minutka15 Автоматическая установка Windows 2000/XP/2003 12 11-09-2010 18:43
Общее - Создание загрузочного USB HDD с несколькими осями advokcat Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 5 10-12-2009 09:12
[статья] Создание переменной среды, соответствующей букве установочного диска Vadikan Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 0 17-01-2009 18:21




 
Переход