Link to home
Start Free TrialLog in
Avatar of Suresh Kumar
Suresh Kumar

asked on

output in HTML in Powershell

[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
ASKER CERTIFIED SOLUTION
Avatar of Chris Dent
Chris Dent
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of oBdA
oBdA

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

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.
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">).
I stand by "weird" ;)