Power Shell-Fehler: Parameter kann nicht gebunden werden

Power Shell-Fehler: Parameter kann nicht gebunden werden

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 stringin ein umgewandelt werden kann scriptBlock. Darauf wheremuss 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*"}

verwandte Informationen