2011-09-22 4 views
0

원격 서버에서 실행중인 IIS 작업자 프로세스를 모두 포착하고 진단 정보 (appppolname, cpu, 가상 메모리 등)를 반환하는 PowerShell 스크립트를 작성했습니다. 그런 다음 HTML로 변환되어 사용자에게 표시됩니다.Powershell에서 HTML 출력에 링크 추가

$server = Read-Host Enter server name... 

if (!(test-connection -computername $server -quiet)) 
{ 
Write-Host $server is not pingable, does not exist, or timed out. Please try a different server. 
} 

else 
{ 
$command = 
{add-pssnapin WebAdministration 

function get-iiswp([string]$name="*") 
{ 

    $list = get-process w3wp -ea SilentlyContinue 
    if ($error) 
    { 

Write-Host There are no IIS worker processes currently running. Error Message: $error 

    } 
     else 
     { 
      foreach($p in $list) 
       { 
       $filter = "Handle='" + $p.Id + "'" 
       $wmip = get-WmiObject Win32_Process -filter $filter 

       if($wmip.CommandLine -match "-ap `"(.+)`"") 
        { 
         $appName = $matches[1] 
         $p | add-member NoteProperty AppPoolName $appName 
        } 
       } 
    $list | where { $_.AppPoolName -like $name } 
    } 
} 

get-iiswp | select-object -property * 
} 


invoke-command -computername $server -scriptblock $command | ConvertTo-HTML ID, AppPoolName, @{Label="CPU(s)";Expression={if ($_.CPU -ne $()) {$_.CPU.ToString("N")}}}, @{Label="Virtual Memory";Expression={[int]($_.VM/1MB)}}, @{Label="Physical Memory";Expression={[int]($_.WS/1024)}} | Out-file D:/test.html 

} 

나는 그것이 링크 자체 (예. http://powershell.com/requests.ps1x?PID= $ PID & AppPoolName을 내 AppPoolName을하고 PID를 사용하는 것이 어디에 링크로 테이블의 AppPoolName을 출력을 변환하는 HTML 출력을 포맷하는 방법을 찾고 있어요 =

중 하나가 어떤 생각이나 해결하고 올바른 방향으로 날 지점 수있는 아이디어가있는 경우 $ AppPoolName을

가이 많이 주시면 감사하겠습니다.

감사합니다!

-------- ---최신 정보---- ---------------

다음 예제 출력 :

<tr><tr><tr> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>HTML TABLE</title> 
</head><body> 
<h2>IIS Worker Process Diagnostic</h2> 
<table> 
<colgroup> 
<col/> 
<col/> 
<col/> 
<col/> 
<col/> 
</colgroup> 
<tr><th>ID</th><th>AppPoolName</th><th>CPU(s)</th><th>Virtual Memory</th><th>Physical Memory</th></tr> 
<tr><td>3820</td><td>AppPool1</td><td>4.92</td><td>355</td><td>74200</td></tr> 
<tr><td>4108</td><td>AppPool2</td><td>0.23</td><td>106</td><td>21380</td></tr> 
<tr><td>4940</td><td>AppPool3</td><td>0.20</td><td>590</td><td>39444</td></tr> 
<tr><td>7244</td><td>AppPool4</td><td>0.33</td><td>596</td><td>42556</td></tr> 
</table> 
</body></html> 

답변

1

난 당신이와 함께 (를 ConvertTo-HTML로) AppPoolName을을 대체 할 수 있다고 생각 ... 그냥 날의 맨 머리와 테스트하지 떨어져있어

@{Label="AppPoolName";Expression={ '<a href="http://powershell.com/requests.ps1x?PID=$($_.PID)&AppPoolName=$($_.AppPoolName)">$($_.AppPoolName)</a>' }} 

... :-)

+0

꼽은, 당신은 그 일 것이라고 생각한다. 이 스크립트가 PowerShell ASP (PS1X)에서 실행되면 %> 및 <%와 함께 HTML을 삽입해야합니다. 이 매개 변수 내에서 HTML 링크를 입력하면 HTML 변환 표 위의 링크 (올바른 경우에도 있음)가 반환됩니다. – gp80586

+0

나는 이해한다 - 당신은 스크립트의 예를 게시하고 출력 할 수 있습니까? – Matt

+0

위에 게시했습니다. – gp80586