Назад | Перейти на главную страницу

Почему я получаю разные результаты при использовании 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.

Windows PowerShell просто не поддерживает создание относительных путей для символьных ссылок. Таким образом, он разрешает путь к абсолютному перед созданием символической ссылки.

В новой версии PowerShell Core это исправили. Видеть Проблема с GitHub

В PowerShell Core 7 теперь можно использовать New-Item для создания символьной ссылки с относительным путем.

Я понятия не имею, перенесут ли они это когда-нибудь обратно в Windows PowerShell 5.x. Я сомневаюсь в этом.