2017-06-21 48 views
0

不工作我有一個測試,如果文件的腳本塊中存在以下PowerShell代碼:PowerShell中測試的路徑在腳本塊

$scriptblock = 
{ 
    Param($filename) 

    return "Scriptblock filename $filename Exists? -> $(Test-Path $filename)" 
} 

$myFilename = "MyFile.xml" 
Write-Host "Main filename $myFilename Exists? -> $(Test-Path $myFilename)" 

$job = Start-Job -Name "myJob" -ScriptBlock $scriptBlock -ArgumentList $myFilename 
$result = Receive-Job -Name "myJob" 
Write-Host $result 

當我運行它,我得到以下輸出指示文件存在於主執行但不在腳本塊中。

Main filename MyFile.xml Exists? -> True 
Scriptblock filename MyFile.xml Exists? -> False 

有人可以指出需要什麼來測試腳本塊中的文件存在嗎?

謝謝!

+1

您需要測試當前位置('$ pwd')。 – PetSerAl

+1

這對PowerShell 5適合我。但您需要包含帶有文件名的路徑。 –

+2

如果您在腳本中檢查$ pwd並且還檢查腳本塊,則會發現它們返回不同的路徑。 –

回答

3

作爲一種最佳實踐,您應該包括要測試的文件的完整路徑,而不是依賴當前目錄(如果在不同的用戶環境下運行腳本,則可能會有所不同)。

$scriptblock = { 
    param($filename) 

    "Scriptblock filename $filename Exists? -> $(Test-Path $filename)" 
} 

$myFilename = "C:\Temp\MyFile.xml" 
"Main filename $myFilename Exists? -> $(Test-Path $myFilename)" 

Start-Job -Name "myJob" -ScriptBlock $scriptBlock -ArgumentList $myFilename 
Receive-Job -Name "myJob" 
+0

謝謝!那就是訣竅! – Dili

相關問題