2013-02-15 68 views
0

我是來自.Net世界的PowerShell的新手。我嘗試寫一些if語句,如打擊在PowerShell中If條件下使用對象屬性

#1

if (((Get-Item $pf).Exist)) 
{ 
    $password = [xml](Get-Content $pf) 
} 

#2

if (((Get-Item $pf) | Select-Object Exist)) 
{ 
    $password = [xml](Get-Content $pf) 
} 

#3

$result=(Get-Item $pf).Exist 
if($result) 
{ 
    $password = [xml](Get-Content $pf) 
} 

問題: 兩個#2#預期3將工作,但是,我也期待#1爲在.net中工作,但它似乎總是爲false,所以從來聲明得到執行。我有點困惑在這裏,有人可以解釋爲什麼#1不工作,因爲我期望?

回答

4

他們都是錯的。它是Exists,不存在。

此外,我認爲你失望了,當你測試你的代碼時,該文件不存在。

我想你正在尋找的是

Test-Path $pf 
+0

因爲他想獲得該項目的內容,你也可以驗證它是一個文件。這與包含'-PathType Leaf'一樣簡單。 – 2013-02-15 12:46:45

+0

對不起,這是我的拼寫錯誤,我的意思是實際存在,我在控制檯中使用了自動完成功能,但只是在自己的文章中輸入了它,所以最後我錯過了這些。 我實際上最終使用測試路徑來完成我的工作。然而,這只是我希望更好地理解爲什麼#1不能按預期工作,很明顯,我在.Net世界中出現了一些錯誤的假設。 – 2013-02-16 00:59:20

+0

@JackyYuan當你打字的時候,你犯了更多的錯誤,我無法分辨那些是什麼。 「*#2和#3都能按預期工作,但是,我也期待#1在.Net中工作,但似乎總是評估爲false *」。當您將Exist更改爲Exists時,並非如此。簡而言之,我無法重現您的結果。當你得到錯誤的關鍵部分時,很難得到一個問題的答案。我建議在發佈之前花更多的時間來完成正確的問題。 – 2013-02-16 06:09:41