【问题标题】:Test-Path returns true but Remove-Item could not find pathTest-Path 返回 true 但 Remove-Item 找不到路径
【发布时间】:2016-05-12 10:24:42
【问题描述】:

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

下面的sn-p是我的代码:

# 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"
}

每次我运行它都会返回一个找不到文件的错误。

删除项目:找不到路径 '\\SYLX-FS-01\D$\UPMProfiles\bill.odwyer.upm.old'
因为它不存在。
在行:8 字符:20
+ 删除项目 

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

【问题讨论】:

    标签: powershell


    【解决方案1】:

    如果你放弃标志“-IsValid”,它应该可以工作。

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

    如果您删除 -IsValid,则测试路径会检查并在路径存在与否时返回 true/false。

    阅读更多:https://technet.microsoft.com/en-us/library/hh849776.aspx

    【讨论】:

      【解决方案2】:

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

      来自documentation

      -IsValid
      判断路径的语法是否正确,不管路径的元素是否存在。如果路径语法有效,则此参数返回 TRUE,否则返回 FALSE。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-16
        • 1970-01-01
        • 2018-05-10
        • 1970-01-01
        • 2012-04-26
        • 2018-07-08
        • 1970-01-01
        • 2021-12-23
        相关资源
        最近更新 更多