¿Cómo puedo enumerar una tabla hash como pares clave-valor / filtrar una tabla hash por una colección de valores clave?
Nota del editor: Esta pregunta tiene una historia complicada, pero se reduce a esto:
* Para aprender aenumerar las entradas de una tabla hash por supares clave-valor, verla respuesta aceptada.
* Para aprender afiltrar una tabla hash por uncolección de valores clave, verla otra respuesta.
Creo que volví a caer en el problema X Y, mi pregunta inicial fue sobre Filtrar una tabla hash. Descubrí que es más fácil filtrar antes de crear la tabla hash. Pregunta respondida, ¿verdad?
No, el problema Y fue hacer un bucle de cada clave y usar los valores con los que @briantist me ayudó.
Mi objetivo es recorrer los nombres de las claves, que son marcas de tiempo, y programar una tarea utilizando el nombre de la clave como el nombre de la tarea y el disparador.
Estoy creando una tabla hash a partir de un archivo CSV usandoGroup-Object -AsHashTable -AsString
-edita, vale la pena mencionar aquí que filtrar el CSV antes de crear HashTable solo facilita las cosasPipeline
o guión.
Como ejemplo:
Import-CSV (ls -path D:\ -Filter source*.csv | sort LastWriteTime | Select -Last 1).FullName |
where {$_.TimeCorrected -ne 'ManualRebootServer'} |
group TimeCorrected -AsHashTable -AsString
Estoy tratando de recorrer los nombres de las teclas y puedo mostrarlos usando:
$var = Import-Csv csv123.csv | Group-Object Value1 -AsHashTable -AsString
foreach ($key in $var.Keys){"The key name is $key"}
#Create a scheduled task named and triggered based on the HashTable keyname
#test test test
foreach ($key in $var.keys){IF($key -ne 'ManualRebootServer'){"Register-ScheduledJob"}}
No estoy seguro de cómo obtener los valores de las claves que me interesan.
He encontrado los siguientes trabajos, pero solo cuando ingreso un nombre de clave manualmente. No estoy seguro de cómo combinar ambos bucles.
($val.GetEnumerator() | Where {$_.key -eq '06-11-16 18:00'} | ForEach-Object { $_.value }).Server