[英]Power Shell Get-ADUser output in HTML
我是 Power Shell 的新手。 嘗試獲取過去 30 天內在 AD 環境中創建了多少用戶的輸出並將其輸出為 HTML。 以下輸出為我提供了我需要的確切輸出-
$DateCutOff = (Get-Date).AddDays(-30)
$UserCreated30Days = Get-ADUser -Filter * -Property whenCreated | where { $_.whenCreated -gt $DateCutOff } | FT Name, whenCreated -Autosize
但是當我添加ConvertTo-HTML
,輸出不會傳遞到 HTML 輸出。 這是我的代碼-
$header = @"
<style>
h1 {
font-family: Arial, Helvetica, sans-serif;
color: #e68a00;
font-size: 28px;
}
h2 {
font-family: Arial, Helvetica, sans-serif;
color: #000099;
font-size: 16px;
}
table {
font-size: 12px;
border: 0px;
font-family: Arial, Helvetica, sans-serif;
}
td {
padding: 4px;
margin: 0px;
border: 0;
}
th {
background: #395870;
background: linear-gradient(#49708f, #293f50);
color: #fff;
font-size: 11px;
text-transform: uppercase;
padding: 10px 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #f0f0f2;
}
#CreationDate {
font-family: Arial, Helvetica, sans-serif;
color: #ff3300;
font-size: 12px;
}
</style>
"@
$DateCutOff = (Get-Date).AddDays(-30)
$UserCreated30Days += Get-ADUser -Filter * -Property whenCreated | where { $_.whenCreated -gt $DateCutOff } | FT Name, whenCreated -Autosize | ConvertTo-Html -As Table -Property Name,WhenCreated -Fragment -PreContent "<h2>User created in 30 days</h2>"
$Report = ConvertTo-Html -Body "$UserCreated30Days" -Head $header -Title "Active Directory Report" -PostContent "<p id='CreationDate'>Creation Date: $(Get-Date)</p>"
$Report | Out-File .\AD_Report-v5.html
將不勝感激任何幫助。
謝謝!
綜合格斗
我修復了你的代碼。 也許這段代碼可以優化,顯然,但可能是這樣的:
$HTMLHeader = $null
$HTML_Body = $null
$HTMLEnd = $null
$HTMLHeader = @"
<html><head><title>Reporte de recursos en Azure</title>
<style type="text/css">
<!--
h1 {
font-family: Arial, Helvetica, sans-serif;
color: #e68a00;
font-size: 28px;
}
h2 {
font-family: Arial, Helvetica, sans-serif;
color: #000099;
font-size: 16px;
}
table {
font-size: 12px;
border: 0px;
font-family: Arial, Helvetica, sans-serif;
}
td {
padding: 4px;
margin: 0px;
border: 0;
}
th {
background: #395870;
background: linear-gradient(#49708f, #293f50);
color: #fff;
font-size: 11px;
text-transform: uppercase;
padding: 10px 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #f0f0f2;
}
#CreationDate {
font-family: Arial, Helvetica, sans-serif;
color: #ff3300;
font-size: 12px;
}
-->
</style>
</head>
<body>"@
$DateCutOff = (Get-Date).AddDays(-30)
$USR_DB = Get-ADUser -Filter * -Property whenCreated | where { $_.whenCreated -gt $DateCutOff }
$HTML_Body+="<table border=""0"" width=""100%"" cellpadding=""4"" style=""font-size:8pt;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;""><tr bgcolor=""#000099"">"
$HTML_Body+= "<th colspan= ""14"" ><font color=""#FFFFFF"">Users creation report</font></th></tr>"
$HTML_Body+="<tr bgcolor=""#0000FF"">"
$HTML_Body+="<th align=""center""><font color=""#FFFFFF"">Username</font></th>"
$HTML_Body+="<th align=""center""><font color=""#FFFFFF"">WhenCreated</font></th>"
$HTML_Body+="</tr>"
$HTML_Body+="<tr align=""center"" bgcolor=""#dddddd"">"
foreach ($USR in $USR_DB){
$INT_ALT_RW = 0
$HTML_Body+="<tr"
#region linea intercaladas
if ($INT_ALT_RW)
{
$HTML_Body+=" style=""background-color:#dddddd"""
$INT_ALT_RW=0
} else
{
$INT_ALT_RW=1
}
#endregion linea intercaladas
$HTML_Body+=">"
$HTML_Body+="<td align=""center""><font color=""#000000"">$($USR.UserPrincipalName)</font></td>"
$HTML_Body+="<td align=""center""><font color=""#000000"">$($USR.whenCreated)</font></td>"}
$HTML_Body+="</table>"
$HTML_Body+="</div>"
$HTMLEnd = "</body></html>"
$HTMLFile = $HTMLHeader + $HTML_Body + $HTMLEnd
Add-Type -AssemblyName System.Web
[System.Web.HttpUtility]::HtmlDecode($HTMLFile) | Out-File .\temporal.html
我在我的 AD 測試環境中進行測試並且工作正常!
你非常接近。 問題是這一行:
$UserCreated30Days += Get-ADUser -Filter * -Property whenCreated | where { $_.whenCreated -gt $DateCutOff } | FT Name, whenCreated -Autosize | ConvertTo-Html -As Table -Property Name,WhenCreated -Fragment -PreContent "<h2>User created in 30 days</h2>"
更具體地說| FT Name, whenCreated -Autosize
| FT Name, whenCreated -Autosize
部分。 Format-Table
僅用於輸出,絕不能在管道中使用,因為它會破壞所有對象。
將其更改為Select-Object
以便該行看起來像這樣並且工作正常:
$UserCreated30Days += Get-ADUser -Filter * -Property whenCreated | where { $_.whenCreated -gt $DateCutOff } | Select-Object Name, whenCreated | ConvertTo-Html -As Table -Fragment -PreContent "<h2>User created in 30 days</h2>"
我還刪除了 ConvertTo-Html 的-Property
部分,因為它不是必需的,因為我們已經使用Select-Object
縮小了我們想要的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.