2010-12-06 48 views
24

我想使用PowerShell检查IIS Web应用程序是否存在(或潜在的某种其他类型的项目)。我可以使用Get-Item来做到这一点,但是如果该项不存在,那么会报告错误,这对运行脚本的用户会产生误导 - 当实际情况一切正常时,它看起来像是出错了。检查一个项目是否存在,如果它不存在错误

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

回答

26

命令get-item blah -ErrorAction SilentlyContinue

alt text

+6

`-ErrorAction SilentlyContinue`可以缩写为`-ea si`,`dir app_offline.htm -ea si | del` – yzorg 2012-06-14 19:43:50

+4

为了便于阅读,我不会在脚本中缩写(每个问题)。 – Vimes 2013-12-21 04:05:15

50

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

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


只是为了信息

有一种有趣的方式来避免这个错误(它也可以与一些其他cmdlet像Get-Process没有一个Test-Path替代)。假设我们即将检查项目“MyApp.exe”(或进程“MyProcess”)的存在。然后,这些命令上缺少目标返回任何结果,并在同一时间,他们不产生错误:

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

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

相关问题