Итак, я пытаюсь создать ссылки с относительным путем с помощью 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.
Windows PowerShell просто не поддерживает создание относительных путей для символьных ссылок. Таким образом, он разрешает путь к абсолютному перед созданием символической ссылки.
В новой версии PowerShell Core это исправили. Видеть Проблема с GitHub
В PowerShell Core 7 теперь можно использовать New-Item
для создания символьной ссылки с относительным путем.
Я понятия не имею, перенесут ли они это когда-нибудь обратно в Windows PowerShell 5.x. Я сомневаюсь в этом.