powershell提取html字段,Windows PowerShell:PowerShell 中的 HTML 报告
Windows PowerShell:PowerShell 中的 HTML 報告
08/17/2016
本文內容
事實上,您可以使用 Microsoft Windows PowerShell Cmdlet 來生成 HTML 報告,并與同事共享。
Don Jones
在 Windows PowerShell 的眾多功能中,其內置功能可以從它的各種 Cmdlet 中生成 HTML 輸出。簡單地將 Cmdlet 輸出傳輸到 ConvertTo-HTML,并將該輸出傳輸到 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
您將得到一個服務列表,其中包含本應運行但并未運行的服務。這就是您可能要寫入 Intranet 文件服務器,并讓支持人員每天早晨檢查的內容。此外,當您輸入所有這些內容時,前四行應以管道字符 (|) 結尾。最后一行以回車符結尾。
如果您以交互方式將其輸入到 Shell 中,請注意在完成第一行輸入并回車后,提示符將變為“>>”。沒問題。這意味著 Windows PowerShell 已經準備好讓您輸入下一行。在輸入第四行和最后一行之后,請按兩次 Enter 鍵來告知 Shell 您已經完成輸入,并希望其執行該命令。
有關 ConvertTo-HTML Cmdlet 的一個問題是:根據其設計,它每次只能處理一種類型的輸出。如果您嘗試向它提供多種對象類型 - 服務、流程或事件日志項 - 它就不能正確地格式化輸出。
如果您想創建某種合并報告,訣竅就是使用 Cmdlet 的不同參數。例如,假設您想要生成一份包含前面提到的“應該運行但并未運行的服務”的報告,您還希望該頁列出最近 100 個安全事件日志項、服務器正在運行的所有進程以及有關服務器本身的一些基本信息。
您需要知道兩件事:首先是 ConvertTo-HTML 的 -Fragment 參數(可以在其幫助文件中找到),其次是 Cmdlet 并沒有將 HTML 寫入文件的事實。
就像在第一個示例中,Cmdlet 將 HTML 放入管道 - 將其放入文件中是一個單獨的步驟。第一個示例看起來比較繁瑣,但它將給予我們執行這些操作的能力:
$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
在輸入這些內容時,每行都應該以管道符號結尾,但最后一行應該以回車符結尾。 這會運行四個截然不同的命令,每個命令將檢索信息的一個特定片段,并將其轉換為 HTML 片段。
HTML 片段是一個 HTML 長字符串,它不含可以構成完整頁面的標頭標記。在最后一個步驟中,我簡單地將 HTML 并入一個完整頁面的正文中,并將其輸出至一個文件中。
嘗試運行它,看看您的想法會是什么樣子。它非常簡單。有一個笑話說,Windows PowerShell 是唯一能夠輸出“干凈”的、不添加任何樣式和格式的 HTML 的 Microsoft 產品。弊端就是“干凈”的 HTML 非常乏味。這正是目的。您應該使用一個單獨的 CSS 文件使其變得更吸引人。
在 HTML 中,您首先要對 HTML
標記應用格式。這些標記包含表格的各個行。 標記包含表格的列標題。 標記為整個頁面提供默認格式。創建一個名為 C:\Style.css 的文本文件并輸入以下內容: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
應輸入兩行文本,第一行同樣要以管道符號結尾。嘗試運行全部:您將發現一個格式更好的輸出。遺憾的是,CSS 沒有提供應用交替表格行風格的方式,至少沒有適合 Windows PowerShell 生成 HTML 輸出的方式。
您可以使用 ConvertTo-HTML 的 -PreContent 參數和 -PostContent 參數來添加節標題和其他任何文本。這有助于使報告變得更容易閱讀。它將在表格之前顯示任何傳遞給 -PreContent 的字符串。傳遞給 -PostContent 的文本將顯示在表格之后。您可以通過在 Shell 中運行 Help ConvertTo-HTML
-example 來找到有關這些操作的示例。
這是一個關于如何使用 Microsoft Windows PowerShell 來生成幫助性報告,并與同事共享的極好示例。創建樣式適當的 HTML 輸出并不需要大量的額外工作。將這些頁面保存到 Intranet 文件服務器上,您的同事、經理和那些可能需要的人就能訪問這些頁面。
Don Jones?是 Microsoft MVP 獎獲得者,也是《Learn Windows PowerShell in a Month of Lunches》(Manning Publications Co.,2010)一書的作者,這本書可以幫助所有管理員高效地使用 Windows PowerShell。此外,Jones 還提供公開和現場 Windows PowerShell 培訓。您可以通過他的網站 ConcentratedTech.com 與他聯系。
相關內容
總結
以上是生活随笔為你收集整理的powershell提取html字段,Windows PowerShell:PowerShell 中的 HTML 报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html语言把字变大,css怎么让字体变
- 下一篇: html下拉列表框设置两个,怎么使用HT