例如,当我的PowerShell脚本尝试为不存在的服务器(在我的情况下为“bla”)创建SQL Server对象时,PowerShell会以红色显示很多PowerShell错误。Powershell:如何阻止在脚本中显示错误?
由于我的脚本在调用后检查$?
的值,并显示并记录错误,所以我宁愿不显示几行PowerShell错误。
如何取消激活为脚本显示的内容?
例如,当我的PowerShell脚本尝试为不存在的服务器(在我的情况下为“bla”)创建SQL Server对象时,PowerShell会以红色显示很多PowerShell错误。Powershell:如何阻止在脚本中显示错误?
由于我的脚本在调用后检查$?
的值,并显示并记录错误,所以我宁愿不显示几行PowerShell错误。
如何取消激活为脚本显示的内容?
您有几个选项。最简单的方法是使用ErrorAction
设置。
-Erroraction
是所有cmdlet的通用参数。如果有特殊命令要忽略,则可以使用-erroraction 'silentlycontinue'
,它基本上忽略该命令生成的所有错误消息。您也可以使用(在PowerShell中3+)的Ignore
值:
不像SilentlyContinue,因此忽略不添加错误信息到$ Error自动变量。
如果你想忽略在脚本中的所有错误,您可以使用系统变量$ErrorAction
和做同样的事情:$ErrorActionPreference= 'silentlycontinue'
更多信息,请参见about_CommonParameters。
的Windows PowerShell提供报告错误两种机制:一个机制终止错误和其他机制非终止错误。
发生错误时,内部CmdLets代码可以调用ThrowTerminatingError
方法,该方法不会或不应该允许cmdlet继续处理其输入对象。脚本编写者可以使用异常来捕获这些错误。
EX:
try
{
Your database code
}
catch
{
Error reporting/logging
}
内部小命令代码可以调用一个WriteError
方法来报告非终止错误时,小命令可以继续处理输入对象。然后脚本编写者可以使用-ErrorAction选项来隐藏这些消息,或使用$ErrorActionPreference
来设置整个脚本行为。
我尝试使用[system.net.dns]
解析主机名时遇到了类似的问题。如果IP没有解析.Net会抛出一个终止错误。 为了防止终止错误并仍然保留对输出的控制,我使用TRAP
创建了一个函数。
E.G.
Function Get-IP
{PARAM ([string]$HostName="")
PROCESS {TRAP
{"" ;continue}
[system.net.dns]::gethostaddresses($HostName)
}
}
如果你想为抑制cmdlet的PowerShell的errormessage的,但还是要抓住错误,请使用“-ErrorAction‘silentlyStop’”
没有这样的行动。尽管有停止操作。 –
设置系统变量的伎俩。 –