output in HTML in Powershell

Suresh Kumar
Suresh Kumar used Ask the Experts™
on
[cmdletbinding()]
param
(
[Parameter(Position=0,ValuefromPipeline=$true)]
[string[]$ComputerName = $env:COMPUTERNAME
)
cluster node /status

If ($? -eq "True") {

$cluster = cluster node /status

$a = @'
<style type='text/css'> .nxn-ret-table{width:100%; border-collapse:collapse; font-family: Arial;} /* Define the background color for all the ODD background rows */ .nxn-ret-table tr:nth-child(odd){ background: #DAE0E1;} /* Define the background color for all the EVEN background rows */ .nxn-ret-table tr:nth-child(even){background: #f7f7f7; } pre { font-family: Arial; overflow: auto;} </style>

'@

$cluster | ConvertTo-Html -As List -Head $a -body "<H2>Cluster Status</H2>" | Out-File -FilePath C:\tmp\user.txt
Get-Content 'C:\tmp\user.txt' | Foreach-Object {$_ -replace '<table>', ("<table class='nxn-ret-table'>")} | Foreach-Object {$_ -replace '^<html.*$', ("<html>")} | Set-Content 'C:\tmp\user1.txt'

cat C:\tmp\user1.txt
}
else {Write-Host "<html><h1>Cluster is not configured on $ComputerName</h1></html>"}

when i run the above script .,output comes like

Node           Node ID Status

-------------- ------- ---------------------

WSOMQAVDCI02         1 Up

wsomqavdci01         2 Up

But when trying to get the output in HTML.it does not work.

Can you please help in getting the out in HTML format
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
PowerShell Developer
Top Expert 2010
Commented:
It won't trivially convert to HTML because the command you're using is returning a simple string.

Find the PowerShell alternative for "cluster node /status" and you can use ConvertTo-Html on it. That might well be something as simple as Get-ClusterNode.
Most Valuable Expert 2018
Distinguished Expert 2018

Commented:
Try it like this:
[CmdletBinding()]
Param(
	[Parameter(Position=0,ValuefromPipeline=$true)]
	[string[]]$ComputerName = $env:COMPUTERNAME
)
$Head = @'
<style type='text/css'> .nxn-ret-table{width:100%; border-collapse:collapse; font-family: Arial;} /* Define the background color for all the ODD background rows */ .nxn-ret-table tr:nth-child(odd){ background: #DAE0E1;} /* Define the background color for all the EVEN background rows */ .nxn-ret-table tr:nth-child(even){background: #f7f7f7; } pre { font-family: Arial; overflow: auto;} </style>

'@
Try {
	Import-Module FailoverClusters -ErrorAction Stop
	Get-ClusterNode -ErrorAction Stop |
		Select-Object Name, ID, State |
		ConvertTo-Html -As List -Head $Head -body "<H2>Cluster Status</H2>" |
		Foreach-Object {$_ -replace '<table>', ("<table class='nxn-ret-table'>")} |
		Foreach-Object {$_ -replace '^<html.*$', ("<html>")} |
		Set-Content 'C:\tmp\user1.txt'
		Get-Content -Path 'C:\tmp\user1.txt'
} Catch {
	Write-Host "<html><h1>Cluster is not configured on $ComputerName</h1></html>"
}

Open in new window

Chris DentPowerShell Developer
Top Expert 2010

Commented:
It'll need a handler for a remote call to make sense of the ComputerName parameter. The second replace is weird and can probably just go.
Most Valuable Expert 2018
Distinguished Expert 2018

Commented:
The remote support wasn't used in the original (and "ValueFromPipeline=$tTrue" is rather pointless as well, since there's no Process {} block.), so I think that's just a "copy and paste" from a script template.
It would need the cluster name in this case, though ("Get-ClusterNode -Cluster <ClusterName> -ErrorAction Stop"), not a node name.
The second "replace" removes the XML namespace that ConvertTo-Html adds to the <html> tag (<html xmlns="http://www.w3.org/1999/xhtml">).
Chris DentPowerShell Developer
Top Expert 2010

Commented:
I stand by "weird" ;)

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial