powershell - 使用 ConvertTo-HTML 将 URL 列表转换为可点击的 HTML 链接

标签 powershell

我有下面的函数可以创建一个 HTML 表,但是我希望我的表中的值指向超链接。

Function MyFunction{

clear-host
$item=$null
$hash = $null #hashTable

$hash =@{"Google.com" = "www.google.com"; "Yahoo" = "www.yahoo.com";"My Directory" ="C:\Users\Public\Favorites" ;"MSN" = "www.msn.com"}

ForEach($item in @($hash.KEYS.GetEnumerator())){
$hash | Sort-Object -Property name
}

$hash.GetEnumerator() | sort -Property Name |Select-Object Name, Value | ConvertTo-HTML | Out-File .\Test.html

}

MyFunction

最佳答案

在我们开始之前的小注意事项:ForEach似乎毫无意义,因为它只是为表格中的每个元素输出排序后的表格。所以它被删除了。
ConvertTo-HTML就其本身而言,非常适合使用 PowerShell 对象制作表格,但我们需要的是超链接。 ConvertTo-HTML确实支持计算属性,因此起初制作格式化的超链接似乎很容易。

ConvertTo-HTML -Property *,@{Label="Link";Expression={"<a href='$($_.Value)'>$($_.Name)</a>"}}

与此有关的小问题是 ConvertTo-Html对发送给它的字符串进行一些转换,这混淆了我们的意图。查看创建的输出文件,我们看到 Yahoo 链接的以下内容:
<td>&lt;a href=&#39;www.yahoo.com&#39;&gt;Yahoo&lt;/a&gt;</td>
ConvertTo-Html使我们的文本浏览器友好,这通常很好,但现在阻碍了我们。阅读来自 PowerShell Magazine 的博客通过在将 html 发送到文件之前对其进行解码来解决此问题。
Function MyFunction{
    clear-host
    $hash = @{"Google.com" = "www.google.com"; "Yahoo" = "www.yahoo.com";"My Directory" ="C:\Users\Public\Favorites" ;"MSN" = "www.msn.com"}
    $hash.GetEnumerator() | sort -Property Name | Select-Object Name, Value | 
        ConvertTo-HTML -Property *,@{Label="Link";Expression={"<a href='$($_.Value)'>$($_.Name)</a>"}}
}

$html = MyFunction 

Add-Type -AssemblyName System.Web
[System.Web.HttpUtility]::HtmlDecode($html) | Out-File C:\temp\test.html

使用 [System.Web.HttpUtility]::HtmlDecode转换类似 &lt; 的值回到我们希望他们成为的样子。看看输出

Output

去看看之前是否有人问过这个问题,并且有类似的答案:How to generate hyperlinks to .htm files in a directory in Powershell? .它以不同的方式处理,所以我不知道将其标记为重复。

关于powershell - 使用 ConvertTo-HTML 将 URL 列表转换为可点击的 HTML 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27652761/

相关文章:

windows - 如何测试Windows Server是否完全更新? (尝试创建更新/重启循环脚本)

PowerShell区分大小写的字母字符顺序?

powershell - 如何从 Invoke-Sqlcmd 诊断此异常?

powershell - ""您的构建管道引用了 undefined variable ": it' 只是一个 powershell 变量

Powershell远程访问docker上的nanoserver

powershell - 使用Powershell更新CSV记录中的Active Directory DN

powershell - 使用 PowerShell 执行从 HTTP 服务器下载的二进制文件失败,并显示 "The file or directory is corrupted and unreadable"

c# - 无法调用此函数,因为当前主机未实现它 c#

powershell - 从 powershell 执行时,WSL 无法识别 "uname -s"之类的命令

Powershell 菜单选择(如 GRUB、curses 等)