2016-05-12 45 views
0

我正在PowerShell中創建一個腳本,該腳本應該查找用戶的UPM文件夾並將其附加到.old(以便於配置文件重建)。Test-Path返回true,但Remove-Item找不到路徑

下面的代碼片段是我的代碼:

# 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

據我所知道的,它應該只去排隊8如果$UPMPath存在,如果沒有的話它應該只是跳到else。我錯過了什麼?

回答

4

如果您放棄標誌「-IsValid」它應該工作。

如果路徑本身是有效(合法)路徑,則IsValid返回true。它不檢查文件/文件夾是否存在。

如果您刪除-IsValid測試路徑檢查並返回true/false,如果路徑存在與否。

瞭解更多關於:https://technet.microsoft.com/en-us/library/hh849776.aspx

3

Test-Path -IsValid檢查路徑規範是否有效,而不是路徑實際存在。刪除參數-IsValid以驗證路徑的存在。

documentation

-IsValid
確定路徑的語法是否正確,而不管是否存在路徑的元件。如果路徑語法有效,則此參數返回TRUE,否則返回FALSE。