конечная ситуация должна выглядеть так:
$BaseHash = @{
"KEY_A" = @{
"Hash2" = @{ "Txt"="descr"; "Val"=1.2;"End"=(get-date) }
"Hash3" = @{ "Txt"="descr"; "Val"=1.2;"End"=(get-date) }
}
"KEY_B" = @{
"Hash2" = @{ "Txt"="descr"; "Val"=1.2;"End"=(get-date) }
"Hash3" = @{ "Txt"="descr"; "Val"=1.2;"End"=(get-date) }
}
"KEY_C" = @{
"Hash2" = @{ "Txt"="descr"; "Val"=1.2;"End"=(get-date) }
"Hash3" = @{ "Txt"="descr"; "Val"=1.2;"End"=(get-date) }
}
}
Но я начинаю с того, что все хэши были «пустыми»:
$BaseHash = @{}
Хорошо, я попытался получить ошибку, но, похоже, это работает?:
$key1 = "KEY_A"
$key2 = "KEY_B"
$Topic= "Hash1"
$Topic2= "Hash2"
$defHash = @{ "Txt"="Descr.";"Val"=1.2;"end"=(get-date) }
$empty = @{}
$BaseHash = @{}
if ( !$BaseHash.ContainsKey($key1) ) {
$BaseHash.Add( $key1, $empty )
$BaseHash.$key1.Add( $Topic, $defHash )
$BaseHash.$key1.Add( $Topic2, $defHash )
}
if ( !$BaseHash.ContainsKey($key2) ) {
$BaseHash.Add( $key2, $empty )
$BaseHash.$key2.Add( $Topic, $defHash )
$BaseHash.$key2.Add( $Topic2, $defHash )
}
#$BaseHash
foreach ($h in $BaseHash.$key1.GetEnumerator() | select -ExpandProperty name) {
if ( $BaseHash.$key1.$h.Val -ne 0.0 ) {
Write-Host "Found $key1 $h $($BaseHash.$key1.$h.Val) $($BaseHash.$key1.$h.Txt)"
}
}
foreach ($h in $BaseHash.$key2.GetEnumerator() | select -ExpandProperty name) {
if ( $BaseHash.$key2.$h.Val -ne 0.0 ) {
Write-Host "Found $key2 $h $($BaseHash.$key2.$h.Val) $($BaseHash.$key2.$h.Txt)"
}
}
Ошибка, которую я получаю, связана с добавлением Topic и Topic2 в key2-хеш:
Исключение при вызове Add with 2 Arguments: tЭлемент уже добавлен:
+ $BaseHash.$key2.Add <<<< ( $Topic, $defHash )<br>
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException<br>
+ FullyQualifiedErrorId : DotNetMethodException<br>
+ $BaseHash.$key2.Add <<<< ( $Topic2, $defHash )<br>
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException<br>
+ FullyQualifiedErrorId : DotNetMethodException<br>
С другой стороны все вроде бы добавилось:
Найдено KEY_A Hash2 1.2 Описание
Найдено KEY_A Hash1 1.2 Описание
Найдено KEY_B Hash2 1.2 Описание
Найдено KEY_B Hash1 1.2 Описание
1) Как избежать сообщения об ошибке?
2) Можете ли вы предложить лучший способ добавления хэшей или хэшей к хешу?
Заранее спасибо
Гули
@
перед первой фигурной скобкой и отсутствующего"
после каждого Txt и перед =, он создает именно то, что вы хотите. - person TheMadTechnician   schedule 24.06.2014