
quando estou tentando executar o comando do PowerShell abaixo, recebo um erro.
O comando :
*Certificado PS:\currentuser\authroot> gci | onde sujeito -como "UTN"*
O erro está abaixo:
Where-Object: Não é possível vincular o parâmetro 'FilterScript'. Não é possível converter o valor "subject" do tipo "System.String" para o tipo "System.Management.Automation.ScriptBlock". Na linha:1 caractere:12 + gci | onde <<<< assunto -como "UTN" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand
Estou usando o Windows PowerShell ISE.
uma solução viável é altamente apreciada
Responder1
Parece que você está usando o PowerShell Vs.2, essa versão não tinha suporte para o novo where syntax
.
Nas versões 1 e 2 do PowerShell, use:
gci | where {$_.subject -like "UTN"}
Você precisa colocar colchetes ao redor da expressão e referir-se a quaisquer propriedades com o $_.
prefixo.
Responder2
Peter Hahndorf já respondeu isso, mas gostaria de expandir a mensagem de erro que você recebeu:
Não é possível converter o valor "assunto" do tipo "System.String" para o tipo System.Management.Automation.ScriptBlock"
Isso quer dizer que ele não pode converter a string
em a scriptBlock
, o que implica que where
precisa ser seguido por um bloco de script como este:{code here}
Certifique-se de ler as mensagens de erro e tentar interpretar o que elas significam.
Responder3
Use "-match" para encontrar UTN que pode estar em qualquer lugar do assunto
gci | ?{$_.subject -match "UTN"}
Se você usar "-like" e nada aparecer, coloque o que procura entre asteriscos e entre aspas.
gci | ?{$_.subject -like "*UTN*"}