gpt4 book ai didi

powershell - 了解Powershell try catch

转载 作者:行者123 更新时间:2023-12-03 00:53:36 24 4
gpt4 key购买 nike

我在理解try,catch语句的用法时遇到问题。

我想将其用作一般的错误检测案例,以便脚本在给定功能中存在任何问题,脚本将输出“Server Offline”

以下代码段在服务器上的WMI对象中查询其HDD列表,并将其格式化为表格。如果没有服务器或WMI,我希望将“脱机服务器”附加到txt输出文件中。

当前,当发生错误时,永远不会调用catch语句。

可以这样尝试捕捉吗?

try {
Get-WmiObject Win32_LogicalDisk -ComputerName $server | ft $server,deviceid,@{Label="Size(GB)";Expression={($_.Size/ 1gb) -as [int]}},@{Label="FreeSpace(Mb)";Expression={($_.FreeSpace/1mb) -as [int]}} -auto | Out-File c:\temp\ServersHDDAudit_OUTPUT-$a-$b.txt -Append

}
catch {
$server + ": Server Offline" | Out-File c:\temp\ServersHDDAudit_OUTPUT-$a-$b.txt -Append
}

塞缪尔

最佳答案

您可以在我的other post here中找到信息,但是在PowerShell中编写CmdLet时,您可以决定引发异常或管理错误。 Get-WmiObject管理错误,以便它写入错误并返回一个值。您可以要求它“静默继续”并抛出您自己的异常。

try
{
$ld = Get-WmiObject Win32_LogicalDisk -ComputerName $server -ErrorAction SilentlyContinue
if ($ld -ne $null)
{
$ld | ft $server,deviceid,@{Label="Size(GB)";Expression={($_.Size/ 1gb) -as [int]}},@{Label="FreeSpace(Mb)";Expression={($_.FreeSpace/1mb) -as [int]}} -auto | Out-File c:\temp\ServersHDDAudit_OUTPUT-$a-$b.txt -Append
}
else
{
throw $Error[0].exception.Message
}
}
catch
{
$server + ": $_" | Out-File c:\temp\ServersHDDAudit_OUTPUT-$a-$b.txt -Append
}

备注:您可以设置 -ErrorAction Stop参数以使 Get-WmiObject引发异常。或者,如果您希望所有Cdmlet在错误时引发Exception,则可以指定 $ErrorActionPreference = "stop"

关于powershell - 了解Powershell try catch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844060/

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