powershell提取html字段,Windows PowerShell:PowerShell 中的 HTML 报告
Windows PowerShell:PowerShell 中的 HTML 報(bào)告
08/17/2016
本文內(nèi)容
事實(shí)上,您可以使用 Microsoft Windows PowerShell Cmdlet 來生成 HTML 報(bào)告,并與同事共享。
Don Jones
在 Windows PowerShell 的眾多功能中,其內(nèi)置功能可以從它的各種 Cmdlet 中生成 HTML 輸出。簡(jiǎn)單地將 Cmdlet 輸出傳輸?shù)?ConvertTo-HTML,并將該輸出傳輸?shù)?Out-File,就可以將其放入文件中。例如,
Get-WmiObject –Class Win32_Service |
Select-Object –property Name,State |
Where-Object –Filter { $_.StartMode –eq 'Auto' –and $_.State –ne 'Running' } |
ConvertTo-HTML |
Out-File BadNews.html
您將得到一個(gè)服務(wù)列表,其中包含本應(yīng)運(yùn)行但并未運(yùn)行的服務(wù)。這就是您可能要寫入 Intranet 文件服務(wù)器,并讓支持人員每天早晨檢查的內(nèi)容。此外,當(dāng)您輸入所有這些內(nèi)容時(shí),前四行應(yīng)以管道字符 (|) 結(jié)尾。最后一行以回車符結(jié)尾。
如果您以交互方式將其輸入到 Shell 中,請(qǐng)注意在完成第一行輸入并回車后,提示符將變?yōu)椤?gt;>”。沒問題。這意味著 Windows PowerShell 已經(jīng)準(zhǔn)備好讓您輸入下一行。在輸入第四行和最后一行之后,請(qǐng)按兩次 Enter 鍵來告知 Shell 您已經(jīng)完成輸入,并希望其執(zhí)行該命令。
有關(guān) ConvertTo-HTML Cmdlet 的一個(gè)問題是:根據(jù)其設(shè)計(jì),它每次只能處理一種類型的輸出。如果您嘗試向它提供多種對(duì)象類型 - 服務(wù)、流程或事件日志項(xiàng) - 它就不能正確地格式化輸出。
如果您想創(chuàng)建某種合并報(bào)告,訣竅就是使用 Cmdlet 的不同參數(shù)。例如,假設(shè)您想要生成一份包含前面提到的“應(yīng)該運(yùn)行但并未運(yùn)行的服務(wù)”的報(bào)告,您還希望該頁(yè)列出最近 100 個(gè)安全事件日志項(xiàng)、服務(wù)器正在運(yùn)行的所有進(jìn)程以及有關(guān)服務(wù)器本身的一些基本信息。
您需要知道兩件事:首先是 ConvertTo-HTML 的 -Fragment 參數(shù)(可以在其幫助文件中找到),其次是 Cmdlet 并沒有將 HTML 寫入文件的事實(shí)。
就像在第一個(gè)示例中,Cmdlet 將 HTML 放入管道 - 將其放入文件中是一個(gè)單獨(dú)的步驟。第一個(gè)示例看起來比較繁瑣,但它將給予我們執(zhí)行這些操作的能力:
$one = Get-WmiObject -class Win32_Service |
Select-Object -property Name,State |
Where-Object -filter { $_.Mode -eq 'Auto' -and $_.State -ne 'Running' } |
ConvertTo-HTML -Fragment
$two = Get-EventLog -LogName Security -newest 100 |
ConvertTo-HTML -Fragment
$three = Get-Process |
ConvertTo-HTML -Fragment
$four = Get-WmiObject -class Win32_OperatingSystem |
Select-Object -property Caption,BuildNumber,ServicePackMajorVersion,
@{n='LastBootTime';e={$_.ConvertToDateTime($_.LastBootUpTime)}} |
ConvertTo-HTML -Fragment
ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" |
Out-File c:\status.html
在輸入這些內(nèi)容時(shí),每行都應(yīng)該以管道符號(hào)結(jié)尾,但最后一行應(yīng)該以回車符結(jié)尾。 這會(huì)運(yùn)行四個(gè)截然不同的命令,每個(gè)命令將檢索信息的一個(gè)特定片段,并將其轉(zhuǎn)換為 HTML 片段。
HTML 片段是一個(gè) HTML 長(zhǎng)字符串,它不含可以構(gòu)成完整頁(yè)面的標(biāo)頭標(biāo)記。在最后一個(gè)步驟中,我簡(jiǎn)單地將 HTML 并入一個(gè)完整頁(yè)面的正文中,并將其輸出至一個(gè)文件中。
嘗試運(yùn)行它,看看您的想法會(huì)是什么樣子。它非常簡(jiǎn)單。有一個(gè)笑話說,Windows PowerShell 是唯一能夠輸出“干凈”的、不添加任何樣式和格式的 HTML 的 Microsoft 產(chǎn)品。弊端就是“干凈”的 HTML 非常乏味。這正是目的。您應(yīng)該使用一個(gè)單獨(dú)的 CSS 文件使其變得更吸引人。
在 HTML 中,您首先要對(duì) HTML
標(biāo)記應(yīng)用格式。這些標(biāo)記包含表格的各個(gè)行。 標(biāo)記包含表格的列標(biāo)題。 標(biāo)記為整個(gè)頁(yè)面提供默認(rèn)格式。創(chuàng)建一個(gè)名為 C:\Style.css 的文本文件并輸入以下內(nèi)容:body {
font-family:Calibri;
font-size:10pt;
}
th {
background-color:black;
color:white;
}
td {
background-color:#666;
color:black;
}
Now, I’ll simply modify my lastConvertTo-HTML command as follows:
ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" -CssUri c:\style.css |
Out-File c:\status.html
應(yīng)輸入兩行文本,第一行同樣要以管道符號(hào)結(jié)尾。嘗試運(yùn)行全部:您將發(fā)現(xiàn)一個(gè)格式更好的輸出。遺憾的是,CSS 沒有提供應(yīng)用交替表格行風(fēng)格的方式,至少?zèng)]有適合 Windows PowerShell 生成 HTML 輸出的方式。
您可以使用 ConvertTo-HTML 的 -PreContent 參數(shù)和 -PostContent 參數(shù)來添加節(jié)標(biāo)題和其他任何文本。這有助于使報(bào)告變得更容易閱讀。它將在表格之前顯示任何傳遞給 -PreContent 的字符串。傳遞給 -PostContent 的文本將顯示在表格之后。您可以通過在 Shell 中運(yùn)行 Help ConvertTo-HTML
-example 來找到有關(guān)這些操作的示例。
這是一個(gè)關(guān)于如何使用 Microsoft Windows PowerShell 來生成幫助性報(bào)告,并與同事共享的極好示例。創(chuàng)建樣式適當(dāng)?shù)?HTML 輸出并不需要大量的額外工作。將這些頁(yè)面保存到 Intranet 文件服務(wù)器上,您的同事、經(jīng)理和那些可能需要的人就能訪問這些頁(yè)面。
Don Jones?是 Microsoft MVP 獎(jiǎng)獲得者,也是《Learn Windows PowerShell in a Month of Lunches》(Manning Publications Co.,2010)一書的作者,這本書可以幫助所有管理員高效地使用 Windows PowerShell。此外,Jones 還提供公開和現(xiàn)場(chǎng) Windows PowerShell 培訓(xùn)。您可以通過他的網(wǎng)站 ConcentratedTech.com 與他聯(lián)系。
相關(guān)內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的powershell提取html字段,Windows PowerShell:PowerShell 中的 HTML 报告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html语言把字变大,css怎么让字体变
- 下一篇: html下拉列表框设置两个,怎么使用HT