在Windows Powershell中,mklink的等效命令是什么?

14
当我在文件夹上按shift右键时,我曾经能够“在此处打开命令行窗口”。请注意:我不感兴趣的是在注册表中进行修改以恢复此功能。通过这个功能,我可以使用mklink创建符号链接。根据微软最近的高深智慧,在过去几次Windows 10更新后,“在此处打开命令行窗口”已被替换为“在此处打开PowerShell”。因此,遵守微软尊贵的智慧意味着我应该使用PowerShell而不是旧版的cmd。那么在PowerShell中制作软链接等其他类型的链接的相应方法是什么?

我认为这个问题不适合在这个网站上讨论,但是你可以在地址栏中输入“cmd”进入文件夹并获取命令行。从PowerShell中,您可以执行“cmd /c mklink”。据我所知,PowerShell当前没有包含此功能的命令。 - briantist
3
可能是 使用 PowerShell 创建硬链接和软链接 的重复内容。 - Kory Gill
1
Win10/PS5支持使用New-Item实现此功能。 - Kory Gill
2
new-item 可以创建 HardLink、SymbolicLink 和 Junction 链接类型。但是,与 CMD 的 mklink 不同的是,它无法创建指向不存在目标的 SymbolicLink 或 Junction。它曾经支持创建指向不存在目标的普通符号链接(即非目录符号链接),但在最新版本的 Windows 10 中已经不再起作用了。也许这会让人们期望 Windows 符号链接像 Unix 符号链接一样运行,从而导致太多的混淆。 - Eryk Sun
2
此外,在PowerShell 5.1中,remove-item无法删除目录符号链接。您必须使用更冗长的命令[IO.Directory] :: Delete('symlink_path')remove-item可用于删除连接点,但需要-force并显示警告,好像要删除目标目录的内容,但实际上并不会(至少在5.1中不会)。我很惊讶他们发布了这样一个未完成状态的代码。 - Eryk Sun
https://superuser.com/questions/98420/mklink-not-installed-on-windows-7 - Al Fahad
2个回答

16

这在[1]中有解答:https://dev59.com/kHNA5IYBdhLWcg3wmfO5#34905638

但是使用New-Item Powershell命令,不再需要使用DOS CMD。

   New-Item -Path <to> -ItemType SymbolicLink -Value <from>

<to>参数指向新符号链接的位置,<from>参数指向新符号链接的目标。例如:

   New-Item -Path "$env:USERPROFILE\desktop\MyNewLinkToCmd.exe" `
            -ItemType SymbolicLink -Value "c:\windows\system32\cmd.exe"

请注意,您必须在以管理员身份运行的 Powershell 中运行此命令。


1
对于相对目录符号链接,请确保在源路径前加上.\,否则你将得到一个损坏的文件符号链接。其他人也指出,你可能需要一个比较新的PowerShell版本(至少是pwsh 7.1.x)才能使其正常工作。 - CodeManX
1
由于2018年仍未修复的错误,实际上在某些情况下需要使用mklink命令;请参阅https://github.com/PowerShell/PowerShell/issues/6232。 - sam-6174

11

您可以通过以下方式在PowerShell中创建软链接:

cmd /c mklink /J "<link>" "<target>"

上述代码在PowerShell中使用了旧版的cmd。然而,对于符号链接(/D),上述代码不起作用。

1
只是想指出,复制和粘贴时,引号可能会导致问题。请使用 " 而不是 “ 或 ”。 - Adam Dylla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接