Examples/Demo02.ps1
[CmdletBinding()] param ( [System.String[]] $Format = @('Html','Word'), [System.String] $Path = '~\Desktop', [System.Management.Automation.SwitchParameter] $PassThru ) Import-Module PScribo -Force -Verbose:$false <# The document name is used in the file output #> $document = Document 'PScribo Demo 2' -Verbose { <# Enforce uppercase section headers/names Enable automatic section numbering Set the page size to US Letter with 0.5inch margins #> DocumentOption -ForceUppercaseSection -EnableSectionNumbering -PageSize Letter -Margin 36 BlankLine -Count 20 Paragraph 'PScribo Demo 2' -Style Title BlankLine -Count 20 PageBreak TOC -Name 'Table of Contents' PageBreak <# WARNING: Microsoft Word will include paragraphs styled with 'Heading*' style names to the TOC. To avoid this, define an identical style with a name not beginning with 'Heading'! #> Paragraph -Style Heading1 'This is Heading 1' Paragraph -Style Heading2 'This is Heading 2' Paragraph -Style Heading3 'This is Heading 3' Paragraph 'This is a regular line of text indented 0 tab stops' Paragraph -Tabs 1 'This is a regular line of text indented 1 tab stops. This text should not be displayed as a hanging indent, e.g. not just the first line of the paragraph indented.' Paragraph -Tabs 2 'This is a regular line of text indented 2 tab stops' Paragraph -Tabs 3 'This is a regular line of text indented 3 tab stops' Paragraph 'This is a regular line of text in the default font in italics' -Italic Paragraph 'This is a regular line of text in the default font in bold' -Bold Paragraph 'This is a regular line of text in the default font in bold italics' -Bold -Italic Paragraph 'This is a regular line of text in the default font in 14 point' -Size 14 Paragraph 'This is a regular line of text in Courier New font' -Font 'Courier New' Paragraph "This is a regular line of text indented 0 tab stops with the computer name as data: $env:COMPUTERNAME" Paragraph "This is a regular line of text indented 0 tab stops with the computer name as data in bold: $env:COMPUTERNAME" -Bold Paragraph "This is a regular line of text indented 0 tab stops with the computer name as data in bold italics: $env:COMPUTERNAME" -Bold -Italic Paragraph "This is a regular line of text indented 0 tab stops with the computer name as data in 14 point bold italics: $env:COMPUTERNAME" -Bold -Italic -Size 14 Paragraph "This is a regular line of text indented 0 tab stops with the computer name as data in 8 point Courier New bold italics: $env:COMPUTERNAME" -Bold -Italic -Size 8 -Font 'Courier New' $services = Get-CimInstance -ClassName Win32_Service | Select-Object -Property DisplayName, State, StartMode | Sort-Object -Property DisplayName <# Add a custom style for highlighting table cells/rows #> Style -Name 'Stopped Service' -Color White -BackgroundColor Firebrick -Bold <# Sections provide an easy way of creating a document structure and can support section numbering (if enabled with the DocumentOption -EnableSectionNumbering parameter. You don't need to worry about the numbers as PScribo will figure this out. #> Section -Style Heading1 'Standard-Style Tables' { Section -Style Heading2 'Autofit Width Autofit Cell No Highlighting' { Paragraph -Style Heading3 'Example of an autofit table width, autofit contents and no cell highlighting.' Paragraph "Services ($($services.Count) Services found):" $services | Table -Columns DisplayName,State,StartMode -Headers 'Display Name','Status','Startup Type' -Width 0 } PageBreak Section -Style Heading2 'Full Width Autofit Cell Highlighting' { Paragraph -Style Heading3 'Example of a full width table with autofit columns and individual cell highlighting.' Paragraph "Services ($($services.Count) Services found):" <# Highlight individual cells with "StoppedService" style where state = stopped and startup = auto #> $stoppedAutoServicesCell = $services.Clone() $stoppedAutoServicesCell | Where-Object { $_.State -eq 'Stopped' -and $_.StartMode -eq 'Auto'} | Set-Style -Property State -Style StoppedService $stoppedAutoServicesCell | Table -Columns DisplayName,State,StartMode -Headers 'Display Name','Status','Startup Type' -Tabs 1 } PageBreak Section -Style Heading2 'Full Width Fixed Row Highlighting' { Paragraph -Style Heading3 'Example of a full width table with fixed columns widths and full row highlighting.' Paragraph "Services ($($services.Count) Services found)" <# Highlight an entire row with the "StoppedService" style where state = stopped and startup = auto #> $stoppedAutoServicesRow = $services.Clone() $stoppedAutoServicesRow | Where-Object { $_.State -eq 'Stopped' -and $_.StartMode -eq 'Auto' } | Set-Style -Style StoppedService $stoppedAutoServicesRow | Table -Columns DisplayName,State,StartMode -ColumnWidths 70,15,15 -Headers 'Display Name','Status','Startup Type' } } PageBreak $listServices = Get-Service | Select-Object -Property Name,CanPauseAndContinue,CanShutdown,CanStop,DisplayName,ServiceName,ServiceType,Status -First 2 $listServices | Set-Style -Style StoppedService -Property ServiceType -Verbose Section -Style Heading1 'List-Style Tables' { Section -Style Heading2 'Autofit Width Autofit Cell No Highlighting' { $listServices | Table -Name 'AutofitWidth-AutofitCell-NoHighlighting' -List -Width 0 } Section -Style Heading2 'Fixed Width Autofit Cell No Highlighting' { foreach ($listService in $listServices) { Paragraph "Service $($listService.Name):" $listService | Table -Name "FixedWidth-AutofitCell-$($listService.Name)" -List -Width 60 } } Section -Style Heading2 'Fixed Width Fixed Cell No Highlighting 1' { foreach ($listService in $listServices) { Paragraph "Service $($listService.Name):" -Bold $listService | Table -Name "FixedWidth-FixedCell-$($listService.Name)1" -List -ColumnWidths 25,75 -Width 60 } } Section -Style Heading1 'Fixed Width Fixed Cell No Highlighting 2' { $listServices | Table -Name "FixedWidth-FixedCell-$($listService.Name)2" -List -ColumnWidths 45,55 -Width 60 -Tabs 2 } } } <# Generate 'PScribo Demo 2.docx' and 'PScribo Demo 2.html' files. Other supported formats include 'Text' and 'Xml' #> $document | Export-Document -Path $Path -Format $Format -PassThru:$PassThru |