Select-String

Busca texto en cadenas y archivos.

Syntax

Select-String
      [-Culture <String>]
      [-Pattern] <String[]>
      [-Path] <String[]>
      [-SimpleMatch]
      [-CaseSensitive]
      [-Quiet]
      [-List]
      [-NoEmphasis]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-NotMatch]
      [-AllMatches]
      [-Encoding <Encoding>]
      [-Context <Int32[]>]
      [<CommonParameters>]
Select-String
      [-Culture <String>]
      -InputObject <PSObject>
      [-Pattern] <String[]>
      -Raw
      [-SimpleMatch]
      [-CaseSensitive]
      [-List]
      [-NoEmphasis]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-NotMatch]
      [-AllMatches]
      [-Encoding <Encoding>]
      [-Context <Int32[]>]
      [<CommonParameters>]
Select-String
      [-Culture <String>]
      -InputObject <PSObject>
      [-Pattern] <String[]>
      [-SimpleMatch]
      [-CaseSensitive]
      [-Quiet]
      [-List]
      [-NoEmphasis]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-NotMatch]
      [-AllMatches]
      [-Encoding <Encoding>]
      [-Context <Int32[]>]
      [<CommonParameters>]
Select-String
      [-Culture <String>]
      [-Pattern] <String[]>
      [-Path] <String[]>
      -Raw
      [-SimpleMatch]
      [-CaseSensitive]
      [-List]
      [-NoEmphasis]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-NotMatch]
      [-AllMatches]
      [-Encoding <Encoding>]
      [-Context <Int32[]>]
      [<CommonParameters>]
Select-String
      [-Culture <String>]
      [-Pattern] <String[]>
      -LiteralPath <String[]>
      -Raw
      [-SimpleMatch]
      [-CaseSensitive]
      [-List]
      [-NoEmphasis]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-NotMatch]
      [-AllMatches]
      [-Encoding <Encoding>]
      [-Context <Int32[]>]
      [<CommonParameters>]
Select-String
      [-Culture <String>]
      [-Pattern] <String[]>
      -LiteralPath <String[]>
      [-SimpleMatch]
      [-CaseSensitive]
      [-Quiet]
      [-List]
      [-NoEmphasis]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-NotMatch]
      [-AllMatches]
      [-Encoding <Encoding>]
      [-Context <Int32[]>]
      [<CommonParameters>]

Description

El Select-String cmdlet usa la coincidencia de expresiones regulares para buscar patrones de texto en cadenas y archivos de entrada. Puede usar Select-String de forma similar a grep en UNIX o findstr.exe en Windows.

Select-String se basa en líneas de texto. De forma predeterminada, Select-String busca la primera coincidencia en cada línea y, para cada coincidencia, muestra el nombre de archivo, el número de línea y todo el texto de la línea que contiene la coincidencia. Puede dirigir Select-String para buscar varias coincidencias por línea, mostrar texto antes y después de la coincidencia, o mostrar un valor booleano (True o False) que indica si se encuentra una coincidencia.

Select-String puede mostrar todas las coincidencias de texto o detenerse después de la primera coincidencia en cada archivo de entrada. Select-String se puede usar para mostrar todo el texto que no coincide con el patrón especificado.

También puede especificar que Select-String debe esperar una codificación de caracteres determinada, como cuando se buscan archivos de texto Unicode. Select-String usa la marca de orden de bytes (BOM) para detectar el formato de codificación del archivo. Si el archivo no tiene boM, supone que la codificación es UTF8.

Ejemplos

Ejemplo 1: Buscar una coincidencia que distingue mayúsculas de minúsculas

En este ejemplo se realiza una coincidencia que distingue mayúsculas de minúsculas del texto que se envió a la canalización al Select-String cmdlet .

'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch

Las cadenas de texto Hello y HELLO se envían por la canalización al Select-String cmdlet . Select-String usa el parámetro Pattern para especificar HELLO. El parámetro CaseSensitive especifica que el caso debe coincidir solo con el patrón mayúscula. SimpleMatch es un parámetro opcional y especifica que la cadena del patrón no se interpreta como una expresión regular. Select-String muestra HELLO en la consola de PowerShell.

Ejemplo 2: Buscar coincidencias en archivos de texto

Este comando busca en todos los archivos con la .txt extensión de nombre de archivo en el directorio actual. La salida muestra las líneas de esos archivos que incluyen la cadena especificada.

Get-Alias | Out-File -FilePath .\Alias.txt
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\*.txt -Pattern 'Get-'

Alias.txt:8:Alias            cat -> Get-Content
Alias.txt:28:Alias           dir -> Get-ChildItem
Alias.txt:43:Alias           gal -> Get-Alias
Command.txt:966:Cmdlet       Get-Acl
Command.txt:967:Cmdlet       Get-Alias

En este ejemplo, Get-Alias y Get-Command se usan con el Out-File cmdlet para crear dos archivos de texto en el directorio actual, Alias.txt y Command.txt.

Select-String usa el parámetro Path con el comodín asterisco (*) para buscar en todos los archivos del directorio actual con la extensión .txtde nombre de archivo . El parámetro Pattern especifica el texto que debe coincidir con Get-. Select-String muestra la salida en la consola de PowerShell. El nombre de archivo y el número de línea preceden a cada línea de contenido que contiene una coincidencia para el parámetro Pattern .

Ejemplo 3: Buscar una coincidencia de patrón

En este ejemplo, se buscan varios archivos para buscar coincidencias para el patrón especificado. El patrón usa un cuantificador de expresiones regulares. Para obtener más información, consulte about_Regular_Expressions.

Select-String -Path "$PSHOME\en-US\*.txt" -Pattern '\?'

C:\Program Files\PowerShell\6\en-US\default.help.txt:27:    beginning at https://go.microsoft.com/fwlink/?LinkID=108518.
C:\Program Files\PowerShell\6\en-US\default.help.txt:50:    or go to: https://go.microsoft.com/fwlink/?LinkID=210614

El Select-String cmdlet usa dos parámetros, Path y Pattern. El parámetro Path usa la variable $PSHOME que especifica el directorio de PowerShell. El resto de la ruta de acceso incluye el subdirectorio en-US y especifica cada *.txt archivo del directorio. El parámetro Pattern especifica que coincida con un signo de interrogación (?) en cada archivo. Una barra diagonal inversa (\) se usa como carácter de escape y es necesaria porque el signo de interrogación (?) es un cuantificador de expresiones regulares. Select-String muestra la salida en la consola de PowerShell. El nombre de archivo y el número de línea preceden a cada línea de contenido que contiene una coincidencia para el parámetro Pattern .

Ejemplo 4: Usar Select-String en una función

En este ejemplo se crea una función para buscar un patrón en los archivos de ayuda de PowerShell. En este ejemplo, la función solo existe en la sesión de PowerShell. Cuando se cierra la sesión de PowerShell, se elimina la función. Para obtener más información, consulte about_Functions.

function Search-Help
{
    $PSHelp = "$PSHOME\en-US\*.txt"
    Select-String -Path $PSHelp -Pattern 'About_'
}

Search-Help

C:\Program Files\PowerShell\7\en-US\default.help.txt:67:    The titles of conceptual topics begin with "About_".
C:\Program Files\PowerShell\7\en-US\default.help.txt:70:    Get-Help About_<topic-name>
C:\Program Files\PowerShell\7\en-US\default.help.txt:93:    Get-Help About_Modules : Displays help about PowerShell modules.
C:\Program Files\PowerShell\7\en-US\default.help.txt:97:    about_Updatable_Help

La función se crea en la línea de comandos de PowerShell. El Function comando usa el nombre Search-Help. Presione Entrar para empezar a agregar instrucciones a la función. En el símbolo del >> sistema, agregue cada instrucción y presione Entrar como se muestra en el ejemplo. Después de agregar el corchete de cierre, se le devuelve a un símbolo del sistema de PowerShell.

La función contiene dos comandos. La $PSHelp variable almacena la ruta de acceso a los archivos de ayuda de PowerShell. $PSHOME es el directorio de instalación de PowerShell con el subdirectorio en-US que especifica cada *.txt archivo del directorio.

El Select-String comando de la función usa los parámetros Path y Pattern . El parámetro Path usa la $PSHelp variable para obtener la ruta de acceso. El parámetro Pattern usa la cadena About_ como criterios de búsqueda.

Para ejecutar la función , escriba Search-Help. El comando de la Select-String función muestra la salida en la consola de PowerShell.

Ejemplo 5: Buscar una cadena en un registro de eventos de Windows

En este ejemplo se busca una cadena en un registro de eventos de Windows. La variable $_ representa el objeto actual de la canalización. Para obtener más información, vea about_Automatic_Variables.

$Events = Get-WinEvent -LogName Application -MaxEvents 50
$Events | Select-String -InputObject {$_.message} -Pattern 'Failed'

El Get-WinEvent cmdlet usa el parámetro LogName para especificar el registro de aplicaciones. El parámetro MaxEvents obtiene los 50 eventos más recientes del registro. El contenido del registro se almacena en la variable denominada $Events.

La $Events variable se envía a la canalización al Select-String cmdlet . Select-String usa el parámetro InputObject . La $_ variable representa el objeto actual y message es una propiedad del evento. El parámetro Pattern especifica la cadena Failed y busca coincidencias en $_.message. Select-String muestra la salida en la consola de PowerShell.

Ejemplo 6: Buscar una cadena en subdirectorios

En este ejemplo se busca un directorio y todos sus subdirectorios para una cadena de texto específica.

Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse | Select-String -Pattern 'Microsoft' -CaseSensitive

Get-ChildItem usa el parámetro Path para especificar C:\Windows\System32*.txt. El parámetro Recurse incluye los subdirectorios. Los objetos se envían por la canalización a Select-String.

Select-String usa el parámetro Pattern y especifica la cadena Microsoft. El parámetro CaseSensitive se usa para coincidir con el caso exacto de la cadena. Select-String muestra la salida en la consola de PowerShell.

Nota:

En función de los permisos, es posible que vea Mensajes denegados de acceso en la salida.

Ejemplo 7: Buscar cadenas que no coinciden con un patrón

En este ejemplo se muestra cómo excluir líneas de datos que no coinciden con un patrón.

Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set'  -NotMatch

El Get-Command cmdlet envía objetos a la Out-File canalización para crear el archivo Command.txt en el directorio actual. Select-String usa el parámetro Path para especificar el archivo Command.txt . El parámetro Pattern especifica Get y Set como patrón de búsqueda. El parámetro NotMatch excluye Get y Set de los resultados. Select-String muestra la salida en la consola de PowerShell que no incluye Get o Set.

Ejemplo 8: Buscar líneas antes y después de una coincidencia

En este ejemplo se muestra cómo obtener las líneas antes y después del patrón coincidente.

Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get-Computer' -Context 2, 3

Command.txt:986:Cmdlet          Get-CmsMessage           6.1.0.0    Microsoft.PowerShell.Security
  Command.txt:987:Cmdlet          Get-Command              6.1.2.0    Microsoft.PowerShell.Core
> Command.txt:988:Cmdlet          Get-ComputerInfo         6.1.0.0    Microsoft.PowerShell.Management
  Command.txt:990:Cmdlet          Get-Content              6.1.0.0    Microsoft.PowerShell.Management
  Command.txt:991:Cmdlet          Get-ControlPanelItem     3.1.0.0    Microsoft.PowerShell.Management
  Command.txt:992:Cmdlet          Get-Credential           6.1.0.0    Microsoft.PowerShell.Security

El Get-Command cmdlet envía objetos a la Out-File canalización para crear el archivo Command.txt en el directorio actual. Select-String usa el parámetro Path para especificar el archivo Command.txt . El parámetro Pattern especifica Get-Computer como patrón de búsqueda. El parámetro Context usa dos valores, antes y después, y marca las coincidencias de patrón en la salida con un corchete angular (>). El parámetro Context genera las dos líneas antes de que el primer patrón coincida y tres líneas después de la última coincidencia de patrón.

Ejemplo 9: Buscar todas las coincidencias de patrones

En este ejemplo se muestra cómo el parámetro AllMatches encuentra cada coincidencia de patrón en una línea de texto. De forma predeterminada, Select-String solo busca la primera aparición de un patrón en una línea de texto. En este ejemplo se usan las propiedades de objeto que se encuentran con el Get-Member cmdlet .

$A = Get-ChildItem -Path "$PSHOME\en-US\*.txt" | Select-String -Pattern 'PowerShell'
$A

C:\Program Files\PowerShell\7\en-US\default.help.txt:3:    PowerShell Help System
C:\Program Files\PowerShell\7\en-US\default.help.txt:6:    Displays help about PowerShell cmdlets and concepts.
C:\Program Files\PowerShell\7\en-US\default.help.txt:9:    PowerShell Help describes PowerShell cmdlets

$A.Matches

Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 4
Length   : 10
Value    : PowerShell

$A.Matches.Length

8

$B = Get-ChildItem -Path "$PSHOME\en-US\*.txt" | Select-String -Pattern 'PowerShell' -AllMatches
$B.Matches.Length

9

El Get-ChildItem cmdlet usa el parámetro Path . El parámetro Path usa la variable $PSHOME que especifica el directorio de PowerShell. El resto de la ruta de acceso incluye el subdirectorio en-US y especifica cada *.txt archivo del directorio. Los Get-ChildItem objetos se almacenan en la $A variable . La $A variable se envía a la canalización al Select-String cmdlet . Select-String usa el parámetro Pattern para buscar cada archivo de la cadena PowerShell.

Desde la línea de comandos de PowerShell, se muestra el contenido de la $A variable. Hay una línea que contiene dos apariciones de la cadena PowerShell.

La $A.Matches propiedad enumera la primera aparición del patrón de PowerShell en cada línea.

La $A.Matches.Length propiedad cuenta la primera aparición del patrón de PowerShell en cada línea.

La $B variable usa los mismos Get-ChildItem cmdlets y Select-String , pero agrega el parámetro AllMatches . AllMatches busca cada aparición del patrón powerShell en cada línea. Los objetos almacenados en las $A variables y $B son idénticos.

La $B.Matches.Length propiedad aumenta porque para cada línea, se cuenta cada aparición del patrón de PowerShell .

Ejemplo 10: Conversión de objetos de canalización en cadenas mediante "Out-String"

El ToString() resultado del objeto canalado no es la misma representación de cadena enriquecida generada por el sistema de formato de PowerShell. Por lo tanto, es posible que tenga que canalizar primero los objetos Out-String .

Canalización para Out-String convertir la salida con formato en un único objeto de cadena de varias líneas. Esto significa que, cuando Select-String encuentra una coincidencia, genera toda la cadena de varias líneas.

PS> $hash = @{
    Name = 'foo'
    Category = 'bar'
}

# !! NO output, due to .ToString() conversion
$hash | Select-String -Pattern 'foo'

# Out-String converts the output to a single multi-line string object
PS> $hash | Out-String | Select-String -Pattern 'foo'

Name                           Value
----                           -----
Name                           foo
Category                       bar

# Out-String -Stream converts the output to a multiple single-line string objects
PS> $hash | Out-String -Stream | Select-String -Pattern 'foo'

Name                           foo

Canalización para Out-String -Stream convertir la salida con formato en varios objetos de cadena de una sola línea. Esto significa que, cuando Select-String encuentra una coincidencia, solo genera la línea coincidente.

Parámetros

-AllMatches

Indica que el cmdlet busca más de una coincidencia en cada línea de texto. Sin este parámetro, Select-String solo encuentra la primera coincidencia en cada línea de texto.

Cuando Select-String encuentra más de una coincidencia en una línea de texto, sigue emitiendo solo un objeto MatchInfo para la línea, pero la propiedad Matches del objeto contiene todas las coincidencias.

Nota:

Este parámetro se omite cuando se usa en combinación con el parámetro SimpleMatch . Si desea devolver todas las coincidencias y el patrón que está buscando contiene caracteres de expresión regular, debe escapar esos caracteres en lugar de usar SimpleMatch. Consulte about_Regular_Expressions para obtener más información sobre el escape de expresiones regulares.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CaseSensitive

Indica que las coincidencias del cmdlet distinguen mayúsculas de minúsculas. De forma predeterminada, las coincidencias no distinguen mayúsculas de minúsculas.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Context

Captura el número especificado de líneas antes y después de la línea que coincide con el patrón.

Si escribe un número como valor de este parámetro, ese número determina el número de líneas que se capturan antes y después de la coincidencia. Si escribe dos números como valor, el primer número determina el número de líneas antes de la coincidencia y el segundo número determina el número de líneas después de la coincidencia. Por ejemplo, -Context 2,3.

En la pantalla predeterminada, las líneas con una coincidencia se indican mediante un corchete angular derecho () (>ASCII 62) en la primera columna de la pantalla. Las líneas sin marcar son el contexto.

El parámetro Context no cambia el número de objetos generados por Select-String. Select-String genera un objeto MatchInfo para cada coincidencia. El contexto se almacena como una matriz de cadenas en la propiedad Context del objeto .

Cuando la salida de un Select-String comando se envía por la canalización a otro Select-String comando, el comando receptor busca solo el texto de la línea coincidente. La línea coincidente es el valor de la propiedad Line del objeto MatchInfo , no el texto de las líneas de contexto. Como resultado, el parámetro Context no es válido en el comando receptor Select-String .

Cuando el contexto incluye una coincidencia, el objeto MatchInfo para cada coincidencia incluye todas las líneas de contexto, pero las líneas superpuestas solo aparecen una vez en la pantalla.

Type:Int32[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Culture

Especifica un nombre de referencia cultural para que coincida con el patrón especificado. El parámetro Culture debe usarse con el parámetro SimpleMatch . El comportamiento predeterminado usa la referencia cultural del espacio de ejecución de PowerShell actual (sesión).

Para obtener una lista de todas las referencias culturales admitidas, use el Get-Culture -ListAvailable comando .

Además, este parámetro acepta los argumentos siguientes:

  • CurrentCulture, es el valor predeterminado;
  • Ordinal, que es una comparación binaria no lingüística;
  • Invariable, que es una comparación independiente de la referencia cultural.

Con Select-String -Culture Ordinal -CaseSensitive -SimpleMatch el comando obtiene la comparación binaria más rápida.

El parámetro Culture usa la finalización de tabulación para desplazarse por la lista de argumentos que especifican las referencias culturales disponibles. Para enumerar todos los argumentos disponibles, use el siguiente comando:

(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues

Para obtener más información sobre la propiedad de CultureInfo.Name de .NET, consulte CultureInfo.Name.

El parámetro Culture se introdujo en PowerShell 7.

Type:String
Position:Named
Default value:Culture of the current PowerShell session
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Especifica el tipo de codificación del archivo de destino. El valor predeterminado es utf8NoBOM.

Los valores aceptables para este parámetro son los siguientes:

  • ascii: usa la codificación para el juego de caracteres ASCII (7 bits).
  • ansi: usa la codificación para la página de códigos ANSI de la referencia cultural actual. Esta opción se agregó en PowerShell 7.4.
  • bigendianunicode: codifica en formato UTF-16 mediante el orden de bytes big-endian.
  • bigendianutf32: codifica en formato UTF-32 mediante el orden de bytes big-endian.
  • oem: usa la codificación predeterminada para los programas de consola y MS-DOS.
  • unicode: codifica en formato UTF-16 mediante el orden de bytes little-endian.
  • utf7: codifica en formato UTF-7.
  • utf8: codifica en formato UTF-8.
  • utf8BOM: codifica en formato UTF-8 con marca de orden de bytes (BOM)
  • utf8NoBOM: codifica en formato UTF-8 sin marca de orden de bytes (BOM)
  • utf32: codifica en formato UTF-32.

A partir de PowerShell 6.2, el parámetro Encoding también permite identificadores numéricos de páginas de códigos registradas (como -Encoding 1251) o nombres de cadena de páginas de códigos registradas (como -Encoding "windows-1251"). Para obtener más información, consulte la documentación de .NET para Encoding.CodePage.

A partir de PowerShell 7.4, puede usar el Ansi valor del parámetro Encoding para pasar el identificador numérico de la página de códigos ANSI de la referencia cultural actual sin tener que especificarlo manualmente.

Nota:

Ya no se recomienda usar UTF-7*. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7 para el parámetro Encoding .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Excluye los elementos especificados. El valor de este parámetro califica el parámetro Path . Escriba un elemento o patrón de ruta de acceso, como *.txt. Se permiten los caracteres comodín.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

Incluye los elementos especificados. El valor de este parámetro califica el parámetro Path . Escriba un elemento o patrón de ruta de acceso, como *.txt. Se permiten los caracteres comodín.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

Especifica el texto que se va a buscar. Especifique una variable que contenga el texto, o escriba un comando o una expresión que obtenga el texto.

El uso del parámetro InputObject no es el mismo que enviar cadenas por la canalización a Select-String.

Cuando canaliza más de una cadena al Select-String cmdlet, busca el texto especificado en cada cadena y devuelve cada cadena que contiene el texto de búsqueda.

Cuando se usa el parámetro InputObject para enviar una colección de cadenas, Select-String trata la colección como una sola cadena combinada. Select-String devuelve las cadenas como una unidad si encuentra el texto de búsqueda en cualquier cadena.

Los objetos FileInfo se tratan como una ruta de acceso a un archivo. Cuando se especifican rutas de acceso de archivo, Select-String busca en el contenido del archivo, no en la ToString() representación del objeto.

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-List

Solo se devuelve la primera instancia de texto coincidente de cada archivo de entrada. Esta es la manera más eficaz de recuperar una lista de archivos que tienen contenido que coincide con la expresión regular.

De forma predeterminada, Select-String devuelve un objeto MatchInfo para cada coincidencia que encuentra.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Especifica la ruta de acceso a los archivos en los que se va a buscar. El valor del parámetro LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso contiene caracteres de escape, escríbalos entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape. Para obtener más información, consulte about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoEmphasis

De forma predeterminada, Select-String resalta la cadena que coincide con el patrón que ha buscado con el parámetro Pattern . El parámetro NoEmphasis deshabilita el resaltado.

El énfasis usa colores negativos en función del fondo de PowerShell y los colores de texto. Por ejemplo, si los colores de PowerShell son un fondo negro con texto blanco. El énfasis es un fondo blanco con texto negro.

Este parámetro se introdujo en PowerShell 7.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NotMatch

El parámetro NotMatch busca texto que no coincide con el patrón especificado.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Especifica la ruta de acceso a los archivos que se van a buscar. Se permiten los caracteres comodín. La ubicación predeterminada es el directorio local.

Especifique los archivos en el directorio, como log1.txt, *.doco *.*. Si solo especifica un directorio, se produce un error en el comando.

Type:String[]
Position:1
Default value:Local directory
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Pattern

Especifica el texto que se va a buscar en cada línea. El valor de patrón se trata como una expresión regular.

Para obtener información sobre las expresiones regulares, consulte about_Regular_Expressions.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Quiet

Indica que el cmdlet devuelve un valor booleano (True o False), en lugar de un objeto MatchInfo . El valor es True si se encuentra el patrón; de lo contrario, el valor es False.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Raw

Hace que el cmdlet produzca solo las cadenas coincidentes, en lugar de los objetos MatchInfo . Este es el comportamiento más similar a los comandos grep de Unix o Windows findstr.exe.

Este parámetro se introdujo en PowerShell 7.

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-SimpleMatch

Indica que el cmdlet usa una coincidencia simple en lugar de una coincidencia de expresión regular. En una coincidencia simple, Select-String busca la entrada del texto en el parámetro Pattern . No interpreta el valor del parámetro Pattern como una instrucción de expresión regular.

Además, cuando se usa SimpleMatch , la propiedad Matches del objeto MatchInfo devuelto está vacía.

Nota:

Cuando este parámetro se usa con el parámetro AllMatches , se omite AllMatches .

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

PSObject

Puede canalizar cualquier objeto que tenga un ToString() método a este cmdlet.

Salidas

MatchInfo

De forma predeterminada, este cmdlet devuelve un objeto MatchInfo para cada coincidencia encontrada.

Boolean

Cuando se usa el parámetro Quiet , este cmdlet devuelve un valor booleano que indica si se encontró el patrón.

String

Cuando se usa el parámetro Raw , este cmdlet devuelve un conjunto de objetos String que coinciden con el patrón.

Notas

PowerShell incluye los siguientes alias para Select-String:

  • Todas las plataformas:
    • sls

Select-String es similar a grep en UNIX o findstr.exe en Windows.

El sls alias del Select-String cmdlet se introdujo en PowerShell 3.0.

Nota:

Según verbos aprobados para comandos de PowerShell, el prefijo de alias oficial para Select-* cmdlets es sc, no sl. Por lo tanto, el alias adecuado para Select-String debe ser scs, no sls. Se trata de una excepción a esta regla.

Al canalizar objetos a Select-String:

  • Los objetos FileInfo se tratan como una ruta de acceso a un archivo. Cuando se especifican rutas de acceso de archivo, Select-String busca en el contenido del archivo, no en la ToString() representación del objeto.
  • El ToString() resultado del objeto canalado no es la misma representación de cadena enriquecida generada por el sistema de formato de PowerShell. Por lo tanto, es posible que tenga que canalizar primero los objetos Out-String . Para obtener más información, vea Ejemplo 10.

Para usar Select-String, escriba el texto que desea buscar como el valor del parámetro Pattern . Para especificar el texto que se va a buscar, use los criterios siguientes:

  • Escriba el texto de una cadena entre comillas y, a continuación, canalítelo a Select-String.
  • Almacene una cadena de texto en una variable y, a continuación, especifique la variable como el valor del parámetro InputObject .
  • Si el texto se almacena en archivos, use el parámetro Path para especificar la ruta de acceso a los archivos.

De forma predeterminada, Select-String interpreta el valor del parámetro Pattern como una expresión regular. Para obtener más información, consulte about_Regular_Expressions. Puede usar el parámetro SimpleMatch para invalidar la coincidencia de expresiones regulares. El parámetro SimpleMatch busca instancias del valor del parámetro Pattern en la entrada.

La salida predeterminada de Select-String es un objeto MatchInfo , que incluye información detallada sobre las coincidencias. La información del objeto es útil cuando se busca texto en archivos, ya que los objetos MatchInfo tienen propiedades como Filename y Line. Cuando la entrada no procede del archivo, el valor de estos parámetros es InputStream.

Si no necesita la información en el objeto MatchInfo , use el parámetro Quiet . El parámetro Quiet devuelve un valor booleano (True o False) para indicar si encontró una coincidencia, en lugar de un objeto MatchInfo .

Al hacer coincidir frases, Select-String usa la referencia cultural actual establecida para el sistema. Para buscar la referencia cultural actual, use el Get-Culture cmdlet .

Para buscar las propiedades de un objeto MatchInfo , escriba el siguiente comando:

Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *