PowerShell 1.0可以创建类似Unix的硬链接和软链接吗?

如果这不是内置的,有人能告诉我一个网站,有一个ps1脚本模仿这个吗?

恕我直言,这是任何优秀shell的必要功能。:)


当前回答

添加“pscx”模块

不,它不是内置在PowerShell中。在Windows Vista/Windows 7上不能单独调用mklink实用程序,因为它是作为“内部命令”直接构建在cmd.exe中。

您可以使用PowerShell社区扩展(免费)。对于不同类型的重解析点,有几个cmdlet:

New-HardLink, New-SymLink, New-Junction, Remove-ReparsePoint 和其他人。

其他回答

New-Symlink:

Function New-SymLink ($link, $target)
{
    if (test-path -pathtype container $target)
    {
        $command = "cmd /c mklink /d"
    }
    else
    {
        $command = "cmd /c mklink"
    }

    invoke-expression "$command $link $target"
}

Remove-Symlink:

Function Remove-SymLink ($link)
{
    if (test-path -pathtype container $link)
    {
        $command = "cmd /c rmdir"
    }
    else
    {
        $command = "cmd /c del"
    }

    invoke-expression "$command $link"
}

用法:

New-Symlink "c:\foo\bar" "c:\foo\baz"
Remove-Symlink "c:\foo\bar"

添加“pscx”模块

不,它不是内置在PowerShell中。在Windows Vista/Windows 7上不能单独调用mklink实用程序,因为它是作为“内部命令”直接构建在cmd.exe中。

您可以使用PowerShell社区扩展(免费)。对于不同类型的重解析点,有几个cmdlet:

New-HardLink, New-SymLink, New-Junction, Remove-ReparsePoint 和其他人。

你可以使用这个实用程序:

c:\Windows\system32\fsutil.exe create hardlink

Windows 10(以及Powershell 5.0)允许您通过New-Item cmdlet创建符号链接。

用法:

New-Item -Path C:\LinkDir -ItemType SymbolicLink -Value F:\RealDir

或者在你的个人资料中:

function make-link ($target, $link) {
    New-Item -Path $link -ItemType SymbolicLink -Value $target
}

打开开发人员模式,在新建项目链接时不需要管理员权限:

尝试junction.exe

来自SysInternals的Junction命令行实用程序可以轻松地创建和删除连接。

进一步的阅读

MS术语:软!=符号 微软使用“软链接”作为“连接”的另一个名称。 然而,“符号链接”完全是另一回事。 参见MSDN: Windows中的硬链接和连接。 (这与“软链接”和“符号链接”(“symlink”)的一般用法完全相反。)