我将尝试使其尽可能简洁。
我正在使用 PowerShell 7.2.0,但无法使该where-object
命令或其别名where
正常?
工作。我想要的是与CMD 中的命令
相同的功能。where
我尝试了该命令及其别名,但它们都没有返回任何内容。我确认它们已经存在(无需设置别名)使用get-alias
命令。
我怎样才能解决这个问题?
答案1
相当于电源外壳是获取子项。
不带任何参数,相当于dir
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
- 如果未指定路径,它将使用当前位置。
- 要包含当前位置或指定路径的子目录,请使用
-REcurse
(-s
) 参数。 Get-ChildItem
许多简单的搜索可以通过使用带有文字和/或通配符的各种参数来完成。- 更复杂的搜索可能需要将结果通过管道传输
GetChildItem
到Where-Object
。 - 因为您需要完全限定路径,所以您会需要
FullName
返回的 FileInfo 对象的属性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
您给出的例子如下:
(gci pyton* -Recurse).FullName
- 从根目录或已知为以下位置祖先的文件夹执行
python.exe
- 如果从系统驱动器的根目录进行搜索,您很可能需要使用
-ErrorAction SilentlyContinue
(-ea silent
) 参数来抑制Access denied
错误。
答案2
以下函数为我提供了与 相同的where
功能cmd
:
function which ($command) {
Get-Command -Name $command -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
}
答案3
您可以使用where
CMD 使用的实用程序(例如where.exe python
)。