2015-11-20 4 views
0

Я новичок в powershell, и я не знаю много чего. Сценарий им с помощью атм:гиперссылка в скрипте powershell в таблице html

$webfile = "\\mywebserver\prn$\index.html" 
$mylog = ("\\mywebserver\prn$\log\monitorprinterqueues_" + (Get-Date).month + (Get-Date).day + (Get-Date).year + ".log") 

if ((Test-Path $mylog) -ne $true) {#check for new log 
    $myheader = "datetime*owner*jobstatus*queuestatus*totalpages*size*server*queue*document" 
    $myheader| out-file -FilePath $mylog -append -noclobber 
}#check for new log 

function mystatus ($thisstatus) { 
    switch ($thisstatus) { 
     "0" { $mytext = "Ok" } 
     "1" { $mytext = "Other" } 
     "2" { $mytext = "Paused" } 
     "3" { $mytext = "Low Paper" } 
     "4" { $mytext = "No Paper" } 
     "5" { $mytext = "Low Toner" } 
     "6" { $mytext = "No Toner" } 
     "7" { $mytext = "Door Open" } 
     "8" { $mytext = "Paper Jam" } 
     "9" { $mytext = "Offline" } 
     "10" { $mytext = "Output Bin Full" } 
     "11" { $mytext = "Paper Problem" } 
     "12" { $mytext = "Cannot Print Page" } 
     "13" { $mytext = "User Intervention Required" } 
     "14" { $mytext = "Out of Memory" } 
     "15" { $mytext = "Server Unknown" } 
     default {$mytext = "Error (D)" } 
    } 
return ($mytext) 
} 

clear 
$myservers = @() 
$myservers = ("myprintserver1","myprintserver2") 

#exporttoweb 
Remove-Item ($webfile) 
$head = "<style>" 
$head = $head + "BODY{background-color:#9FAEB5;}" 
$head = $head + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" 
$head = $head + "TH{border-width: 1px;padding: 4px;border-style: solid;border-color: black;background-color:#999999}" 
$head = $head + "TD{border-width: 1px;padding: 4px;border-style: solid;border-color: black;background-color:#CCCCCC}" 
$head = $head + "</style>" 


foreach ($thisserver in $myservers) { 
    $prnstats = gwmi win32_printer -ComputerName $thisserver | %{ $prname = $_.Name; $prtname = $_.portname; $srv = $_.systemname; $status = $_.detectederrorstate; $location = $_.location; gwmi win32_tcpipprinterport -computername $thisserver | where { $_.Name -eq $prtname } | select @{name="Name";expression={$prname}}, @{name="Server";expression={$srv}}, @{name="Status";expression={$status}}, @{name="Location";expression={$location}}, hostaddress } 
    $printserver = get-wmiobject "Win32_PrintJob" -computername $thisserver | where { ($_.jobstatus -ne $null) -and ($_.jobstatus -ne "") -and ($_.jobstatus -ne "Printing") -and ($_.jobstatus -ne "Spooling") -and ($_.jobstatus -ne "Spooling | Printing") } 
    if ((Test-Path -Path $webfile) -ne $true) {#writehead top 
     $prnstats | select Name, Server, @{name="Status";Expression={mystatus $_.Status }}, Location, @{name="Web-Interface";Expression={$_.hostaddress }} | ConvertTo-HTML -head $head -body "<H2>Printer Status Site</H2>" | Out-File $webfile 
    } else { 
     $prnstats | select Name, Server, @{name="Status";Expression={mystatus $_.Status }}, Location, @{name="Web-Interface";Expression={$_.hostaddress }} | ConvertTo-HTML | Out-File $webfile -Append 
    } 
    foreach ($printjob in $printserver) { 
     if (($printjob.Jobstatus -ne $null) -and ($printjob.Jobstatus -ne "")){ 
     switch ($printjob.Jobstatus) { 

      default { 
       $prn = $prnstats | where { $_.name -eq ("" + $printjob.Name.split(',')[0]) } 
       $thisstr = "" + $printjob.TimeSubmitted + "*" + $printjob.Owner + "*" + $printjob.JobStatus + "*" + (mystatus $prn.DetectedErrorState) + "*" + $printjob.TotalPages + "*" + $printjob.Size + "*" + $thisserver + "*" + $printjob.Name + "*" + $printjob.Document 
       $thisstr | out-file -FilePath $mylog -append -noclobber 
       $printjob.Delete() 
      }#end default 
     }#end switch 
     }#end if 
    #$printjob = $null 
    }#jobs 
    $printserver = $null 
    #$printjob = $null 
} #servers 

В результате HTML-таблица html-table. Необходимо, чтобы все имена хостов были гиперссылками. Чтобы получить доступ к веб-интерфейсу принтера как можно скорее. Как я могу это сделать?

ответ

2

Изменение Web-Interface вычисляется выражение свойства от

@{name="Web-Interface";Expression={$_.hostaddress }} 

к фактической линии связи (<a href='url'>link text</a>)

@{name="Web-Interface";Expression={"<a href='http://{0}/'>{0}</a>" -f $_.hostaddress }} 
+0

Тай, это сработало, но теперь у меня другая проблема. Кажется, что powershell преобразует специальные символы. И я вижу только html-код ... В html-файле символы «<" and ">» в начале и конце анкеров преобразуются в «<» и «>» < a href = 'http: // ATS-Xerox-5675-1 .printers.rosenergo.com/'> кроме Как я могу преобразовать или заменить их обратно в html? –

0

Это проблема атм img кажется якоря разбивается на PowerShell. В index.html я вижу код, как

<tr><td>6040.1.pcl6</td><td>VM-ATS-PRN-X64</td><td>Ok</td><td>Комната 5.17</td><td>&lt;a href='http://ats-cm6040-mfp-1.printers.rosenergo.com/'&gt;ats-cm6040-mfp-1.printers.rosenergo.com&lt;/a&gt;</td></tr> 
<tr><td>6040.1.ps</td><td>VM-ATS-PRN-X64</td><td>Ok</td><td>Комната 5.17</td><td>&lt;a href='http://ats-cm6040-mfp-1.printers.rosenergo.com/'&gt;ats-cm6040-mfp-1.printers.rosenergo.com&lt;/a&gt;</td></tr> 

&lt; и &gt; был < и > в оригинале. Как я могу их заменить?

0

Полученный раствор путем добавления Foreach

ConvertTo-HTML -head $head -body "<H2>Printer Status Site</H2>" | foreach {$_.replace("&lt;","<").replace("&gt;",">")} | Out-File $webfile 

отлично работает в настоящее время.

Смежные вопросы