在要在Outlook中查看的HTML中分别对齐列

在要在Outlook中查看的HTML中分别对齐列,html,powershell,outlook,formatting,output,Html,Powershell,Outlook,Formatting,Output,我正在以HTML格式输出powershell对象,但我希望各个列按如下方式对齐 First Column : Left Aligned Second Column : Center Aligned Third Column : Right Aligned 这是我的代码:我希望在Powershell中找到解决方案 $Body = "" $format= "<style>" $format= $format+ "BODY{background-color:LightYellow;}

我正在以HTML格式输出powershell对象,但我希望各个列按如下方式对齐

First  Column : Left Aligned
Second Column : Center Aligned
Third Column  : Right Aligned
这是我的代码:我希望在Powershell中找到解决方案

$Body = ""
$format= "<style>"
$format= $format+ "BODY{background-color:LightYellow;}"
$format= $format+ "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$format= $format+ "TH{border-width: 2px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}"
$format= $format+ "TD{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:palegoldenrod}"
$format= $format+ "</style>"

$body += "<b>USAGE REPORT</b>"
$body += "<br><br>"
$outputf =$arr | select "NAME" , server, "USEDSPACE %"    |Sort-Object -Property "USEDSPACE %" -Descending
$body += $outputf | ConvertTo-Html -head $format
$body += "<BR>"

您使用的
文本对齐:左
是正确的。但是,不能将该样式应用于所有TD元素。您需要将该样式应用于第一列,然后分别将
text align:center
text align:right
应用于第二列和第三列

看这个

然后可以将其与多个第n个子选择器结合使用,以生成所需的输出。旁注,使用here字符串作为格式可以使设置更容易,因此不需要使用字符串连接

$format = @"
<style>
  body {
    background-color: lightyellow;
  }
  table {
    border: 1px solid black;
    border-collapse: collapse;
  }
  th {
    border: 2px solid black;
    padding: 0px;
    background-color: thistle;
  }
  td {
    border: 1px solid black;
    padding: 5px;
    background-color: palegoldenrod
  }
  td:nth-child(1) {
    text-align: left;
  }
  td:nth-child(2) {
    text-align: center;
  }
  td:nth-child(3) {
    text-align: right;
  }
</style>
"@

$arr | select "NAME", server, "USEDSPACE %" | Sort-Object -Property "USEDSPACE %" -Descending | ConvertTo-Html -Head $format -PreContent "<b>USAGE REPORT</b><br><br>" -PostContent "<br>"
$format=@”
身体{
背景颜色:浅黄色;
}
桌子{
边框:1px纯黑;
边界塌陷:塌陷;
}
th{
边框:2件纯黑;
填充:0px;
背景颜色:蓟;
}
运输署{
边框:1px纯黑;
填充物:5px;
背景颜色:淡黄花
}
运输署:第n名儿童(1){
文本对齐:左对齐;
}
运输署:第n名儿童(2){
文本对齐:居中;
}
运输署:第n名儿童(3){
文本对齐:右对齐;
}
"@
$arr |选择“名称”,服务器,“USEDSPACE%”|排序对象-属性“USEDSPACE%”-降序|转换为Html-Head$格式-前内容“使用情况报告”

“-PostContent”

您正确地使用了
文本对齐:左
。但是,不能将该样式应用于所有TD元素。您需要将该样式应用于第一列,然后分别将
text align:center
text align:right
应用于第二列和第三列

看这个

然后可以将其与多个第n个子选择器结合使用,以生成所需的输出。旁注,使用here字符串作为格式可以使设置更容易,因此不需要使用字符串连接

$format = @"
<style>
  body {
    background-color: lightyellow;
  }
  table {
    border: 1px solid black;
    border-collapse: collapse;
  }
  th {
    border: 2px solid black;
    padding: 0px;
    background-color: thistle;
  }
  td {
    border: 1px solid black;
    padding: 5px;
    background-color: palegoldenrod
  }
  td:nth-child(1) {
    text-align: left;
  }
  td:nth-child(2) {
    text-align: center;
  }
  td:nth-child(3) {
    text-align: right;
  }
</style>
"@

$arr | select "NAME", server, "USEDSPACE %" | Sort-Object -Property "USEDSPACE %" -Descending | ConvertTo-Html -Head $format -PreContent "<b>USAGE REPORT</b><br><br>" -PostContent "<br>"
$format=@”
身体{
背景颜色:浅黄色;
}
桌子{
边框:1px纯黑;
边界塌陷:塌陷;
}
th{
边框:2件纯黑;
填充:0px;
背景颜色:蓟;
}
运输署{
边框:1px纯黑;
填充物:5px;
背景颜色:淡黄花
}
运输署:第n名儿童(1){
文本对齐:左对齐;
}
运输署:第n名儿童(2){
文本对齐:居中;
}
运输署:第n名儿童(3){
文本对齐:右对齐;
}
"@
$arr |选择“名称”,服务器,“USEDSPACE%”|排序对象-属性“USEDSPACE%”-降序|转换为Html-Head$格式-前内容“使用情况报告”

“-PostContent”

如果您想在Outlook客户端中查看此邮件,您应该知道这一点。就像Cobster和其他评论所建议的那样,从一般意义上说,子css样式是实现这一点的方法,但对于Outlook来说,这并没有什么好处。它将不会渲染
td:n子级
。此外,将完整的html文档作为电子邮件正文插入也不是一个好的做法。然而,它确实有效。您应该使用
-Fragment
,但是您丢失了
$style
。如果您可以接受这些警告,这将很好(减去Outlook中的对齐方式)。它在现代浏览器中显示得很好

$head = @"
<style>
    body{background-color:LightYellow;}
    table{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
    th{border-width: 2px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}
    td{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:palegoldenrod}
    td:nth-child(1){text-align: left}
    td:nth-child(2){text-align: center}
    td:nth-child(3){text-align: right}
</style>
"@

# Output for -Body must be a single string.
$html = Get-ChildItem c:\temp | Select-Object name,lastwritetime,length | ConvertTo-Html -Head $head | Out-String
Send-MailMessage -From abc@xyz.com -to fgh@cat.com -Subject "USAGE REPORT" -BodyAsHtml $body -SmtpServer $smtpserver
为了节省空间,我大量使用了这里,你们可以在上面阅读。以下是我在Outlook 2010客户端中根据上述代码生成的邮件(当然使用我自己的smtp设置):


你会注意到你的风格并没有完全复制。您应该能够根据需要进行自己的更改

如果要在Outlook客户端中查看此邮件,您应该知道这一点。就像Cobster和其他评论所建议的那样,从一般意义上说,子css样式是实现这一点的方法,但对于Outlook来说,这并没有什么好处。它将不会渲染
td:n子级
。此外,将完整的html文档作为电子邮件正文插入也不是一个好的做法。然而,它确实有效。您应该使用
-Fragment
,但是您丢失了
$style
。如果您可以接受这些警告,这将很好(减去Outlook中的对齐方式)。它在现代浏览器中显示得很好

$head = @"
<style>
    body{background-color:LightYellow;}
    table{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
    th{border-width: 2px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}
    td{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:palegoldenrod}
    td:nth-child(1){text-align: left}
    td:nth-child(2){text-align: center}
    td:nth-child(3){text-align: right}
</style>
"@

# Output for -Body must be a single string.
$html = Get-ChildItem c:\temp | Select-Object name,lastwritetime,length | ConvertTo-Html -Head $head | Out-String
Send-MailMessage -From abc@xyz.com -to fgh@cat.com -Subject "USAGE REPORT" -BodyAsHtml $body -SmtpServer $smtpserver
为了节省空间,我大量使用了这里,你们可以在上面阅读。以下是我在Outlook 2010客户端中根据上述代码生成的邮件(当然使用我自己的smtp设置):


你会注意到你的风格并没有完全复制。您应该能够根据需要进行自己的更改

想必。但是,此处编写的脚本将生成一个无效文档<默认情况下,code>coverttohtml返回整个Html文档,包括标题。您不应该用HTML标记包装HTML文档。您的浏览器可能会渲染它,但它肯定不正确。我建议使用
converttohtml-Fragment
@BaconBits您认为它应该是这样的吗?“TD:n子(1){text align:left;边框宽度:1px;padding:5px;边框样式:纯色;边框颜色:黑色;背景颜色:淡黄色}”我希望它是:
$format=$format+“TD{border width:1px;padding:5px;边框样式:纯色;边框颜色:黑色;背景颜色:淡黄色}”$format=$format+“TD:first child{text align:left;}”$format=$format+“TD:n子(2){text align:center;}”$format=$format+“TD:n子(3){text align:right;}”。然而,我使用CSS已经有10年了。@BaconBits似乎不起作用,只对齐最后一个文本并应用于所有列,而不是所有浏览器和应用程序都呈现第n个子样式。你在看什么内容?例如,Outlook的版本不会呈现这种情况。最新的chrome应该。大概。但是,此处编写的脚本将生成一个无效文档<默认情况下,code>coverttohtml
返回整个Html文档,包括标题。你不应该是b