PowerShell 删除连接
PowerShell Remove Junction
从 Windows 10 开始,PowerShell 终于能够在本地创建连接和链接。
然而,Remove-Item 函数似乎没有意识到连接并尝试删除要求确认的目录,以及是否应该递归地删除其中的项目。
所以,问题是:
有没有办法使用 PowerShell 本机 Cmdlet 删除联结? (即不调用 cmd)
试试这个 "command-let":
cmd /c rmdir .\Target
Is there a way to remove a junction using PowerShell?
目前,至少在 PowerShell v5 中,this is considered "fixed"。您可以做的是使用 -Force
开关,否则您将收到错误消息,称该路径为 NTFS 连接。我至少在 fixed 上使用引号的原因是使用开关仍会显示目录中有关子项的消息。选择 Y 仍然只会删除我使用 PSv5 进行的测试中的连接。
Remove-Item "C:\temp\junction" -Force -Confirm:$False
如果这对您不起作用或者您没有 v5,您可以使用 .Net 方法删除目录。这似乎也能正常工作。
[io.directory]::Delete("C:\temp\junction")
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
}
}
}
简单命令-
rm [path of file] -Force
从 Windows 10 开始,PowerShell 终于能够在本地创建连接和链接。
然而,Remove-Item 函数似乎没有意识到连接并尝试删除要求确认的目录,以及是否应该递归地删除其中的项目。
所以,问题是: 有没有办法使用 PowerShell 本机 Cmdlet 删除联结? (即不调用 cmd)
试试这个 "command-let":
cmd /c rmdir .\Target
Is there a way to remove a junction using PowerShell?
目前,至少在 PowerShell v5 中,this is considered "fixed"。您可以做的是使用 -Force
开关,否则您将收到错误消息,称该路径为 NTFS 连接。我至少在 fixed 上使用引号的原因是使用开关仍会显示目录中有关子项的消息。选择 Y 仍然只会删除我使用 PSv5 进行的测试中的连接。
Remove-Item "C:\temp\junction" -Force -Confirm:$False
如果这对您不起作用或者您没有 v5,您可以使用 .Net 方法删除目录。这似乎也能正常工作。
[io.directory]::Delete("C:\temp\junction")
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
}
}
}
简单命令-
rm [path of file] -Force