Hi luc ,
can yu please check html command to get proper output .
$path1 = 'D:\hc'
$path = "D:\hc\compliance-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
#(get-credential).password | ConvertFrom-SecureString | set-content "$path1\password.txt"
$password = Get-Content "$path1\password.txt" | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential("administrator@vsphere.local",$password)
connect-viserver -server "vcenter01" -Credential $credential
$head = @'
<style>
body { background-color:#dddddd;
font-family:Tahoma;
font-size:12pt; }
td, th { border:1px solid black;
border-collapse:collapse; }
th { color:white;
background-color:black; }
table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
'@
$esxi=get-vmhost
$deviated_esxi=@()
foreach($e in $esxi)
{
$v=get-vmhost -Name $e
$accountunlocktime_minutes=(Get-AdvancedSetting -Entity $v -Name Security.AccountUnlockTime).value/60
if($accountunlocktime_minutes -ne "60"){
[PSCustomObject]@{
esxinmae = $v
accountunlocktime_minutes=$accountunlocktime_minutes
}
$deviated_esxi += $v
}
}
$deviated_esxi|ConvertTo-Html -Property name -Fragment -PreContent '<h2>esxiwithlockdowntime not60mins </h2>' |
Out-String
ConvertTo-HTML -head $head -PostContent $deviated_esxi |
Out-String | Out-File -FilePath $path
If I understand correctly what you are trying to do, you should probably do
$path = "D:\hc\compliance-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
$path = "D:\Temp\compliance-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
$password = Get-Content "$path1\password.txt" | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential("administrator@vsphere.local",$password)
connect-viserver -server "vcenter01" -Credential $credential
$head = @'
<style>
body { background-color:#dddddd;
font-family:Tahoma;
font-size:12pt; }
td, th { border:1px solid black;
border-collapse:collapse; }
th { color:white;
background-color:black; }
table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
'@
$deviated_esxi=@()
foreach($e in Get-VMHost)
{
$accountunlocktime_minutes=(Get-AdvancedSetting -Entity $e -Name Security.AccountUnlockTime).value/60
if($accountunlocktime_minutes -ne "60"){
$deviated_esxi += [PSCustomObject]@{
esxiname = $e.Name
accountunlocktime_minutes=$accountunlocktime_minutes
}
}
}
$frag = $deviated_esxi|
ConvertTo-Html -Property esxiname -Fragment -PreContent '<h2>esxiwithlockdowntime not60mins </h2>' |
Out-String
ConvertTo-HTML -head $head -PostContent $frag |
Out-String | Out-File -FilePath $path
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
If I understand correctly what you are trying to do, you should probably do
$path = "D:\hc\compliance-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
$path = "D:\Temp\compliance-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
$password = Get-Content "$path1\password.txt" | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential("administrator@vsphere.local",$password)
connect-viserver -server "vcenter01" -Credential $credential
$head = @'
<style>
body { background-color:#dddddd;
font-family:Tahoma;
font-size:12pt; }
td, th { border:1px solid black;
border-collapse:collapse; }
th { color:white;
background-color:black; }
table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
'@
$deviated_esxi=@()
foreach($e in Get-VMHost)
{
$accountunlocktime_minutes=(Get-AdvancedSetting -Entity $e -Name Security.AccountUnlockTime).value/60
if($accountunlocktime_minutes -ne "60"){
$deviated_esxi += [PSCustomObject]@{
esxiname = $e.Name
accountunlocktime_minutes=$accountunlocktime_minutes
}
}
}
$frag = $deviated_esxi|
ConvertTo-Html -Property esxiname -Fragment -PreContent '<h2>esxiwithlockdowntime not60mins </h2>' |
Out-String
ConvertTo-HTML -head $head -PostContent $frag |
Out-String | Out-File -FilePath $path
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
its still giving info in single row .
i want one column with header esxi name and below that names of esxi
esxinames
esxi1
esxi2
esxi3
Which is the output I'm getting.
Check your copy
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
very strange now i m getting this .if yu can suggest whats is wrong with my code .
Which code, the original code you posted?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
yes
Besides some minor issues, the main issue was that you used the Property parameter on the ConvertTo-Html cmdlet, while you were not presenting objects with properties to that cmdlet, but strings.
So that Property parameter didn't take anything.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
i want to add some other conditions in this report .for the time being i added following
if password length of root is not 16 characters(orange code ) it should print in the report .
can you please check if that has been added correctly to report
$path1 = 'D:\compliance'
$path = "D:\compliance\compliance_test-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
#$path = "D:\Temp\compliance-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
(get-credential).password | ConvertFrom-SecureString | set-content "$path1\password.txt"
$password = Get-Content "$path1\password.txt" | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential("administrator@vsphere.local",$password)
connect-viserver -server "ukpnnhvcsa001.ibm-infra.local" -Credential $credential
$head = @'
<style>
body { background-color:#dddddd;
font-family:Tahoma;
font-size:12pt; }
td, th { border:1px solid black;
border-collapse:collapse; }
th { color:white;
background-color:violet; }
table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
'@
$deviated_esxi=@()
foreach($e in Get-VMHost)
{
$accountunlocktime_minutes=(Get-AdvancedSetting -Entity $e -Name Security.AccountUnlockTime).value/60
if($accountunlocktime_minutes -ne "60"){
$deviated_esxi += [PSCustomObject]@{
esxiname = $e.Name
accountunlocktime_minutes=$accountunlocktime_minutes
}
}
}
$frag = $deviated_esxi|
ConvertTo-Html -Property esxiname -Fragment -PreContent '<h2>esxiwithlockdowntime not60mins </h2>' |
Out-String
$esxi_pasword_length=read-host "please provide password for one of the esxi"
if($esxi_pasword_length.Length -ne "16")
{
write-host "password length is not as per agreed value "
$esxi_pasword_length.Length|
ConvertTo-Html -PreContent '<h2>paswordlength </h2>' |
Out-String
}
ConvertTo-HTML -head $head -PostContent $frag |
Out-String | Out-File -FilePath $path
You have to provide an object, or array of objects, to the ConvertTo-Html cmdlet.
You also have to specify it concerns a fragment.
$path = "D:\compliance\compliance_test-$(Get-Date -Format 'yyyyMMdd-HHmm').html"
$password = Get-Content "$path1\password.txt" | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential("administrator@vsphere.local",$password)
connect-viserver -server "ukpnnhvcsa001.ibm-infra.local" -Credential $credential
$head = @'
<style>
body { background-color:#dddddd;
font-family:Tahoma;
font-size:12pt; }
td, th { border:1px solid black;
border-collapse:collapse; }
th { color:white;
background-color:violet; }
table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
'@
$deviated_esxi=@()
foreach($e in Get-VMHost)
{
$accountunlocktime_minutes=(Get-AdvancedSetting -Entity $e -Name Security.AccountUnlockTime).value/60
if($accountunlocktime_minutes -ne "60"){
$deviated_esxi += [PSCustomObject]@{
esxiname = $e.Name
accountunlocktime_minutes=$accountunlocktime_minutes
}
}
}
$frag1 = $deviated_esxi|
ConvertTo-Html -Property esxiname -Fragment -PreContent '<h2>esxiwithlockdowntime not60mins </h2>' |
Out-String
$esxi_pasword_length=read-host "please provide password for one of the esxi"
if($esxi_pasword_length.Length -ne "16")
{
write-host "password length is not as per agreed value "
$frag2 = New-Object -Type PSObject -Property @{
length = $esxi_pasword_length.Length
} |
ConvertTo-Html -Property length -FragMent -PreContent '<h2>paswordlength </h2>' |
Out-String
}
ConvertTo-HTML -head $head -PostContent $frag1,$frag2 |
Out-String | Out-File -FilePath $path
Invoke-Item $path
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
thanks Luc .
i am going to ask other conditions in next post referring to this script only .i need to to add more to it to get proper compliance report .
thanks again ..