Powershell转换为html

时间:2014-03-03 11:41:26

标签: html powershell

我有下面的脚本。它输出正常的屏幕,但我无法将其输出到html文件。我想我在foreach循环中做错了。

$style = "<style>"
$style = $style + "BODY{background-color:#eeeeee;}"
$style = $style + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$style = $style + "TH{text-align:center;width:140px; border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}"
$style = $style + "TD{text-align:center;border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:palegoldenrod}"
$style = $style + "</style>"

$ServerName = New-Object System.Collections.ArrayList
$EmailBody = @()

$thedate = Get-Date -format "dddd, dd MMMM yyyy HH:mm:ss"

$adfind = new-object DirectoryServices.DirectorySearcher
$adfind.SearchRoot = [ADSI]"LDAP://OU=,OU=,OU=,OU=,OU=,OU=,DC=,DC="

$adfind.Filter = "(&(objectClass=computer))"
$resultSet = $adfind.FindAll()

foreach($result in $resultset)
{
$adObject = $result.GetDirectoryEntry()
$ServerName.Add([string]$adobject.name)
}

#Uitzonderingen verwijderen en sorteren
$ServerName = $ServerName |Sort

#Variabelen voor warning niveau
$DriveDWarningLevel = "5"

#Poorten testen
function Test-Telnet($Server, $tcpport){
# Test Telnet Connection
$tcpclient = new-Object system.Net.Sockets.TcpClient
$connection = $tcpclient.BeginConnect($server,$tcpport,$null,$null)
$timeout = $connection.AsyncWaitHandle.WaitOne(300,$false)  ## 3 second timeout can be modified
if(!$TimeOut){
    $TCPclient.Close()
    return $false
}
else{
   try{
        $TCPclient.EndConnect($Connection) | out-Null
        $TCPclient.Close()
        return $true
    } 
   catch{
        return $false
    }
}
}

function FreeSpace ($Server, $Path) {

$timeout = new-timespan -Seconds 1  
$sw = [diagnostics.stopwatch]::StartNew()  
while ($sw.elapsed -lt $timeout){ 


                    try {
                        $Disks = Get-WmiObject -ComputerName $Server -Query {SELECT * FROM Win32_LogicalDisk WHERE DriveType = "3"}
                    }
                    catch {
                        return "FOUT"
                    }
                    finally {
                        foreach($disk in $disks) {
                        $deviceID = $disk.DeviceID
                            if ($deviceID -eq "D:"){
                                    [float]$size = $disk.Size
                                    [float]$freespace = $disk.FreeSpace
                                #return [Math]::Round($freespace / 1073741824, 2)
                                $freespace = [Math]::Round($freespace / 1073741824, 2)
                            }
                        }
                    }
                    return $freespace
             }
}



 function Get-ADProperties($Item){
$root = [ADSI]''
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.filter = "(&(objectClass=computer)(Name=$Item))"
$Result = $searcher.findone()
return $Result.properties
 }

 function Get-Uptime($Server) {
$wmi = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Server
$Uptime = $wmi.ConvertToDateTime($wmi.LastBootUptime)
return $Uptime
}               

cls



 foreach ($Server in $ServerName){

Write-Host "$Server | " -nonewline
$Kolom1 = "$Server"

# Port 1494 testen
$TestResult = Test-Telnet -Server $Server -tcpport "1494"
If ($TestResult -eq $true){
    $Result1494 = "OKEE"
    $Result1494Color = "green"
    }
Else {
    $Result1494 = "FOUT"
    $Result1494Color = "red"
    }

Write-Host "$Result1494" -foregroundcolor $Result1494Color -nonewline
Write-Host " | " -nonewline
$Kolom2 = "$Result1494"


#Port 2598 testen
$TestResult = Test-Telnet -Server $Server -tcpport "2598"
If ($TestResult -eq $true){
    $Result2598 = "OKEE"
    $Result2598Color = "green"
    }
Else {
    $Result2598 = "FOUT"
    $Result2598Color = "red"
    }

Write-Host "$Result2598" -foregroundcolor $Result2598Color -nonewline
Write-Host " | " -nonewline
$Kolom3 = "$Result2598"


#Port 135 testen
$TestResult = Test-Telnet -Server $Server -tcpport "135"
If ($TestResult -eq $true){
    $Result135 = "OKEE"
    $Result135Color = "green"
    }
Else {
    $Result135 = "FOUT"
    $Result135Color = "red"
    }

Write-Host "$Result135" -foregroundcolor $Result135Color -nonewline;
Write-Host " | " -nonewline
$Kolom4 = "$Result135"


#Ping testen
If(Test-Connection -ComputerName $Server -Count 1 -Quiet){
    $ResultPing = "OKEE"
    $ResultPingColor = "green"
    }
Else {
    $ResultPing = "FOUT"
    $ResultPingColor = "red"
    }

Write-Host "$ResultPing" -foregroundcolor $ResultPingColor -nonewline
Write-Host " | " -nonewline
$Kolom5 = "$ResultPing"


#FreeSpace testen
$FreeSpace = FreeSpace -Path "\\$Server\d$" -Server $Server
If ($freeSpace -lt $DriveDWarningLevel){
    $freeSpaceGBColor = "red"
    }
Else {
    $freeSpaceGbColor = "green"
    }

$freespace = "{0:N2}" -f $freespace
Write-Host "$freeSpace" -foregroundcolor $freeSpaceGBColor -nonewline
Write-Host "   | " -nonewline
$Kolom6 = "$freeSpace" 


#Server description ophalen
[string]$ServerDescription = (Get-ADProperties -Item $Server).description 
Write-Host "$ServerDescription" -nonewline
Write-Host "   | " -nonewline
$Kolom7 = "$ServerDescription"

#Uptime ophalen
$Uptime = Get-Uptime($Server)
$uptimecolor = "white"
Write-Host "$Uptime" -foregroundcolor $uptimecolor
$Kolom8 = "$Uptime"}

ConvertTo-HTML -head $style, -PreContent "<h3>Controle uitgevoerd op: $thedate</h3><br>
<table><tr><th>Kolom1</th><th>Kolom2</th><th>Kolom3</th><th>Kolom4</th><th>Kolom5</th>    <th>Kolom6</th><th>Kolom8</th></tr>"

 foreach ($Server in $ServerName){
"<tr><td>"+ $Kolom1 + "</td><td>"+ $Kolom2 + "</td><td>" + $Kolom3 + "</td><td>" + $Kolom4 + "</td><td>" + $Kolom5 + "</td><td>" + $Kolom6 + "</td><td>" + $Kolom8 + "</td></tr></table>"  | ConvertTo-HTML -head $style | set-content "c:\kenny\citrix\test.htm"
 }

我尝试将html放在循环中,就像我在phop中一样,但是在PowerShell中似乎有所不同。

1 个答案:

答案 0 :(得分:0)

我认为这就是你想要的:

$style = @"
<style>
BODY{background-color:#eeeeee;}
TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
TH{text-align:center;width:140px; border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}
TD{text-align:center;border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:palegoldenrod}
</style>
"@

$thedate = Get-Date -format "dddd, dd MMMM yyyy HH:mm:ss"

$ServerName = Get-ADComputer -Filter {OperatingSystem -Like "Windows Server*"} -searchbase "OU=,OU=,OU=,DC=,DC=" -Properties Description

#Variabelen voor warning niveau
$DriveDWarningLevel = "5"

#Poorten testen
function Test-Telnet($Server, $tcpport){
    # Test Telnet Connection
    $tcpclient = new-Object system.Net.Sockets.TcpClient
    $connection = $tcpclient.BeginConnect($server.Name,$tcpport,$null,$null)
    $timeout = $connection.AsyncWaitHandle.WaitOne(300,$false)  ## 3 second timeout can be modified
    if(!$TimeOut){
        $TCPclient.Close()
        return $false
    }
    else{
       try{
            $TCPclient.EndConnect($Connection) | out-Null
            $TCPclient.Close()
            return $true
        } 
       catch{
            return $false
        }
    }
}

function FreeSpace ($Server, $Path) {

    $timeout = new-timespan -Seconds 1  
    $sw = [diagnostics.stopwatch]::StartNew()  

    while ($sw.elapsed -lt $timeout){ 
        try {
            $Disks = Get-WmiObject -ComputerName $Server.Name -Query {SELECT * FROM Win32_LogicalDisk WHERE DriveType = "3"}
        }
        catch {
            return "FOUT"
        }
        finally {
            foreach($disk in $disks) {
            $deviceID = $disk.DeviceID
                if ($deviceID -eq "D:"){
                        [float]$size = $disk.Size
                        [float]$freespace = $disk.FreeSpace
                    #return [Math]::Round($freespace / 1073741824, 2)
                    $freespace = [Math]::Round($freespace / 1073741824, 2)
                }
            }
        }
        return $freespace
    }
}

 function Get-Uptime($Server) {
    $wmi = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Server.Name
    $Uptime = $wmi.ConvertToDateTime($wmi.LastBootUptime)
    return $Uptime
}   

$Body = "<h3>Controle uitgevoerd op: $thedate</h3><br><table><tr><th>Kolom1</th><th>Kolom2</th><th>Kolom3</th><th>Kolom4</th><th>Kolom5</th>    <th>Kolom6</th><th>Kolom8</th></tr>"

foreach ($Server in $ServerName){

    Write-Host $Server.Name " | " -nonewline
    $Kolom1 = $Server.Name

    # Port 1494 testen
    $TestResult = Test-Telnet -Server $Server -tcpport "1494"
    If ($TestResult -eq $true){
        $Result1494 = "OKEE"
        $Result1494Color = "green"
        }
    Else {
        $Result1494 = "FOUT"
        $Result1494Color = "red"
        }

    Write-Host "$Result1494" -foregroundcolor $Result1494Color -nonewline
    Write-Host " | " -nonewline
    $Kolom2 = "$Result1494"


    #Port 2598 testen
    $TestResult = Test-Telnet -Server $Server -tcpport "2598"
    If ($TestResult -eq $true){
        $Result2598 = "OKEE"
        $Result2598Color = "green"
        }
    Else {
        $Result2598 = "FOUT"
        $Result2598Color = "red"
        }

    Write-Host "$Result2598" -foregroundcolor $Result2598Color -nonewline
    Write-Host " | " -nonewline
    $Kolom3 = "$Result2598"


    #Port 135 testen
    $TestResult = Test-Telnet -Server $Server -tcpport "135"
    If ($TestResult -eq $true){
        $Result135 = "OKEE"
        $Result135Color = "green"
        }
    Else {
        $Result135 = "FOUT"
        $Result135Color = "red"
        }

    Write-Host "$Result135" -foregroundcolor $Result135Color -nonewline;
    Write-Host " | " -nonewline
    $Kolom4 = "$Result135"


    #Ping testen
    If(Test-Connection -ComputerName $Server -Count 1 -Quiet){
        $ResultPing = "OKEE"
        $ResultPingColor = "green"
        }
    Else {
        $ResultPing = "FOUT"
        $ResultPingColor = "red"
        }

    Write-Host "$ResultPing" -foregroundcolor $ResultPingColor -nonewline
    Write-Host " | " -nonewline
    $Kolom5 = "$ResultPing"


    #FreeSpace testen
    $FreeSpace = FreeSpace -Path "\\$Server\d$" -Server $Server
    If ($freeSpace -lt $DriveDWarningLevel){
        $freeSpaceGBColor = "red"
        }
    Else {
        $freeSpaceGbColor = "green"
        }

    $freespace = "{0:N2}" -f $freespace
    Write-Host "$freeSpace" -foregroundcolor $freeSpaceGBColor -nonewline
    Write-Host "   | " -nonewline
    $Kolom6 = "$freeSpace" 

    $ServerDescription = $Server.description 
    Write-Host "$ServerDescription" -nonewline
    Write-Host "   | " -nonewline
    $Kolom7 = "$ServerDescription"

    #Uptime ophalen
    $Uptime = Get-Uptime($Server)
    $uptimecolor = "white"
    Write-Host "$Uptime" -foregroundcolor $uptimecolor
    $Kolom8 = "$Uptime"

    $Body +=  "<tr><td>$Kolom1</td><td>$Kolom2</td><td>$Kolom3</td><td>$Kolom4</td><td>$Kolom5</td><td>$Kolom6</td><td>$Kolom8</td></tr>"

}

$Body += "</table>"

ConvertTo-HTML -head $style -body $Body | set-content "C:\temp\test.htm"