如何使用powershell使路径成为路径中有空格的超链接

如何使用powershell使路径成为路径中有空格的超链接,powershell,hyperlink,Powershell,Hyperlink,我正在使用我创建的powershell脚本在文件夹中收到文件时向用户发送电子邮件。我遇到的问题是,正在监视的一些文件夹路径在路径中有一个空格,它会破坏发送的电子邮件正文中的超链接。如何包含空间,使其不破坏超链接 我使用此命令获取路径名: $(split-path $Event.SourceEventArgs.FullPath) 要添加到我正在使用的电子邮件正文中的代码如下: $global:newFiles.Add("`n[$(Get-Date -Format HH:mm:ss)]`tNew

我正在使用我创建的powershell脚本在文件夹中收到文件时向用户发送电子邮件。我遇到的问题是,正在监视的一些文件夹路径在路径中有一个空格,它会破坏发送的电子邮件正文中的超链接。如何包含空间,使其不破坏超链接

我使用此命令获取路径名:

$(split-path $Event.SourceEventArgs.FullPath)
要添加到我正在使用的电子邮件正文中的代码如下:

$global:newFiles.Add("`n[$(Get-Date -Format HH:mm:ss)]`tNew file named $($Event.SourceEventArgs.Name) arrived in $(split-path $Event.SourceEventArgs.FullPath) and was copied to $($dPath)\$((Get-Date).ToString('yyyy'))\$((Get-Date).ToString('MMM yyyy'))\$((Get-Date).AddDays(1 + $(1,2 -eq 7 - [int]$formatteddate.dayofweek) ).ToString('MMM d yyyy'))") 
以下是电子邮件的发送方式:

while ($watcher.EnableRaisingEvents -or $global:newFiles.Count -gt 0) {   

#Sleep
Start-Sleep -Seconds 60

if($global:newFiles.Count -gt 0) {
    #Convert list of strings to single string (multiline)
    $smtpbody = $global:newFiles 

    $smtp.Send($smtpFrom, $smtpTo, $smtpSubject, $smtpBody) 

    #Mail sent, Empty array
    $global:newFiles.Clear()
}

}

正如InCorrigible1所提到的,您缺少HTML标记来告诉Outlook这是一个超链接:

$Body = "<a href='\\vavm\FTP\K NW\Incoming'>\\vavm\FTP\K NW\Incoming</a>"
Send-MailMessage -To $MailTo -SmtpServer $MailServer -From $MailFrom -Body $MailBody -BodyAsHtml -Subject $MailSubject
$Body=“”
发送邮件-至$MailTo-SmtpServer$MailServer-From$MailFrom-Body$MailBody-BodyAsHtml-Subject$MailSubject

我可以简单地通过在路径名周围添加一个打开和关闭的V形来修复此问题。

下面是完整的代码行:

$global:newFiles.Add("`n[$(Get-Date -Format HH:mm:ss)]`tNew file named $($Event.SourceEventArgs.Name) arrived in <$(split-path $Event.SourceEventArgs.FullPath)>  and was copied to $($dPath)\$((Get-Date).ToString('yyyy'))\$((Get-Date).ToString('MMM yyyy'))\$((Get-Date).AddDays(1 + $(1,2 -eq 7 - [int]$formatteddate.dayofweek) ).ToString('MMM d yyyy'))")
$global:newFiles.Add(`n[$(获取日期-格式HH:mm:ss)]`t名为$($Event.SourceEventArgs.Name)的新文件到达并被复制到$($dPath)\$((获取日期).ToString('yyyyy'))\$((获取日期).ToString('MMM yyyyy'))\$(获取日期).AddDays(1+$(1,2-eq 7-[int]$formatteddated.dayofweek)).ToString('MMM d yyyyyyy'))

你能举个文件名的例子吗?您的代码没有真正的帮助(而且,它看起来非常复杂,有多个
Get Date
调用)。这就是电子邮件正文的外观:
[11:51:26]名为Test Claim 40791826 072117 Coversheet.pdf的新文件以\\vavm\FTP\K NW\Incoming方式送达,并复制到M:\H\U Audits\Original Bills\2017\Aug 2017\Aug 2017\Aug 31 2017
链接显示为\\vavm\FTP\K而非\\vavm FTP\K NW\Incoming您使用什么方法创建/发送电子邮件<代码>发送邮件消息?问题在于不发送电子邮件,但其链接并不意味着它们没有关联。我没有看到任何HTML标记或任何暗示文本是超链接的内容。正如我前面提到的,Outlook将自动转换带有路径文件名的文本,但如果它有空格,它将在第一个空格处被截断。我还有数百个文件夹正在被监视。我以前尝试过添加href链接,因为它不起作用。