因此,我尝试使用 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
Windows PowerShell 根本不支持为符号链接创建相对路径。因此,它会在创建符号链接之前将路径解析为绝对路径。
在较新的 PowerShell Core 中,他们修复了这个问题。请参阅GitHub 问题
在 PowerShell Core 7 中,您现在可以使用New-Item
创建具有相对路径的符号链接。
我不知道他们是否会将其移植回 Windows PowerShell 5.x。我对此表示怀疑。