Windows

為什麼我使用 mklink 和 New-Item -ItemType SymbolicLink 得到不同的結果?

  • January 6, 2020

所以我正在嘗試使用 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。我對此表示懷疑。

引用自:https://serverfault.com/questions/997701