从Windows 10开始,PowerShell最终能够本地创建连接和链接。
Howerver删除项目功能似乎没有意识到联结并尝试删除要求确认的目录,以及是否应该递归删除其中的项目。
所以,问题是: 有没有办法使用PowerShell本机Cmdlet删除联结? (即不调用cmd)
答案 0 :(得分:4)
有没有办法使用PowerShell删除联结?
目前,至少在PowerShell v5中,this is considered "fixed"。你可以做的是使用-Force
开关,否则你会在调用NTFS连接路径时出错。我至少在固定时使用引号的原因是使用开关仍然会显示目录中有关子节点的消息。选择Y仍将仅使用PSv5删除测试中的结点。
Remove-Item "C:\temp\junction" -Force -Confirm:$False
如果这对您不起作用或者您没有v5,则可以使用.Net方法删除目录。这似乎也正常工作。
[io.directory]::Delete("C:\temp\junction")
答案 1 :(得分:0)
答案 2 :(得分:0)
经过Google搜索很长一段时间后,我找到了答案:
function Remove-Any-File-Force ($Target) {
if ( Test-Path -Path "$Target" ){
& $env:SystemRoot\System32\ATTRIB.exe -S -H -R "$Target" >$null 2>$null
} else {
return
}
$TargetAttributes = (Get-Item -Path $Target -Force).Attributes.ToString()
if ($TargetAttributes -match "ReparsePoint") {
if ($TargetAttributes -match "Archive") {
Remove-Item -Path "$Target" -Force
} else {
try {
& $env:SystemRoot\System32\cmd.exe /c rmdir /Q "$Target" >$null 2>$null
} catch {
try {
[io.directory]::Delete("$Target")
} catch {
Remove-Item -Path "$Target" -Force
}
}
}
} else {
if ($TargetAttributes -match "Directory") {
Remove-Item -Path "$Target" -Force -Recurse
} else {
Remove-Item -Path "$Target" -Force
}
}
}
答案 3 :(得分:0)
简单命令-
rm [path of file] -Force