У меня есть множество сценариев, использующих API OutputDebugString
Windows для вывода значимой информации о состоянии, так что, когда они работают в Production, я могу открыть средство просмотра отладки SysInternals и посмотреть, что все происходит.
Когда выйдет PowerShell Core 7, я бы хотел переместить свои сценарии, чтобы воспользоваться новыми функциями. Я ожидал, что этот код Windows -specifi c будет работать, пока я запускаю Pw sh .exe на Windows, но я ошибался.
Write-Debug не помогает вообще.
Существует ли кроссплатформенный поддерживаемый способ вывода сообщений, которые на Windows могут быть прочитаны Debug Viewer?
FWIW, вот код, который я использовал в течение очень долгого времени:
$VB = @"
'http://www.pinvoke.net/default.asp
Public Class WinAPI
<System.Runtime.InteropServices.DllImport("kernel32.dll")> _
Public Shared Sub OutputDebugString(ByVal lpOutputString As String)
End Sub
End Class
"@
Add-Type $VB -Language Visualbasic
function Write-DebugMessage([string]$Message)
{
$Msg = "[$Script:ScriptHelperAppName] $Message"
[WinAPI]::OutputDebugString($Msg)
Write-Verbose $Msg
}