Đối với báo cáo đơn giản này, tôi chỉ sử dụng một số thuộc tính như -CssUri , -Postcontent và -PreContent từ lệnh ghép ngắn ConvertTo-HTML
Nội dung trước/sau
Thông thường chúng ta sẽ tạo bảng và tạo nội dung với sự trợ giúp của ConvertTo-HTML cmdlet. Tuy nhiên, nếu bạn muốn chèn các lệnh HTML bổ sung để đặt trước và sau mã chính. Điều này có thể đạt được bằng cách sử dụng lệnh ghép ngắn “-PreContent” và “-PostContent”
-PreContent. Chỉ định văn bản để thêm trước thẻ bắt đầu. Theo mặc định, không có văn bản ở vị trí đó
-Nội dung bài viết. Chỉ định văn bản để thêm sau thẻ đóng. Theo mặc định, không có văn bản ở vị trí đó
CssUri
Chỉ định Mã định danh tài nguyên đồng nhất [URI] của biểu định kiểu xếp tầng [CSS] được áp dụng cho tệp HTML. URI được bao gồm trong liên kết biểu định kiểu ở đầu ra
mã cuối cùng
Ở đây tôi đã viết mã CSS cần thiết cho báo cáo và đặt mã bên dưới vào notepad và lưu với tên C. \dotnet-helpers\design. css. Cùng một CSS sẽ được gọi trong quá trình tạo báo cáo. Vì vậy, kiểu sẽ được áp dụng cho báo cáo HTML cuối cùng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
body { màu nền. #E5E4E2;
họ phông chữ. Không gian đơn;
cỡ chữ. 10pt; }
bảng,td, thứ { đường viền. 1px rắn đen;}
th { màu. #00008B;
màu nền. trắng;
cỡ chữ. 12pt;}
bảng { lề trái. 30px; }
h2 {
họ phông chữ. Tahoma;
màu. #6D7B8D;
}
h1{màu. #DC143C;}
h5{màu. #DC143C;}
Trong tập lệnh bên dưới, tôi đang thêm kiểu từ tệp CSS bên ngoài với sự trợ giúp của tham số -CssUri [-CssUri ‘C. \temp\thiết kế. css’] và tạo báo cáo HTML ở vị trí đích. CSS từ tệp sẽ được áp dụng cho phần tử HTML trong quá trình thực thi và tạo báo cáo như bên dưới
Định nghĩa một số đối tượng
Hãy bắt đầu bằng cách tạo một số sinh viên
class Student {
[string]$firstName=""
[string]$lastName=""
[int]$score=3
[System.DateTime]$birthday
Student [[string]$firstName,[string]$lastName,[int]$score,[int]$day,[int]$month,[int]$year] {
$this.firstName = $firstName
$this.lastName = $lastName
$this.score = $score
$this.birthday = [get-date -Minute 0 -Second 0 -Millisecond 0 -Hour 0 -Year $year -Day $day -Month $month]
}
Student [[string]$firstName,[string]$lastName,[int]$score,[int]$day,[int]$month] {
$this.firstName = $firstName
$this.lastName = $lastName
$this.score = $score
$this.birthday = [get-date -Minute 0 -Second 0 -Millisecond 0 -Hour 0 -Year 2003 -Day $day -Month $month]
}
Student [[string]$firstName,[string]$lastName,[int]$score,[System.DateTime]$birthday] {
$this.firstName = $firstName
$this.lastName = $lastName
$this.score = $score
$this.birthday = $birthday
}
Student [[string]$firstName,[string]$lastName] {
$this.firstName = $firstName
$this.lastName = $lastName
$this.score = [Get-Random -Minimum 1 -Maximum 10]
$this.birthday = [get-date -Minute 0 -Second 0 -Millisecond 0 -Hour 0 -Year 2003 -Day [Get-Random -Minimum 1 -Maximum 28] -Month [Get-Random -Minimum 1 -Maximum 12]]
}
[string] GetFullName[ ] {
return ["{0} {1}" -f $this.firstName,$this.lastName]
}
[string] GetRapportLine[ ] {
return ["{0} {1} - {2}/10" -f $this.firstName,$this.lastName,$this.score]
}
static [Student[]] ConvertFromSerialization[[PSObject[]]$psostudents] {
$students = @[]
foreach[$s in $psostudents] {
$students += new-object Student[$s.firstName,$s.lastName,$s.score,$s.birthday]
}
return $students
}
}
$students = @[]
$students += new-object Student["Bob","Sinclair"]
$students += new-object Student["Alice","Cooper"]
$students += new-object Student["Freddie","Mercury"]
Đầu ra HTML đơn giản
$htmlpath = "c:\d\students.html"
$students | ConvertTo-Html | set-content -path $htmlpath
$htmlpath = "c:\d\students.html"
$columns = @[]
$columns += @{Name="Name";Expression={["{0} {1}" -f $_.firstName,$_.lastName]}}
$columns += @{N="Score";E={[" {0}/20" -f $_.score]}}
$students | select $columns | ConvertTo-Html | set-content -path $htmlpath
Thêm một số bổ sung trước
$htmlpath = "c:\d\students.html"
$columns = @[]
$columns += @{Name="Name";Expression={["{0} {1}" -f $_.firstName,$_.lastName]}}
$columns += @{N="Score";E={[" {0}/20" -f $_.score]}}
$students | select $columns | ConvertTo-Html -title "Student Report Overview" -pre "Student Overview" | set-content -path $htmlpath
$htmlpath = "c:\d\students.html"
$columns = @[]
$columns += @{Name="Name";Expression={["{0} {1}" -f $_.firstName,$_.lastName]}}
$columns += @{N="Score";E={["{0}/20" -f $_.score]}}
$header = @"
{0}
"@ -f "Student Report Overview"
$students | select $columns | ConvertTo-Html -head $header -pre "Student Overview" | set-content -path $htmlpath
Lập báo cáo tổng quan về máy chủ của bạn
$header = @"
{0}
"@ -f "Server Overview"
$fragments = @[]
$volumes = Get-Volume | select driveletter,size,sizeremaining,@{n="Full %";e={[Math]::Ceiling[[$_.Size-$_.sizeRemaining]*100/$_.Size]}}
$fragments += $volumes | convertto-html -fragment -pre "Volumes"
$services = get-service | select DisplayName,Name,StartType,Status
$fragments += $services | ConvertTo-Html -Fragment -pre "Services"
$runatboot = Get-Item -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
$runatboottab = $runatboot.GetValueNames[] | % { $n = $_;new-object -type psobject -property @{Name=$_;ExecPath=[get-itempropertyvalue -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -name $n]}}
$fragments += $runatboottab | ConvertTo-Html -Fragment -pre "Startup Processes"
$fragments += Get-Process | select Name,Path | ConvertTo-Html -Fragment -pre "Snapshot Processes"
ConvertTo-Html -Body $fragments -Head $header | set-content "c:\d\serverreport.html"
Gửi một e-mail
$volumes = Get-Volume | select driveletter,size,sizeremaining,@{n="Full %";e={[Math]::Ceiling[[$_.Size-$_.sizeRemaining]*100/$_.Size]}}
$email = [$volumes | convertto-html -pre "Volumes"] -join "`n"
$subject = "Volume Overview"
$from = "bob@powerstart.org"
$to = "alice@powerstart.org"
$smtpserver = "127.0.0.1"
$port = 25
Send-MailMessage -subject $subject -BodyAsHtml -body $email -to $to -from $from -smtpserver $smtpserver -port $port
Invoke-Expression $[Invoke-WebRequest '//raw.githubusercontent.com/tdewin/randomsamples/master/powerstarthtml/bootstrap.ps1'].content
$path = ["powerstarthtml-test.html"]
import-module PowerStartHTML
$ps = New-PowerStartHTML -title "Hello PowerStartHTML!"
[get-process] | select name,cpu,npm | Add-PowerStartHTMLTable -psHtml $ps -tableTitle "Processes" -tableClass "table table-striped"
$ps.Save[$path]
explorer $path
```
Gửi Email https. //smtp4dev. mật mã. com/