У меня есть множество скриптов, которые используют OutputDebugString
Windows API для вывода значимой информации о состоянии, так что, когда они работают в производственной среде, я могу открыть средство просмотра отладки SysInternals и посмотреть, что все происходит.
Когда выйдет PowerShell Core 7, я бы хотел переместить свои скрипты, чтобы воспользоваться новыми функциями. Я ожидал, что этот специфичный для Windows код будет работать, пока я запускаю Pwsh.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
}