下午!
编辑
经过更多故障排除后,我注意到它似乎不想捕获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
}
答案 0 :(得分:2)
在您的-ErrorAction Stop
语句中添加New-Item
。
Try { New-Item -ItemType Directory -Path Z:\PMO\PMOBits\test -ErrorAction Stop }
Catch {
Get-Logger "ERROR: This file already exists"
}