Error de Power Shell: no se puede vincular el parámetro

Error de Power Shell: no se puede vincular el parámetro

Cuando intento ejecutar el siguiente comando de PowerShell, aparece un error.

El comando :

*Certificado PS:\currentuser\authroot> gci | donde sujeto -como "utn"*

El error está a continuación:

Donde-Objeto: No se puede vincular el parámetro 'FilterScript'. No se puede convertir el valor "asunto" del tipo "System.String" al tipo "System.Management.Automation.ScriptBlock". En la línea:1 char:12 + gci | donde <<<< sujeto -como "utn" + CategoryInfo: Argumento no válido: (:) [Dónde-Objeto], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand

Estoy usando Windows PowerShell ISE.
una solución viable es muy apreciada

Respuesta1

Parece que estás usando PowerShell Vs.2, esa versión no era compatible con el nuevo where syntax.

En las versiones 1 y 2 de PowerShell utilice:

gci | where {$_.subject -like "UTN"}

Debe colocar llaves alrededor de la expresión y hacer referencia a cualquier propiedad con el $_.prefijo.

Respuesta2

Peter Hahndorf ya respondió a esto, pero quería ampliar el mensaje de error que recibió:

No se puede convertir el valor "asunto" del tipo "System.String" al tipo System.Management.Automation.ScriptBlock"

Esto quiere decir que no puede convertir a stringen a scriptBlock, lo que implica que wheredebe ir seguido de un bloque de secuencia de comandos como este:{code here}

Asegúrese de leer los mensajes de error e intente interpretar lo que significan.

Respuesta3

Utilice "-match" para encontrar UTN que podría estar en cualquier parte del tema

gci | ?{$_.subject -match "UTN"}

Si usa "-like" y no aparece nada, coloque lo que busca entre asteriscos y entre comillas.

gci | ?{$_.subject -like "*UTN*"}

información relacionada