Búsqueda de sitios web

La cadena del conmutador de PowerShell contiene [con ejemplos]


Uno de los miembros de mi equipo buscó recientemente elementos de implementación en la declaración de cambio de PowerShell. Este es un concepto muy importante que utilizan los desarrolladores de PowerShell. En este tutorial, explicaré todo acerca de “La cadena de interruptores de PowerShell contiene” con ejemplos.

Para verificar si una cadena contiene una subcadena específica usando una instrucción switch de PowerShell, puede utilizar el operador -Wildcard. Por ejemplo, dada una lista de nombres de archivos, puede categorizarlos según sus extensiones con una instrucción switch como esta:

$files = @("report.pdf", "data.csv", "presentation.pptx", "notes.txt")

foreach ($file in $files) {
    switch -Wildcard ($file) {
        '*.pdf' { Write-Output "$file is a PDF document." }
        '*.csv' { Write-Output "$file is a CSV file." }
        '*.pptx' { Write-Output "$file is a PowerPoint presentation." }
        '*.txt' { Write-Output "$file is a Text file." }
        default { Write-Output "$file type is unknown." }
    }
}

Este enfoque le permite hacer coincidir patrones dentro de cadenas y ejecutar las acciones correspondientes de manera eficiente.

La cadena del conmutador PowerShell contiene

La declaración de cambio en PowerShell es una declaración de lógica condicional que se utiliza para evaluar una o más condiciones. Es similar a una serie de declaraciones if pero ofrece una sintaxis más limpia y legible. La instrucción switch enumera cada condición y la acción correspondiente a ejecutar cuando se cumple esa condición.

La sintaxis básica de una instrucción switch en PowerShell es sencilla:

switch ($variable) {
    'condition1' { action1 }
    'condition2' { action2 }
    default { defaultAction }
}

Cuando desee comprobar si una cadena contiene una subcadena específica, puede utilizar el operador -contains dentro de la instrucción switch.

Déjame mostrarte cómo hacer esto.

Le mostraré cómo usar la instrucción switch para verificar si una cadena contiene una subcadena específica. Esto es particularmente útil cuando se trata de nombres de archivos, entradas de registros o cualquier dato textual donde se requiere coincidencia de patrones.

Ejemplo 1: Detección de tipo de archivo

Suponga que tiene una lista de nombres de archivos y necesita clasificarlos según sus extensiones. Así es como puede hacerlo con una instrucción switch y una cadena que contiene:

$files = @("report.pdf", "data.csv", "presentation.pptx", "notes.txt")

foreach ($file in $files) {
    switch -Wildcard ($file) {
        '*.pdf' { Write-Output "$file is a PDF document." }
        '*.csv' { Write-Output "$file is a CSV file." }
        '*.pptx' { Write-Output "$file is a PowerPoint presentation." }
        '*.txt' { Write-Output "$file is a Text file." }
        default { Write-Output "$file type is unknown." }
    }
}

En este ejemplo, el operador -Wildcard permite que la instrucción switch coincida con patrones dentro de los nombres de archivos.

Puede ver el resultado en la siguiente captura de pantalla:

Consulte los comodines en PowerShell Switch

Ejemplo 2: filtrado de entradas de registros

Suponga que está analizando entradas de registro y desea filtrar las entradas que contienen palabras clave específicas. A continuación se explica cómo y a continuación se muestra el script de PowerShell completo para Switch String Contiene.

$logEntries = @(
    "Error: Disk space low on server01",
    "Warning: High memory usage on server02",
    "Info: Backup completed successfully on server03",
    "Error: Network timeout on server04"
)

foreach ($entry in $logEntries) {
    switch -Regex ($entry) {
        'Error' { Write-Output "Critical Issue: $entry" }
        'Warning' { Write-Output "Warning: $entry" }
        'Info' { Write-Output "Information: $entry" }
        default { Write-Output "Uncategorized: $entry" }
    }
}

Aquí, el operador -Regex se utiliza para hacer coincidir expresiones regulares dentro de las entradas del registro, lo que permite una coincidencia de patrones más flexible.

Ejecuté el script de PowerShell anterior usando código VS y puedes ver el resultado exacto en la siguiente captura de pantalla:

Ejemplo 3: múltiples condiciones

Puede manejar múltiples condiciones dentro de un solo caso agrupándolas. A continuación se muestra un ejemplo completo de "La cadena de conmutador de PowerShell contiene".

$input = "New York"

switch ($input) {
    {$_ -contains "New"} { Write-Output "This contains 'New'." }
    {$_ -contains "York"} { Write-Output "This contains 'York'." }
    default { Write-Output "No match found." }
}

En este ejemplo, la variable $_ representa el elemento actual que se está evaluando y -contains comprueba si la subcadena está presente.

Consulte el parámetro del interruptor de PowerShell

Ejemplo 4: Coincidencia que no distingue entre mayúsculas y minúsculas

Las declaraciones switch de PowerShell distinguen entre mayúsculas y minúsculas de forma predeterminada, pero puede hacer que no distingan entre mayúsculas y minúsculas utilizando el parámetro -CaseSensitive:

$city = "Seattle"

switch -CaseSensitive ($city) {
    "seattle" { Write-Output "Matched 'seattle'." }
    default { Write-Output "No match found." }
}

Dado que Seattle y seattle se tratan de manera diferente, se ejecutará el caso predeterminado.

Aquí está el resultado en la siguiente captura de pantalla:

Conclusión

En este tutorial, expliqué cómo trabajar con declaraciones de cambio de PowerShell con contenido de cadena y proporcioné diferentes ejemplos reales relacionados con "Contiene cadena de cambio de PowerShell".

Artículos relacionados