包含空格

时间:2016-10-07 14:24:49

标签: powershell

我正在使用Write-EventLog来记录一些未找到文件的错误,其中错误文本包含路径。除了自动链接创建似乎被困在90年代之外,它的功能非常好。因此,当您在事件查看器中查看时,任何具有空间的路径都会被破坏。有没有办法强制链接创建与现代路径一起使用?甚至强迫特定事件不自动创建链接?或者我是否需要不包含路径? FWIW我必须处理PS2.0以及以后。

编辑:这是我刚验证的一个小代码存根在Windows 7 / 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路径吗?

1 个答案:

答案 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