
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 string
en a scriptBlock
, lo que implica que where
debe 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*"}