В сценарии после развертывания, используемом в конвейере непрерывной интеграции (DevOps Azure), я удаляю старые файлы.
По сути, это сценарий PowerShell, который удаляет все папки выпуска, кроме текущей в папке.каталог развертывания.
Иногда по какой-то причине происходит сбой Remove-Item (например, старый файл все еще открывается кем-то на машине деплиомента)
Это не имеет большого значения.Я не хочу, чтобы из-за этого произошла ошибка всего развертывания.Однако мне нужно предупреждение, поэтому я знаю, что это произошло.
Например (MCVE):
Remove-Item INEXISTENT_FILE
Проблема : это вызывает ошибку.
Попытка 1:
Remove-Item INEXISTENT_FILE -ErrorAction SilentlyContinue
Проблема : Это полностью устраняет ошибку, это не то, что я хочу (я хочу предупреждение)
Попытка 2: я пытался использовать ErrorVariable, как рекомендовано здесь: https://devblogs.microsoft.com/powershell/erroraction-and-errorvariable/
Remove-Item INEXISTENT_FILE -ErrorAction SilentlyContinue -ErrorVariable $removeItemError
if ($removeItemError) {
Write-Warning "Warning, something failed!"
}
Проблема : не работает, не отображается if
часть.Если я удаляю действие ошибки SilentlyContinue, оно просто выдает ошибку и ни в коем случае не переходит в часть if
.
Попытка 3: я пытался использовать также блок Try Catch, как было предложеноздесь: PowerShell -ErrorAction SilentlyContinue Не работает с Get-ADUser
Try {
Remove-Item INEXISTENT_FILE
}
Catch {
Write-Warning "Warning, something failed!"
}
Проблема : он также никогда не входит в блок catch (!?)
У кого-нибудь есть другой вариант, чтобы вместо предупреждения выводить предупреждение вместо ошибки?