
beim Versuch, den folgenden PowerShell-Befehl auszuführen, wird eine Fehlermeldung angezeigt.
Der Befehl :
*PS cert:\currentuser\authroot> gci | wobei Betreff -like "UTN"*
Der Fehler ist unten:
Where-Object: Parameter „FilterScript“ kann nicht gebunden werden. Der „Subject“-Wert vom Typ „System.String“ kann nicht in den Typ „System.Management.Automation.ScriptBlock“ konvertiert werden. In Zeile:1 char:12 + gci | where <<<< Subject -like "UTN" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: ArgumentNoMessage kann nicht konvertiert werden, Microsoft.PowerShell.Commands.WhereObjectCommand
Ich verwende Windows PowerShell ISE.
Eine praktikable Lösung wäre sehr willkommen.
Antwort1
Es sieht so aus, als ob Sie PowerShell Vs.2 verwenden. Diese Version hatte keine Unterstützung für das Neue where syntax
.
Verwenden Sie in Version 1 und 2 von PowerShell:
gci | where {$_.subject -like "UTN"}
Sie müssen den Ausdruck in geschweifte Klammern setzen und auf alle Eigenschaften mit dem $_.
Präfix verweisen.
Antwort2
Peter Hahndorf hat darauf bereits geantwortet, aber ich wollte noch etwas näher auf die Fehlermeldung eingehen, die Sie erhalten haben:
Der „Subject“-Wert vom Typ „System.String“ kann nicht in den Typ „System.Management.Automation.ScriptBlock“ konvertiert werden.
Dies bedeutet, dass ein nicht string
in ein umgewandelt werden kann scriptBlock
. Darauf where
muss daher ein Skriptblock wie der folgende folgen:{code here}
Lesen Sie unbedingt die Fehlermeldungen und versuchen Sie, ihre Bedeutung zu interpretieren.
Antwort3
Verwenden Sie "-match", um UTN zu finden, die überall im Betreff vorkommen können
gci | ?{$_.subject -match "UTN"}
Wenn Sie „-like“ verwenden und nichts angezeigt wird, setzen Sie das Gesuchte zwischen Sternchen und Anführungszeichen.
gci | ?{$_.subject -like "*UTN*"}