Gists
mklink
mklink
Creating a Symbolic Link using PowerShell
在 cmd.exe 中可以直接调用 mklink.exe,但在某些情况下你想和 cmd 撇清关系,一种取巧的办法是在 powershell 中先调用 cmd.exe。
cmd /c mklink
cmd /c 和 cmd /k 的区别在于 Close 和 Keep,前者执行完后会退出 cmd 窗口而后者不会,所以在这里 /c 和 /k 看你的具体需要使用了。
除了 cmd,你还可以使用 PInvoke 技术。
- 在 C# 函数调用 Win32 API 中的 CreateSymbolicLink 函数;
- 在 powershell 中使用 Add-Type 声明这段 C# 代码;
- 调用,就是这么简单;
Add-Type @"
using System;
using System.Runtime.InteropServices;
namespace mklink
{
public class symlink
{
[DllImport("kernel32.dll")]
public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
}
}
"@
[mklink.symlink]::CreateSymbolicLink('source-path', "target path", 1)
文章还封装了一个完整的 New-SymLink 函数,校验并清洗了参数,更方便调用了。
New-SymLink -Path "C:\Users" -SymName "C:\Another" -Directory -Verbose