簡體   English   中英

HTML 格式的 Power Shell Get-ADUser 輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM