2016-10-04 110 views
0

哇。我今天必須在這些愚蠢的藥丸上。我在腳本中使用了一個簡單的測試路徑,當時,我無法弄清楚它爲什麼不進入IF模塊。我跑在ISE命令窗口相同的代碼,它工作正常:Powershell測試路徑不工作?

$allfile="c:\users\rs02130\desktop\sonarRules\jsrulesall.xlsx" 
Write-Output "Testing $allfile" 
if (Test-Path $allfile) 
{ 
    Write-Output "In If" 
    try 
    { 
     Write-Output "Removing $allfile" 
     Remove-Item $allfile -Force -ErrorAction Stop 
     Write-Output "Removed $allfile" 
    } 
    catch 
    { 
     Write-Error "Error removing $allfile" 
     exit 1 
    } 
} 

顯然我失去了一些基本的東西,但我不明白這一點。完整的原始腳本在另一個區域具有相似的代碼,並且工作正常。

+0

仔細檢查文件名,特別是因爲你指出類似的代碼工作正常。 – rrirower

+1

Get-Item $ allfile'產生什麼結果? –

+0

如果我在腳本中運行Get-Item $ allfile,它會出現「Get-Item:Can not find path'C:\ Users \ RS02130 \ Desktop \ SonarRules \ jsrulesall.xlsx」錯誤,因爲它不存在。如果我在腳本之外運行,它運行良好。該文件絕對存在。我做了一個從Windows資源管理器複製爲路徑,並將路徑直接粘貼到腳本中... –

回答

0

想通了。一個壞文件通配符的組合進一步說明了在進一步下去之前刪除了該文件,以及Get-ChildItem和Write-Host的異步性質,這使得我認爲該文件在那時不存在。