在PowerShell的If条件中使用带点的对象属性

在PowerShell的If条件中使用带点的对象属性,powershell,Powershell,我是.Net世界的PowerShell新手。我想写一些if语句,比如blow #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($resul

我是.Net世界的PowerShell新手。我想写一些if语句,比如blow

#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一样工作,但它的计算结果似乎总是错误的,因此该语句永远不会执行。我在这里有点困惑,有人能解释一下为什么#1没有像我期望的那样工作吗?

他们都错了。它是不存在的

我还认为,当您在文件不存在的情况下测试代码时,您会感到失望

我想你要找的是

Test-Path $pf

他们都错了。它是不存在的

我还认为,当您在文件不存在的情况下测试代码时,您会感到失望

我想你要找的是

Test-Path $pf

由于他希望获取项目的内容,您还可以验证它是否为文件。很简单,包括
-PathType Leaf
。对不起,这是我的打字错误,我的意思是实际上存在,我在控制台中使用了autocomplete,但我只是在帖子中自己键入了这个,所以我错过了结尾的s。实际上,我最终使用测试路径来完成我的工作。然而,我只是想更好地理解为什么#1不能像预期的那样工作,因为很明显,我在.Net world中有一些错误的假设。@JackyYuan你打字时犯了更多的错误,我无法判断这些错误是什么。“2和3都会像预期的那样工作,但是,我也希望1能像.Net一样工作,但它的评估结果似乎总是错误的”。当您将Exist更改为Exists时,给出的示例并非如此。简单地说,我无法复制你的结果。如果你把问题的关键部分搞错了,要回答一个问题真的很难。我建议在发布问题之前,花更多的时间把问题弄清楚。因为他想得到项目的内容,你也可以验证它是一个文件。很简单,包括
-PathType Leaf
。对不起,这是我的打字错误,我的意思是实际上存在,我在控制台中使用了autocomplete,但我只是在帖子中自己键入了这个,所以我错过了结尾的s。实际上,我最终使用测试路径来完成我的工作。然而,我只是想更好地理解为什么#1不能像预期的那样工作,因为很明显,我在.Net world中有一些错误的假设。@JackyYuan你打字时犯了更多的错误,我无法判断这些错误是什么。“2和3都会像预期的那样工作,但是,我也希望1能像.Net一样工作,但它的评估结果似乎总是错误的”。当您将Exist更改为Exists时,给出的示例并非如此。简单地说,我无法复制你的结果。如果你把问题的关键部分搞错了,要回答一个问题真的很难。我建议在发布问题之前,花更多的时间把问题弄清楚。