Size: a a a

2021 October 10

Z

Zubastic in Powershell Rus
Кстати вопрос: как в поше нормально залогировать ошибку?
источник

KN

Kirill Nikolaev in Powershell Rus
Я там даже писал по проблеме дебага через логи в проде на удалённых машинах: https://exchange12rocks.org/2018/11/20/how-do-you-debug-your-powershell-code/
источник

AF

Alexey D. Filimonov ... in Powershell Rus
Start-transcript
источник

VG

Vasily Gusev in Powershell Rus
зависит от того что ты понимаешь под нормально
источник

Z

Zubastic in Powershell Rus
Ща покажу)))
источник

KN

Kirill Nikolaev in Powershell Rus
$ErrorActionPreference = 'Stop'
try {
...
}
catch {
$ErrorMessage = $_
$StringBuilder = New-Object -TypeName 'System.Text.StringBuilder'
       [void]$StringBuilder.AppendLine('Exception.Message: {0}' -f $ErrorRecord.Exception.Message)
       [void]$StringBuilder.AppendLine('InvocationInfo.PositionMessage: {0}' -f $ErrorRecord.InvocationInfo.PositionMessage)
       [void]$StringBuilder.AppendLine('ScriptStackTrace: {0}' -f $ErrorRecord.ScriptStackTrace)
       [void]$StringBuilder.AppendLine('Exception.ScriptStackTrace: {0}' -f $ErrorRecord.Exception.ScriptStackTrace)
       [void]$StringBuilder.AppendLine('TargetObject: {0}' -f $ErrorRecord.TargetObject)
       [void]$StringBuilder.AppendLine('FullyQualifiedErrorId: {0}' -f $ErrorRecord.FullyQualifiedErrorId)
       [void]$StringBuilder.AppendLine('CategoryInfo.Category: {0}' -f $ErrorRecord.CategoryInfo.Category)
       [void]$StringBuilder.AppendLine('CategoryInfo.Activity: {0}' -f $ErrorRecord.CategoryInfo.Activity)
       [void]$StringBuilder.AppendLine('CategoryInfo.Reason: {0}' -f $ErrorRecord.CategoryInfo.Reason)
       [void]$StringBuilder.AppendLine('CategoryInfo.TargetName: {0}' -f $ErrorRecord.CategoryInfo.TargetName)
       [void]$StringBuilder.AppendLine('CategoryInfo.TargetType: {0}' -f $ErrorRecord.CategoryInfo.TargetType)
       $ErrorMessage = $StringBuilder.ToString()
Add-Content -Path ... -Value $ErrorMessage
}
источник

VG

Vasily Gusev in Powershell Rus
слабовато... ;)
источник

KN

Kirill Nikolaev in Powershell Rus
😆
источник

VG

Vasily Gusev in Powershell Rus
вообще ты просто сохраняешь поля error'а. Кмк эффективнее просто сразу export-clixml сделать, ну или жсон, на вкус. А именно в лог достататочно текста ошибки и указания на позицию в коде. Ну и указания на дополнительный референс если он есть/нужен
источник

Z

Zubastic in Powershell Rus
catch [system.exception]
     {
       $message = $_.Exception.Message
       (Get-Host).UI.WriteErrorLine("Failed to load $path Message $message")
       return "";
     }
источник

Z

Zubastic in Powershell Rus
ни стека, ни норм ошибки)
источник

Z

Zubastic in Powershell Rus
ну я понял, нужны свои костыли для обработки ошибок :))))
источник

VG

Vasily Gusev in Powershell Rus
вот так не стоит, у хоста может не быть таких прелестей =) Лучше в текстовый или эвентлог.
источник

KN

Kirill Nikolaev in Powershell Rus
Да, Export-CliXml тоже делаю - в том проекте есть настройка, куда выгружать ошибки. Сначала прост не было её
Ну и там есть нюанс, что это отдаётся в систему мониторинга, и так проще
источник

VG

Vasily Gusev in Powershell Rus
ну можно и так сказать, но тут скорее зависит от задачи. Все средства в пошике есть, а вот дальше уже всё зависит.
источник

KN

Kirill Nikolaev in Powershell Rus
А зачем здесь фильтр по [system.exception]?
источник

VG

Vasily Gusev in Powershell Rus
иногда например единственное логирование которое нужно - эвентлог, иногда - текстовый файл, иногда в пром/эластик, иногда надо сохранять всю возможную информацию о системе и окружении в случае ошибки (полезно когда ошибка крайне редкая, не воспроизводится, а система жутко огороженная и отлаживать сложно)
источник

Z

Zubastic in Powershell Rus
загрузка XDocument тк xml может быть невалидным
источник

KN

Kirill Nikolaev in Powershell Rus
А вот кто что думает про такое понятие, как "подписывать модули"?
Это вообще возможно? Как это правильно делать: достаточно ли подписать только psm1 или надо подписывать и другие файлы тоже?
Вы сами пользуетесь?
источник

Z

Zubastic in Powershell Rus
все чудесатее
источник