gpt4 book ai didi

powershell - 如何捕获异常,以便异常消息不会打印在控制台上?

转载 作者:行者123 更新时间:2023-12-03 01:02:50 24 4
gpt4 key购买 nike

我有以下cmdlet

function Service-Stop
{
[cmdletbinding()]
param(
[Parameter(Mandatory=$true)][ValidateScript({$_ -match [IPAddress]$_ })][string]$Address,
[Parameter(Mandatory=$true)][string]$Name,
[Parameter(Mandatory=$true)][System.Management.Automation.PSCredential]$Credential
)

try
{
$wmi = Get-WmiObject -ComputerName $Address -Credential $Credential -Class Win32_Service -Filter "Name='$Name'"
if($wmi)
{
$wmi.stopservice()
}
}
catch
{
Write-Output "ErrorDetails: $_"
}
}

我的理解是,每当通过调用 Get-WmiObject引发异常时,我的catch块都将执行,然后可以将输出通过管道传输到日志文件。问题是,当我从脚本中调用此cmdlet时,控制台上会显示异常消息。

我不要我希望将异常详细信息输出到catch块中。

你能告诉我怎么做吗?

最佳答案

我相信问题在于Cmdlet Get-WmiObject不会引发异常,而只是将其错误写入错误流并继续。即,脚本的错误操作行为被设置为“继续”。您可以通过传递给ErrorActionGet-WmiObject参数进行控制:

$wmi = Get-WmiObject -ComputerName $Address -Credential $Credential -Class Win32_Service -Filter "Name='$Name'" -ErrorAction Stop
ErrorAction值的stop表示您希望错误终止(通过引发异常)。

关于powershell - 如何捕获异常,以便异常消息不会打印在控制台上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53544698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com