符号链接不能在 Powershell 5.1 中创建,但可以通过 Powershell 7 和命令提示符创建
Symlinks cannot be created in Powershell 5.1 but can be created by Powershell 7 and Command Prompt
Windows Developer Mode
已启用,以下均为non admin shells
。
在下面详述的所有场景中,当前目录中存在一个名为 target
的文件。
通过 Powershell 5.1
下面给出一个 ERROR
PS C:\Users\user\repos\tmp> Get-Host | Select-Object Version
Version
5.1.19041.610
PS C:\Users\user\repos\tmp> New-Item -Path link -ItemType SymbolicLink -Target target
New-Item : Administrator privilege required for this operation.
At line:1 char:1
+ New-Item -Path link -ItemType SymbolicLink -Target target
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Users\user\repos\tmp\target:String) [New-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : NewItemSymbolicLinkElevationRequired,Microsoft.PowerShell.Commands.NewItemCommand
通过Powershell 7.1
以下作品
PS C:\Users\user\repos\tmp> Get-Host | Select-Object Version
Version
7.0.2
PS C:\Users\user\repos\tmp> New-Item -Path link -ItemType SymbolicLink -Target target
la--- 3/13/2021 1:55 AM 0 link -> target
通过 Powershell 5.1
和 Powershell 7
以下作品
PS C:\Users\user\repos\tmp> cmd /c mklink link .\target
symbolic link created for link <<===>> .\target
通过Command Prompt
以下作品
C:\Users\user\repos\tmp>mklink link target
symbolic link created for link <<===>> target
有谁知道为什么只有 Powershell 5.1 会出现这个错误,有没有办法解决这个问题?
当 Microsoft 启用非管理员符号 link 创建(启用开发人员模式)时,他们以所有未编码使用它的程序都无法使用它的方式进行,并更新了 mklink
才能使用它。
明显的解决方法:通过您已经发现的 cmd /c
从 Powershell 调用 mklink
。
Windows Developer Mode
已启用,以下均为non admin shells
。
在下面详述的所有场景中,当前目录中存在一个名为 target
的文件。
通过 Powershell 5.1
下面给出一个 ERROR
PS C:\Users\user\repos\tmp> Get-Host | Select-Object Version
Version
5.1.19041.610
PS C:\Users\user\repos\tmp> New-Item -Path link -ItemType SymbolicLink -Target target
New-Item : Administrator privilege required for this operation.
At line:1 char:1
+ New-Item -Path link -ItemType SymbolicLink -Target target
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Users\user\repos\tmp\target:String) [New-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : NewItemSymbolicLinkElevationRequired,Microsoft.PowerShell.Commands.NewItemCommand
通过Powershell 7.1
以下作品
PS C:\Users\user\repos\tmp> Get-Host | Select-Object Version
Version
7.0.2
PS C:\Users\user\repos\tmp> New-Item -Path link -ItemType SymbolicLink -Target target
la--- 3/13/2021 1:55 AM 0 link -> target
通过 Powershell 5.1
和 Powershell 7
以下作品
PS C:\Users\user\repos\tmp> cmd /c mklink link .\target
symbolic link created for link <<===>> .\target
通过Command Prompt
以下作品
C:\Users\user\repos\tmp>mklink link target
symbolic link created for link <<===>> target
有谁知道为什么只有 Powershell 5.1 会出现这个错误,有没有办法解决这个问题?
当 Microsoft 启用非管理员符号 link 创建(启用开发人员模式)时,他们以所有未编码使用它的程序都无法使用它的方式进行,并更新了 mklink
才能使用它。
明显的解决方法:通过您已经发现的 cmd /c
从 Powershell 调用 mklink
。