Compartir vía


Select-String

Busca texto en cadenas y archivos.

Sintaxis

File (Es el valor predeterminado).

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

ObjectRaw

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

Object

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

FileRaw

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

LiteralFileRaw

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

LiteralFile

Select-String
    [-Pattern] <String[]>
    -LiteralPath <String[]>
    [-Culture <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 del 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 (Verdadero o Falso) que indique 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 utilizar para mostrar todo el texto que no coincida 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 distinga entre mayúsculas y minúsculas

En este ejemplo se realiza una coincidencia entre mayúsculas y minúsculas del texto que se envió por 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 Select-String canalización al cmdlet. Select-String utiliza el parámetro Pattern para especificar HELLO. El parámetro CaseSensitive especifica que las mayúsculas y minúsculas solo deben coincidir con el patrón de mayúsculas y minúsculas. 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 HOLA en la consola de PowerShell.

Ejemplo 2: Buscar coincidencias en archivos de texto

Este comando busca todos los archivos con la extensión de nombre de .txt archivo en el directorio actual. La salida muestra las líneas de los 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 utiliza el parámetro Path con el comodín asterisco (*) para buscar 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 Patrón .

Ejemplo 3: Buscar una coincidencia de patrón

En este ejemplo, se buscan varios archivos para encontrar coincidencias para el patrón especificado. El patrón utiliza un cuantificador de expresión regular. Para obtener más información, vea 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 utiliza como carácter de escape y es necesaria porque el signo de interrogación (?) es un cuantificador de expresión regular. 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 Patrón .

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, vea 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. La function palabra clave usa el nombre Search-Help. Pulse Intro para empezar a añadir instrucciones a la función. En el símbolo del >> sistema, agregue cada instrucción y presione Entrar como se muestra en el ejemplo. Una vez agregado el corchete de cierre, se vuelve 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 utiliza los parámetros Path y Pattern . El parámetro Path utiliza la $PSHelp variable para obtener la ruta. El parámetro Pattern utiliza la cadena About_ como criterio de búsqueda.

Para ejecutar la función, escriba Search-Help. El comando de Select-String la 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 en la canalización. Para obtener más información, consulte sobre_Variables_Automáticas.

$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 la aplicación. 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 variable $Events se envía a la canalización al cmdlet Select-String. Select-String utiliza 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 en un directorio y en todos sus subdirectorios una cadena de texto específica.

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

Get-ChildItem utiliza 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 utiliza el parámetro Pattern y especifica la cadena Microsoft. El parámetro CaseSensitive se usa para que coincida con las mayúsculas y minúsculas exactas de la cadena. Select-String muestra la salida en la consola de PowerShell.

Nota:

En función de sus permisos, es posible que vea mensajes de acceso denegado en la salida.

Ejemplo 7: Buscar cadenas que no coincidan 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 por la canalización a la Out-File para crear el archivo Command.txt en el directorio actual. Select-String utiliza 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 por la canalización a la Out-File para crear el archivo Command.txt en el directorio actual. Select-String utiliza 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 utiliza 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 la primera coincidencia de patrón 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 encuentra 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 variable $A se envía a la canalización al cmdlet Select-String. Select-String usa el parámetro Pattern para buscar la cadena de PowerShell en cada archivo.

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 PowerShell en cada línea.

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

La $B variable usa los Get-ChildItem mismos 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 cuentan todas las apariciones del patrón 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 busca solo 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.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-CaseSensitive

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

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 introduce un número como valor de este parámetro, ese número determina el número de líneas capturadas antes y después de la coincidencia. Si introduce 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 de ángulo recto (>) (ASCII 62) en la primera columna de la pantalla. Las líneas no marcadas 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 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 de cada coincidencia incluye todas las líneas de contexto, pero las líneas superpuestas solo aparecen una vez en la pantalla.

Propiedades del parámetro

Tipo:

Int32[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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.

Propiedades del parámetro

Tipo:String
Valor predeterminado:Culture of the current PowerShell session
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Encoding

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

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

  • ascii: Utiliza la codificación para el conjunto de caracteres ASCII (7 bits).
  • ansi: utiliza la codificación para la página de códigos ANSI de la cultura actual. Esta opción se agregó en PowerShell 7.4.
  • bigendianunicode: codifica en formato UTF-16 utilizando el orden de bytes big-endian.
  • bigendianutf32: codifica en formato UTF-32 utilizando el orden de bytes big-endian.
  • oem: usa la codificación predeterminada para MS-DOS y programas de consola.
  • unicode: codifica en formato UTF-16 utilizando 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 Byte Order Mark (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 Codificación 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 utilizar el valor Ansi para el parámetro de Codificación para pasar el identificador numérico de la página de códigos ANSI de la cultura actual sin tener que especificarlo manualmente.

Nota:

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

Propiedades del parámetro

Tipo:Encoding
Valor predeterminado:UTF8NoBOM
Valores aceptados:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Exclude

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

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Include

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

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-InputObject

Especifica el texto que se va a buscar. Escriba 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 lo mismo que el envío de cadenas por la canalización a Select-String.

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

Cuando se utiliza 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.

Propiedades del parámetro

Tipo:PSObject
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

Object
Posición:Named
Mandatory:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
ObjectRaw
Posición:Named
Mandatory:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 encuentre.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-LiteralPath

Especifica la ruta de acceso a los archivos que se van 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 incluye caracteres de escape, escríbala 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 sobre_las_normas_de_citación.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:PSPath, LP

Conjuntos de parámetros

LiteralFileRaw
Posición:Named
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False
LiteralFile
Posición:Named
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes: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.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-NotMatch

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

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 archivos en el directorio, como log1.txt, *.doc, o *.*. Si especifica solo un directorio, se produce un error en el comando.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:Local directory
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

File
Posición:1
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False
FileRaw
Posición:1
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-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 más información sobre las expresiones regulares, consulte about_Regular_Expressions.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:0
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Quiet

Indica que el cmdlet devuelve una respuesta simple en lugar de un objeto MatchInfo . El valor devuelto es $true si se encuentra el patrón o $null si no se encuentra el patrón.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

File
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
Object
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
LiteralFile
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Raw

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

Este parámetro se introdujo en PowerShell 7.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

ObjectRaw
Posición:Named
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
FileRaw
Posición:Named
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
LiteralFileRaw
Posición:Named
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 el texto en la entrada del parámetro Patrón . 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 .

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

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:

De acuerdo con los verbos aprobados para comandos de PowerShell, el prefijo de alias oficial para Select-* los cmdlets es sc, no sl. Por lo tanto, el alias adecuado para Select-String debe ser scs, no sls. Esta es 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, consulte el ejemplo 10.

Para utilizar Select-String, escriba el texto que desea buscar como valor del parámetro Patrón . Para especificar el texto que se va a buscar, utilice los siguientes criterios:

  • Escriba el texto en una cadena entrecomillada y, a continuación, críelo 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, utilice 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, vea 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 del 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 utiliza 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 *