PowerShell 1.0可以创建类似Unix的硬链接和软链接吗?
如果这不是内置的,有人能告诉我一个网站,有一个ps1脚本模仿这个吗?
恕我直言,这是任何优秀shell的必要功能。:)
PowerShell 1.0可以创建类似Unix的硬链接和软链接吗?
如果这不是内置的,有人能告诉我一个网站,有一个ps1脚本模仿这个吗?
恕我直言,这是任何优秀shell的必要功能。:)
当前回答
我写了一个PowerShell模块,它有MKLINK的本机包装器。https://gist.github.com/2891103
包括以下函数:
New-Symlink New-HardLink New-Junction
捕获MKLINK输出并在必要时抛出适当的PowerShell错误。
其他回答
我发现这是一种无需外界帮助的简单方法。是的,它使用了一个古老的DOS命令,但它很有效,很简单,很清楚。
$target = cmd /c dir /a:l | ? { $_ -match "mySymLink \[.*\]$" } | % `
{
$_.Split([char[]] @( '[', ']' ), [StringSplitOptions]::RemoveEmptyEntries)[1]
}
它使用DOS dir命令来查找带有符号链接属性的所有条目,过滤目标“[]”括号后面的特定链接名称,并且对于每个条目(假设只有一个)只提取目标字符串。
我写了一个PowerShell模块,它有MKLINK的本机包装器。https://gist.github.com/2891103
包括以下函数:
New-Symlink New-HardLink New-Junction
捕获MKLINK输出并在必要时抛出适当的PowerShell错误。
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