es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  ,

Answer

  1. Avatar for 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:

    [System.Collections.ArrayList]$Array = Get-ChildItem -Path "HKLM:\SOFTWARE\Clients" -Name 
    
    foreach ($item in $Array) {
        if (!("Classes", "IM Providers", "Intel" -contains $item)) {
            $Array.Remove($item)
        }
    }
    
    $Array
    

    Explicación:

    • El bucle foreach recorre cada item en $Array.
    • La declaración if verifica si $item no es uno de los valores (“Classes”, “IM Providers”, “Intel”) usando el operador -contains.
    • Si no es uno de esos valores, se llama al método Remove() para eliminar el item del $Array.
    • Finalmente, se muestra el $Array modificado.

    Nota: Es importante usar el bucle for en lugar del bucle foreach al modificar un array en un bucle, ya que este último puede causar errores. Sin embargo, en este caso, dado que estamos usando un ArrayList, todavía podemos usar el bucle foreach con el método Remove().

Comments are closed.