none
Набор массивов внутри одной из колонок хэш-таблицы: как разобрать? RRS feed

  • Вопрос

  • Есть хэш-таблица из 2х столбцов "X" и "Y".

    В столбце "X", в каждой строке, содержится небольшой массив. А в столбце "Y", в каждой строке, просто string-переменная (слово).

    Задача: сопоставить слова в строках столбца "Y" с содержимым релевантных массивов (столбец "X"), но чтобы вместо массивов как объектов были просто string с содержимым этих массивов.

    Кто может помочь? 


    I'm inspired! Are you? Где смекалка и сноровка, там и палка что винтовка.

    25 августа 2014 г. 9:40
    Модератор

Ответы

  • Если политику уникальны для каждого сервера и имена не пересекаются:

    $new = @{}
    $old.GetEnumerator() | Foreach {
    	$val = $_.Value
    	$_.Key | Foreach {$new.Add($_,$val)}
    }

    Если неуникальны:

    $new = @()
    $new = $old.GetEnumerator() | Foreach {
    	$val = $_.Value 
    	$_.Key | Foreach {
    		New-Object PsObject -Property @{
    			Policy = $_
    			Name = $val
    		}
    	}
    }

    • Помечено в качестве ответа Nikita PanovModerator 25 августа 2014 г. 11:27
    25 августа 2014 г. 11:15
    Отвечающий

Все ответы

  • Приведите пример, вывода данных и какой конечный результат требуется.
    25 августа 2014 г. 10:00
    Отвечающий
  • Name                                            Value                                                   
    ----                                                 -----                                                   
    {AIRou-ca-MOS_Set_Zabbix_A... AIRCLEAR01                                           
    {AIRdo-cw-MSFT_DMZ_...            MSFS9767                                               
    {AIRdo-cw-MSFT_DMZ_...            MSFS9751                                               
    {AIRou-ca-MOS_Set_Zabbix_A... AIREXMOSCCM1                                          
    {AIRou-ca-MOS_Set_Zabbix_A... AIREXMOSCCM                                           
    {AIRdo-cw-MSFT_DMZ_...            MSFS9751                                               
    {AIRdo-cw-MSFT_DMZ_...            MSFS9725                                               
    {AIRdo-cw-MSFT_DMZ_...            MSFS9767      

    В данном варианте Name это массивы с именами политик, которые применяются  к соответствующим серверам из столбца Value.

    Фактически, чтобы получить нормальное соответствие между именем сервера и его политиками приходится делать отдельный цикл, чтобы влезать внутрь каждого массива и получать полный список политик для каждого сервера. Хотелось бы, чтобы в столбце Name были просто строковые переменные, содержащие имена политик.


    I'm inspired! Are you? Где смекалка и сноровка, там и палка что винтовка.

    25 августа 2014 г. 10:58
    Модератор
  • Если политику уникальны для каждого сервера и имена не пересекаются:

    $new = @{}
    $old.GetEnumerator() | Foreach {
    	$val = $_.Value
    	$_.Key | Foreach {$new.Add($_,$val)}
    }

    Если неуникальны:

    $new = @()
    $new = $old.GetEnumerator() | Foreach {
    	$val = $_.Value 
    	$_.Key | Foreach {
    		New-Object PsObject -Property @{
    			Policy = $_
    			Name = $val
    		}
    	}
    }

    • Помечено в качестве ответа Nikita PanovModerator 25 августа 2014 г. 11:27
    25 августа 2014 г. 11:15
    Отвечающий
  • Супер!

    Простите за оффтоповый вопрос, а вы в Мск территориально находитесь?


    I'm inspired! Are you? Где смекалка и сноровка, там и палка что винтовка.

    25 августа 2014 г. 11:28
    Модератор
  • Супер!

    Простите за оффтоповый вопрос, а вы в Мск территориально находитесь?


    I'm inspired! Are you? Где смекалка и сноровка, там и палка что винтовка.


    Нет, Иваново ))
    25 августа 2014 г. 11:40
    Отвечающий
  • А можете какие-нибудь контакты ваши оставить?


    I'm inspired! Are you? Где смекалка и сноровка, там и палка что винтовка.

    26 августа 2014 г. 5:59
    Модератор
  • А можете какие-нибудь контакты ваши оставить?


    I'm inspired! Are you? Где смекалка и сноровка, там и палка что винтовка.


    http://kazunposh.wordpress.com/about/ - аккаунт Skype
    26 августа 2014 г. 6:08
    Отвечающий
  • semic0nduct0r

    Я к вам стукнулся, можете добавить?


    I'm inspired! Are you? Где смекалка и сноровка, там и палка что винтовка.

    28 августа 2014 г. 9:20
    Модератор