Powershell Power Shell以HTML格式获取ADUser输出

Powershell Power Shell以HTML格式获取ADUser输出,powershell,Powershell,我对Power Shell不熟悉。尝试获取过去30天在广告环境中创建了多少用户的输出,并将其输出为HTML。下面的输出为我提供了所需的确切输出- $DateCutOff = (Get-Date).AddDays(-30) $UserCreated30Days = Get-ADUser -Filter * -Property whenCreated | where { $_.whenCreated -gt $DateCutOff } | FT Name, whenCreated -Autosize

我对Power Shell不熟悉。尝试获取过去30天在广告环境中创建了多少用户的输出,并将其输出为HTML。下面的输出为我提供了所需的确切输出-

$DateCutOff = (Get-Date).AddDays(-30)
$UserCreated30Days = Get-ADUser -Filter * -Property whenCreated | where { $_.whenCreated -gt $DateCutOff } | FT Name, whenCreated -Autosize 
但是当我将
转换添加到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
$header=@”
h1{
字体系列:Arial、Helvetica、无衬线字体;
颜色:#e68a00;
字号:28px;
}
氢{
字体系列:Arial、Helvetica、无衬线字体;
颜色:#000099;
字体大小:16px;
}  
桌子{
字体大小:12px;
边界:0px;
字体系列:Arial、Helvetica、无衬线字体;
} 
运输署{
填充:4px;
边际:0px;
边界:0;
}
th{
背景:395870;
背景:线性梯度(#49708f,#293f50);
颜色:#fff;
字体大小:11px;
文本转换:大写;
填充:10px 15px;
垂直对齐:中间对齐;
}
t车身tr:n个孩子(偶数){
背景:#f0f0f2;
}
#肌酐{
字体系列:Arial、Helvetica、无衬线字体;
颜色:#ff3300;
字体大小:12px;
}
"@
$DateCutOff=(获取日期).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“用户在30天内创建”
$Report=ConvertTo Html-Body“$usercreated30天”-Head$header-Title“Active Directory报告”-PostContent“

创建日期:$(获取日期)

” $Report | Out文件。\AD_Report-v5.html
非常感谢您的帮助

谢谢


MMA

我修复了你的代码。也许这段代码可以优化,但显然可以是这样的:

$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 
$HTMLHeader=$null
$HTML_Body=$null
$HTMLEnd=$null
$HTMLHeader=@”
Azure中的递归报告
"@
$DateCutOff=(获取日期).AddDays(-30)
$USR_DB=Get ADUser-Filter*-whenCreated属性|其中{$\uu.whenCreated-gt$DateCutOff}
$HTML_Body+=“”
$HTML_Body+=“用户创建报告”
$HTML_Body+=“”
$HTML_Body+=“用户名”
$HTML_Body+=“创建时”
$HTML_Body+=“”
$HTML_Body+=“”
foreach($USR in$USR_DB){
$INT\u ALT\u RW=0
$HTML_Body+=“”
$HTML_Body+=“$($USR.UserPrincipalName)”
$HTML_Body+=“$($USR.whenCreated)”}
$HTML_Body+=“”
$HTML_Body+=“”
$HTMLEnd=“”
$HTMLFile=$HTMLHeader+$HTML\u Body+$HtmlLend
添加类型-AssemblyName System.Web
[System.Web.HttpUtility]::HtmlDecode($HTMLFile)| Out文件。\temporal.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 
$HTMLHeader=$null
$HTML_Body=$null
$HTMLEnd=$null
$HTMLHeader=@”
Azure中的递归报告
"@
$DateCutOff=(获取日期).AddDays(-30)
$USR_DB=Get ADUser-Filter*-whenCreated属性|其中{$\uu.whenCreated-gt$DateCutOff}
$HTML_Body+=“”
$HTML_Body+=“用户创建报告”
$HTML_Body+=“”
$HTML_Body+=“用户名”
$HTML_Body+=“创建时”
$HTML_Body+=“”
$HTML_Body+=“”
foreach($USR in$USR_DB){
$INT\u ALT\u RW=0
$HTML_Body+=“”
$HTML_Body+=“$($USR.UserPrincipalName)”
$HTML_Body+=“$($USR.whenCreated)”}
$HTML_Body+=“”
$HTML_Body+=“”
$HTMLEnd=“”
$HTMLFile=$HTMLHeader+$HTML\u Body+$HtmlLend
添加类型-AssemblyName System.Web
[System.Web.HttpUtility]::HtmlDecode($HTMLFile)| Out文件。\temporal.html

我在我的广告测试环境和作品测试

你们非常接近。问题在于这一行:

$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>"

我还删除了converttohtml的
-Property
部分,因为它不是必需的,因为我们已经缩小了
Select Object

所需的属性范围,您已经非常接近了。问题在于这一行:

$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>"
我还删除了converttohtml的
-Property
部分,因为它不是必需的,因为我们已经缩小了
Select Object
的属性范围