【发布时间】:2021-10-11 08:58:46
【问题描述】:
我有以下代码:
function main {
#get all content
[XML]$xml = Get-Content $XMLfile
$finalObject = $xml.bom.components.component | ForEach-Object {
$lic = $_.licenses.license.id
$url = $_.licenses.license.url
$web = ($_.externalReferences.reference | Where-Object { $_.type -eq 'website' }).url
[PSCustomObject]@{
'Name' = if ($web) { '[{0}]({1})' -f $_.Name, $web } elseif ($url) { '[{0}]({1})' -f $_.Name, $url } elseif (!$url) { $_.Name } else {'Unknown'}
'Version' = $_.version
'License' = if ([string]::IsNullOrWhiteSpace($lic)) { 'Unknown' } else { $lic }
}
}
# convert to markdown
$finalObject | ConvertTo-MarkDownTable | Out-File -FilePath $saveMdFile
}
现在我想用 powershell 进行错误处理。例如,如果 XML 不存在或无法保存,我希望有错误日志。然后应将日志单独保存在文件中。我将它们定义如下:
function main {
#get all content
[XML]$xml = Get-Content $XMLfile
Write-Log -Message "No file was found: $($xmlfile)" -Level Info -Path $logpath
$finalObject = $xml.bom.components.component | ForEach-Object {
$lic = $_.licenses.license.id
$url = $_.licenses.license.url
$web = ($_.externalReferences.reference | Where-Object { $_.type -eq 'website' }).url
[PSCustomObject]@{
'Name' = if ($web) { '[{0}]({1})' -f $_.Name, $web } elseif ($url) { '[{0}]({1})' -f $_.Name, $url } elseif (!$url) { $_.Name } else {'Unknown'}
'Version' = $_.version
'License' = if ([string]::IsNullOrWhiteSpace($lic)) { 'Unknown' } else { $lic }
}
}
# convert to markdown
$finalObject | ConvertTo-MarkDownTable | Out-File -FilePath $saveMdFile
Write-Log -Message "No path was found: $($xmlfile)" -Level Info -Path $logpath
}
到目前为止,我的日志不起作用,并且在发生错误时也不会保存文件。有谁知道我该如何解决这个问题?
【问题讨论】:
标签: powershell logging error-handling save script