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
PowershellHTML

Avatar of undefined
Last Comment
Chris Dent

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
Chris Dent

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
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

Chris Dent

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.
oBdA

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">).
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
Chris Dent

I stand by "weird" ;)