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