This question already has an answer here:
How to handle failed variable assignments in powershell? [duplicate]
(1个答案)
在11个月前关闭。
下午!
编辑
经过更多的故障排除后,我注意到它似乎不想从
我的PowerShell脚本中有一个日志记录功能,并且正在尝试使用此功能合并一些错误处理。下面是日志记录功能。
我正在使用一些简单的代码进行错误处理测试,请参阅下面的测试代码。
当我运行脚本时,我在终端上看到该错误已经存在,但并没有像
我也尝试不使用下面的函数来捕获错误:
(1个答案)
在11个月前关闭。
下午!
编辑
经过更多的故障排除后,我注意到它似乎不想从
New-Item -ItemType Directory -Path Z:\PMO\PMOBits\test
部分捕获错误。如果输入Null值,它将在Get-Logger
函数和Write-output
中捕获该错误。为什么不捕获文件夹已存在错误?我的PowerShell脚本中有一个日志记录功能,并且正在尝试使用此功能合并一些错误处理。下面是日志记录功能。
Function Get-Logger {
param(
[Parameter(Mandatory=$true)]
[String]$message,
[Parameter(Mandatory=$false)]
[validatescript({[enum]::getvalues([system.consolecolor]) -contains $_})][string]$Color
)
$TimeStamp = Get-Date -Format "MM-dd-yyy hh:mm:ss"
Write-Host $TimeStamp -NoNewline
IF ($Color) {
Write-Host `t $message -ForegroundColor $($color)
} Else {
Write-Host `t $message -ForegroundColor Cyan
}
$logMessage = "[$TimeStamp] $message"
$logMessage | Out-File -Append -LiteralPath $VerboseLogFile
}
我正在使用一些简单的代码进行错误处理测试,请参阅下面的测试代码。
Try { New-Item -ItemType Directory -Path Z:\PMO\PMOBits\test }
Catch {
Get-Logger "ERROR: This file already exists"
}
当我运行脚本时,我在终端上看到该错误已经存在,但并没有像
catch
部分那样显示在我的日志文件中。我也尝试不使用下面的函数来捕获错误:
try{...}
catch {
Write-Output $_ | Out-File -Append -LiteralPath $VerboseLogFile
}
最佳答案
使用-ErrorAction Stop
语句添加New-Item
。
Try { New-Item -ItemType Directory -Path Z:\PMO\PMOBits\test -ErrorAction Stop }
Catch {
Get-Logger "ERROR: This file already exists"
}
关于function - Try/Catch语句似乎不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60642232/
10-12 18:28