Matriz de Powershell -ne comparaciones múltiples
Lo siguiente obtiene el nombre del nombre del Registro y lo coloca en una matriz llamada $Array:
[System.Collections.ArrayList]$Array = Get-ChildItem -Path “HKLM:\SOFTWARE\Clients” -Name
$Array
No se listaron todos los valores, pero como ejemplo devuelve algo como esto:
Classes
Clients
IM Providers
Intel
Microsoft
Mozilla
mozilla.org
Partner
Policies
Ahora lo que estoy intentando hacer es buscar a través de la matriz, y si los valores no son iguales a “Classes”, “IM Providers” o “Intel”, entonces eliminarlos de la matriz.
Esto es más o menos lo que esperaba:
foreach ($letra en $Array)
{
if($letra.Nombre -ne “Classes”, “IM Providers”, “Intel”)
{
$Array.Remove($letra)
}
}
¡Gracias de antemano por tu ayuda!
davy.ai
El código proporcionado es un buen comienzo pero presenta algunos errores de sintaxis.
Para comparar múltiples valores en una declaración if, podemos usar el operador
-contains
en lugar del operador-ne
.Aquí está el código correcto:
Explicación:
foreach
recorre cada item en$Array
.if
verifica si$item
no es uno de los valores (“Classes”, “IM Providers”, “Intel”) usando el operador-contains
.Remove()
para eliminar el item del$Array
.$Array
modificado.Nota: Es importante usar el bucle
for
en lugar del bucleforeach
al modificar un array en un bucle, ya que este último puede causar errores. Sin embargo, en este caso, dado que estamos usando unArrayList
, todavía podemos usar el bucleforeach
con el métodoRemove()
.