PowerShell 7 „Where-Object“ und seine Aliase geben nichts zurück

PowerShell 7 „Where-Object“ und seine Aliase geben nichts zurück

Ich werde versuchen, es so kurz wie möglich zu machen.

Ich verwende PowerShell 7.2.0 und kann den where-objectBefehl oder seine Aliase nicht wherezum ?Laufen bringen.
Ich möchte dieselbe Funktionalität wie mit dem whereBefehl in CMD.

Ich habe den Befehl und seine Aliase ausprobiert, aber keiner von ihnen gibt etwas zurück. Ich habe bestätigt, dass sie bereits da sind (es müssen keine Aliase gesetzt werden) mit dem get-aliasBefehl.

Wie kann ich das beheben?

Antwort1

Das Äquivalent inPower ShellIstUntergeordnetes Element abrufen.

Ohne Parameter entspricht es dirin cmd.

PS C:\...\DummyDesktop>gci


    Directory: C:\Users\keith\DummyDesktop


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        10/30/2021   3:51 AM             11 logs.txt
-a----        11/14/2021  11:07 PM           4833 Regex Whitespace Mode.txt
-a----         11/9/2021   4:51 AM           1011 troubleshooting updates.txt
-a----         11/9/2021   2:55 AM            143 Update Error Troubleshooting.url
  • Wenn kein Pfad angegeben ist, wird der aktuelle Standort verwendet.
  • Um Unterverzeichnisse des aktuellen Standorts oder des angegebenen Pfads einzuschließen, verwenden Sie den Parameter -REcurse( -s).
  • Viele einfache Suchvorgänge können durch die Verwendung der verschiedenen Parameter Get-ChildItemmit Literalen und/oder Platzhaltern durchgeführt werden.
  • Bei komplizierteren Suchvorgängen ist möglicherweise eine Weiterleitung der Ergebnisse GetChildIteman erforderlich Where-Object.
  • Da Sie den vollqualifizierten Pfad benötigen, benötigen Sie die FullNameEigenschaft des von zurückgegebenen FileInfo-Objekts gci.
PS C:\...\Documents>gci ventra*


    Directory: C:\Users\keith\Documents


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          3/2/2016  12:02 PM             27 Ventra.txt
-a----          4/5/2021  11:13 PM            181 Ventra.zip


PS C:\...\Documents>(gci ventra*).FullName
C:\Users\keith\Documents\Ventra.txt
C:\Users\keith\Documents\Ventra.zip

Die Beispiele, die Sie genannt haben, würden etwa so aussehen:

(gci pyton* -Recurse).FullName
  • Ausgeführt vom Stammverzeichnis oder einem Ordner, der als Vorgänger des Speicherorts vonpython.exe
  • Wenn Sie vom Stammverzeichnis Ihres Systemlaufwerks aus suchen, möchten Sie höchstwahrscheinlich den Parameter -ErrorAction SilentlyContinue( -ea silent) verwenden, um Access deniedFehler zu unterdrücken.

Antwort2

Mit der folgenden Funktion konnte ich die gleiche Funktionalität wie wherein erreichen cmd:

function which ($command) {
    Get-Command -Name $command -ErrorAction SilentlyContinue | 
        Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
}

Antwort3

Sie können das wherevon CMD verwendete Dienstprogramm verwenden (z. B. where.exe python).

verwandte Informationen