PowerShell中是否有某種方法來模擬Linux ls -l
命令的行爲?等效於Linux的Windows PowerShell`ls -l`
我想看看符號鏈接指向什麼。具體來說,我使用PowerShell New-Symlink
實用程序,我想知道-Path在磁盤上的位置。
(是的,我知道 - 路徑,因爲我創造了它自己,但我想要一個ls -l
相當於在其他幾次。)
PowerShell中是否有某種方法來模擬Linux ls -l
命令的行爲?等效於Linux的Windows PowerShell`ls -l`
我想看看符號鏈接指向什麼。具體來說,我使用PowerShell New-Symlink
實用程序,我想知道-Path在磁盤上的位置。
(是的,我知道 - 路徑,因爲我創造了它自己,但我想要一個ls -l
相當於在其他幾次。)
看來PowerShell不支持這個開箱即用。 Here's an article explaining how to use dir
in PowerShell to show if there is a symbolic link, but it doesn't show the target of the link。要顯示鏈接的目標,您有兩個選項。首先使用fsutil reparsepoint query
或從命令提示符處使用dir
。兩者都有缺點。第一個以十六進制數據形式提供目標路徑,第二個必須從命令提示符處運行,如powershell別名爲dir
至Get-ChildItem
(不顯示符號鏈接)。
試試這個
Get-ChildItem | % { fsutil reparsepoint query $_ }
cmd /c dir /a:l
最好的答案我可以想出在下面的(使用正則表達式匹配的組中提取更多的信息,如果需要的話):
$PATH="C:\tmp"
cmd /c dir $PATH | ? { $_ -match '([\d\.]+)\s+([\d:]+)\s+(\S+)\s+([^\[]+)\s*\[?([^\]]*)\]?' } | % { New-Object -TypeName PSCustomObject -Property @{Name=$matches[4];Target=$matches[5]}}
輸出將類似於至此
Target Name
------ ----
.
..
file.txt
C:\tmp\file.txt symlink.txt