检查项目是否存在而不存在错误(如果该项目不存在)

时间:2010-12-06 00:42:12

标签: powershell

我想使用PowerShell检查是否存在IIS Web应用程序(或者可能是其他类型的项目)。我可以使用Get-Item执行此操作,但如果项目不存在则会报告错误,这会误导运行脚本的用户 - 实际上一切正常时看起来出了问题。

如何在没有错误的情况下执行此操作?

2 个答案:

答案 0 :(得分:58)

cmdlet Test-Path是专门为此设计的,它确定路径的项是否存在。它返回一个布尔值,不会产生错误。

也可以使用cmdlet Get-Item(和类似的),但不能直接使用。已经提出了一种方法:使用-ErrorAction SilentlyContinue。重要的是要知道它实际上仍会产生错误;它只是没有显示出来。在命令之后检查错误集合$Error,错误就在那里。


仅供参考

有一种有趣的方法可以避免此错误(它也适用于Get-Process之类的其他cmdlet,它们没有Test-Path替代方案。假设我们要检查项目“MyApp.exe”(或进程“MyProcess”)的存在。然后这些命令在丢失的目标上没有返回任何内容,同时它们不会产生错误:

Get-Item "[M]yApp.exe"
Get-Process "[M]yProcess"

这些cmdlet不会为通配符目标生成错误。我们使用这些有趣的通配符实际匹配单个项目。

答案 1 :(得分:29)

使用命令... get-item blah -ErrorAction SilentlyContinue

alt text