2017-12-12 4 views
0

를 HTML로 ... 내가 원하는 PowerShell 스크립트 아래는 다음을 수행하는 데 사용할 있습니다출력 foreach 루프 여기 내 문제, 그래서

  1. 각각의 Hyper-V 클러스터 구성원을 당겨 (현재 29 X 서버 2016 노드)
  2. 각 노드에 ForEach 루프를 실행하여 Hyper-V 복제가 활성화 된 모든 VM을 가져옵니다.
  3. 모든 29 개의 출력을 표 형식의 단일 .html 파일로 결합하십시오.

    $Cluster = Get-ClusterNode -Cluster hv-cluster01.contoso.com 
    
    
    $a = "<style>" 
    $a = $a + "BODY{background-color:peachpuff;}" 
    $a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" 
    $a = $a + "TH{column-width: 200px;border-width: 1px;padding: 8px;border-style: solid;border-color: black;background-color:thistle}" 
    $a = $a + "TD{column-width: 200px;border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color:PaleGoldenrod;text-align: center}" 
    $a = $a + "</style>" 
    
    ForEach ($Node in $Cluster) 
    { 
    Get-VMReplication -ComputerName $Node | Select-Object VMName, State, Health, PrimaryServer | ConvertTo-HTML -head $a -body "<H2>DR Replication Status</H2>" | Out-File C:\Scripts\Test.htm 
    } 
    

    내 궁극적 인 목표는 하루에 2 ~ 3 번 실행되도록 예약 된 작업에이를 넣어, 그리고 Send-MailMessage을 사용하는 것입니다, 본문에 HTML 콘텐츠를 전송 : 여기에

코드입니다 내 팀과 다른 팀원들에게.

도움을 주셔서 감사합니다.

답변

0

코드에서 $ Cluster의 각 $ 노드에 대한 개체를 변환하여 출력합니다. 대신 모든 정보가 포함 된 최종 개체를 채우고이 정보를 변환하여 출력해야합니다.

변환 및 출력 파트를 루프 외부로 이동하면됩니다. 예를 들어 :

$Cluster = Get-ClusterNode -Cluster hv-cluster01.contoso.com 


$a = "<style>" 
$a = $a + "BODY{background-color:peachpuff;}" 
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" 
$a = $a + "TH{column-width: 200px;border-width: 1px;padding: 8px;border-style: solid;border-color: black;background-color:thistle}" 
$a = $a + "TD{column-width: 200px;border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color:PaleGoldenrod;text-align: center}" 
$a = $a + "</style>" 

$Report = ForEach ($Node in $Cluster) { 
    Get-VMReplication -ComputerName $Node | Select-Object VMName, State, Health, PrimaryServer 
} 

$Report | ConvertTo-HTML -head $a -body "<H2>DR Replication Status</H2>" | Out-File C:\Scripts\Test.htm 
+0

도움 주셔서 감사합니다. 그것은 html 파일로 출력하기에 완벽했습니다. 아래에 게시 할 다른 부분을 하나 추가했습니다. 너 내가 뭘 잘못하고 있는지 말해 줄 수있을거야. –

0

나는

내가 당겨 스크립트를 얻을 관리했습니다 ... 내가 할 노력했다의 나머지 부분을 수용하기 위해, 아주 조금 더 스크립트를 수정 한 HTML 파일의 내용을 전자 메일 메시지에 넣습니다. 내 문제는 일부 테이블 스타일 정보가 이메일로 전송되지 않는다는 것입니다. 특히 column-width 부분. 그래서 모든 테이블 엔트리들이 함께 뭉개집니다. 아래 참조 :

Remove-Item C:\Scripts\ReplicationHealth.htm 

$Cluster = Get-ClusterNode -Cluster hv-cluster01.contoso.com 

$a = "<style>" 
$a = $a + "BODY{background-color:LightGrey;}" 
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" 
$a = $a + "TH{column-width: 200px;border-width: 1px;padding: 8px;border-style: solid;border-color: black;background-color:DodgerBlue}" 
$a = $a + "TD{column-width: 200px;border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color:PapayaWhip;text-align: center}" 
$a = $a + "</style>" 

$Report = ForEach ($Node in $Cluster) { 
Get-VMReplication -ComputerName $Node | Select-Object VMName, State, Health, PrimaryServer 
} 

$time = Get-Date -Format G 

$Report | ConvertTo-HTML -head $a -body "<H2>Hyper-V Replication Status</H2>", $time | Out-File C:\Scripts\ReplicationHealth.htm 

$MailBody = Get-Content C:\Scripts\ReplicationHealth.htm -Raw 

Send-MailMessage -SmtpServer "SERVERIP" -From "[email protected]" -To "[email protected]" -Subject "Hyper-V Replication Status" -Body $MailBody -BodyAsHtml 

작은 도움이 더 좋을 것입니다! 미리 감사드립니다.