![]() |
Обработка коллекции через foreach ()
Давно не брался за PS, все подзабыл.
Создаю коллекцию: $A = @{ "123" = "цифры"; "абв" = "буквы"; "-=?" = "знаки"; } Вот как перебрать $Key in $A.Keys и $Value in $A.Values разом? Пытаюсь делать через foreach () {}, выходит какае-то чепуха. Точнее, ничего не выходит. Заранее спасибо. |
rudimko, непонятно, чего Вы хотите. Что значит — «в одном цикле сразу»? Зачем тут вообще цикл?
|
Прошу меня извинить, неверно объяснил чего я хочу. Постарался исправить в первом посте. Необходимо в поочередно заносить значения из $A.Keys в $Key и из $A.Values в $Value. Не могу сделать сразу одним перебором по переменной. :-\
|
rudimko, опять-таки непонятно — зачем «поочерёдно»? В чём смысл сего действа, почему не разом? Поясните.
|
А мне нужно будет при переборе выполнить различные действия с параметрами которые будут записаны в $Key и $Value, главное чтобы они соответствовали друг другу.
Смысл к примеру: $key = название, $value = путь Пытался сделать так foreach ($value in $a.values) { foreach ($key in $a.keys) { write-host "$key соответствует $value" } } |
rudimko, Так?
Код:
$a = [ordered] @{ |
Код:
$table = @{ |
Iska, ага, что-то вроде того, но мне надо еще занести в отдельную переменную.
Что вообще я пытаюсь изобразить: $hashPath = @{ "Server1" = "\\server1\share"; "Server2" = "\\server2\share"; } $tempDir = "d:\temp" $backupDir = "d:\fileServer_backup" if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) { Write-Host "$env:ProgramFiles\7-Zip\7z.exe не обнаружен." } set-alias sz "$env:ProgramFiles\7-Zip\7z.exe" sz a -tzip -w"$tempDir" "$backupDir\server1\share\archive.zip" "\\server1\share\*" sz a -tzip -w"$tempDir" "$backupDir\server2\share\archive.zip" "\\server2\share\*" Но вот чтобы не писать по сто раз команду "sz...", хотелось бы собирать данные из коллекции, чтобы архивирование проходило одной строчкой с перебором. "$backupDir\server2\share\archive.zip" - подчеркнутое бралось из $hashPath.Values "\\server2\share\*" - из $hashPath.Keys |
Цитата rudimko:
Но вот чтобы не писать по сто раз команду "sz..." » Ну так и прогони через цикл именнованный массив (хоть можно обойтись и простым) $hashPath: Код:
$hashPath = @{ |
Foreigner, Спасибо, как вариант очень годно...
Но хотелось бы еще как-то использовать foreach, чтобы при переборе параметров, в переменную $key присваивались значения из $hashPath.Keys и значению $value присваивались значения из $hashPath.Values, ПО ПОРЯДКУ!!!. Это даже уже для общего образования надо понять. ;) Добавил чуть попозже: Блин, как я читал? Между строк, наверное. Iska, спасибо. |
Цитата:
|
rudimko, да не важен здесь порядок, достаточен самый обычный перебор. Того, что уже изложили, хватит.
Как я понимаю, |
Iska, да, идею уже реализовал изложенным Вами способом ранее, спасибо. Все работает.
|
Время: 21:26. |
Время: 21:26.
© OSzone.net 2001-