web-dev-qa-db-ja.com

mklinkとNew-Item-ItemType SymbolicLinkを使用して異なる結果が得られるのはなぜですか?

そのため、PowerShellを使用して相対パスでリンクを作成しようとしていますが、なぜ異なる結果が得られるのかわかりません。Windowsのコマンドラインはまったく新しいので、これがばかげた質問である場合は申し訳ありません。これが私が得たいくつかの結果です:

C:\Windows\system32>cd /d D:\test\directory
D:\test\directory>mklink testlink ..\test.txt
symbolic link created for testlink <<===>> ..\test.txt
PS D:\test\directory> New-Item -ItemType SymbolicLink -Path .\testlinkpowershell -Target ..\test.txt
D:\test\directory>dir
01/05/2020  10:57 AM    <SYMLINK>      testlink [..\test.txt]
01/05/2020  10:59 AM    <SYMLINK>      testlinkpowershell [D:\test\test.txt]

主な問題は、ドライブの文字が変更された場合、シンボリックリンクが機能しないことですが、mklinkを使用すると、チャームのように機能します。 mklinkを使用できることは知っていますが、PowerShellで機能しない理由を知りたいです。

1
Ariel JGS

Windows PowerShellは、シンボリックリンクの相対パスの作成をサポートしていません。したがって、シンボリックリンクを作成する前に、パスを絶対パスに解決します。

新しいPowerShellCoreでは、これが修正されました。 GitHubの問題 を参照してください

PowerShell Core 7では、New-Itemを使用して、相対パスを持つシンボリックリンクを作成できるようになりました。

彼らがこれをWindowsPowerShell5.xに移植するかどうかはわかりません。疑わしい。

0
Peter Hahndorf