PowerShellにLinuxの動作をエミュレートする方法はありますかls -l
コマンド?
シンボリックリンクが指すものを確認したいと思います。具体的には、PowerShell New-Symlink
ユーティリティと-Pathがディスク上のどこにあるかを知りたいです。
(はい、自分で作成したので-Pathは知っていますが、ls -l
他のいくつかの状況では同等です。)
Powershellは、これを最初からサポートしていないようです。 シンボリックリンクがあるかどうかを示すためにPowerShellでdir
を使用する方法を説明する記事がありますが、リンクのターゲットは表示されません 。リンクのターゲットを表示するには、2つのオプションがあります。最初にfsutil reparsepoint query
を使用するか、コマンドプロンプトからdir
を使用します。どちらにも欠点があります。 1つ目はターゲットパスを16進データとして示し、2つ目はコマンドプロンプトから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