2015-04-27 96 views
2

PowerShell中是否有某種方法來模擬Linux ls -l命令的行爲?等效於Linux的Windows PowerShell`ls -l`

我想看看符號鏈接指向什麼。具體來說,我使用PowerShell New-Symlink實用程序,我想知道-Path在磁盤上的位置。

(是的,我知道 - 路徑,因爲我創造了它自己,但我想要一個ls -l相當於在其他幾次。)

回答

3

看來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別名爲dirGet-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