Test-Path返回true但Remove-Item找不到路径

时间:2016-05-12 10:24:42

标签: powershell

我在PowerShell中创建一个脚本,该脚本应该找到用户的UPM文件夹并将.old附加到它(以方便配置文件重建)。

下面的代码段是我的代码:

# Rename the UPM profile
Exit-PSSession
cd '\\SYLX-FS-01\D$\UPMProfiles'
$UPMPath = "$target.upm"
$UPMOld = "$target.upm.old"
if (Test-Path $UPMPath -IsValid) {
    if (Test-Path $UPMOld -IsValid) {
        Remove-Item $UPMOld
        Rename-Item $UPMPath -NewName $UPMOld
        Write-Host "Renamed UPMProfile"
    } else {
        Rename-Item $UPMPath -NewName $UPMOld
        Write-Host "Renamed UPMProfile"
    }
} else {
    # Write-Host "UPM Profile not found, no action has been taken on the file server."
    $UPM = "False"
}

每次运行时都会返回一个无法找到文件的错误。

Remove-Item : Cannot find path '\\SYLX-FS-01\D$\UPMProfiles\bill.odwyer.upm.old'
because it does not exist.
At line:8 char:20
+         Remove-Item <<<<  $UPMOld
    + CategoryInfo          : ObjectNotFound: (\\SYLX-FS-01...er.upm.old:String) [Remove-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

据我所知,如果$UPMPath存在,它应该只到第8行,如果不存在,那么它应该只跳到else。我错过了什么?

2 个答案:

答案 0 :(得分:4)

如果你放弃旗帜&#34; -IsValid&#34;它应该工作。

如果路径本身是有效(合法)路径,则IsValid返回true。它不会检查文件/文件夹是否存在。

如果删除-IsValid,则测试路径检查,如果路径存在则返回true / false。

详细了解:https://technet.microsoft.com/en-us/library/hh849776.aspx

答案 1 :(得分:3)

Test-Path -IsValid检查路径规范是否有效,而不是路径实际存在。删除参数-IsValid以验证是否存在路径。

来自documentation

  

<强> -IsValid
  确定路径的语法是否正确,无论路径的元素是否存在。如果路径语法有效,则此参数返回TRUE;如果不是,则返回FALSE。