我正在使用Write-EventLog
来记录一些未找到文件的错误,其中错误文本包含路径。除了自动链接创建似乎被困在90年代之外,它的功能非常好。因此,当您在事件查看器中查看时,任何具有空间的路径都会被破坏。有没有办法强制链接创建与现代路径一起使用?甚至强迫特定事件不自动创建链接?或者我是否需要不包含路径?
FWIW我必须处理PS2.0以及以后。
$eventParameters = @{
logName = 'Application'
source = 'Test'
entryType = 'Error'
eventID = 1
message = "This is broken \\C:\Folder Name"
}
New-EventLog –logName:'Application' –source:'Test'
Write-EventLog @eventParameters
这些也被打破了
message = 'This is broken "\\C:\Folder Name"'
message = 'This is broken \\Server\Folder Name'
但是这个“有效”,因为没有创建链接,所以空间不能破坏它。
message = 'This is not broken C:\Folder Name'
问题就在于事件查看器无法处理UNC路径吗?
答案 0 :(得分:0)
将所有空格替换为%20
使用file:///
作为前缀本地文件路径(如果您只使用file://
,超链接将覆盖整个文本,但事件查看器将无法正确调用它)
"This is working file:///C:\Temp\file%20with%20space.txt"
将UNC路径起点\\
替换为file://
"This also works file://MACHINE\SHARE\file%20with%20space.txt"
您可以使用一行c#
来实现结果new Uri(Path.GetFullPath(local_or_unc_path)).AbsoluteUri
或powershell
(New-Object System.Uri ([System.IO.Path]::GetFullPath($local_or_unc_path))).AbsoluteUri