HTML Fragment wird nicht ausgegeben
Guten abend zusammen.
Ich habe ein seltsames Problem.
In meinem Skript vergleiche ich zwei arrays nach unterschiedlichen Namen.
Die Namen welche nicht im Array a vorkommen werden dann in Variable c (auch ein array)
gespeichert.
Dies will ich dann in ein <td>hier kommt die variable</td> reingeschrieben haben.
Leider Passiert bei diesem Vorgang nichts.
Ich konvertiere das Array mit folgendem Befehl
die Ausgabe welche ich dann bekomme (passt) auch
nur wird dies niht in die HTML Tabelle gespeichert.
mein code Lautet:
Wäre echt nett wenn sich das jemand anschauen würde
Ich habe ein seltsames Problem.
In meinem Skript vergleiche ich zwei arrays nach unterschiedlichen Namen.
Die Namen welche nicht im Array a vorkommen werden dann in Variable c (auch ein array)
gespeichert.
Dies will ich dann in ein <td>hier kommt die variable</td> reingeschrieben haben.
Leider Passiert bei diesem Vorgang nichts.
Ich konvertiere das Array mit folgendem Befehl
| convertto-html -Fragment
die Ausgabe welche ich dann bekomme (passt) auch
<tr><td>NBAPS99</td></tr>
<tr><td>NBAPS135</td></tr>
<tr><td>NBAPS101</td></tr>
<tr><td>NBAPS176</td></tr>
<tr><td>NBAPS185</td></tr>
nur wird dies niht in die HTML Tabelle gespeichert.
mein code Lautet:
Remove-PSDrive spwodb
$Date = Get-Date -Format "yyMMdd";
$Startzeit = Get-Date -Format "HHmmss";
$Mailsubject = "Auswertung RoadWarriors " + $Date;
$Filename = "aps_export_devices_" + $Date + ".html";
$Filename_csv = "aps_export_devices_" + $Date + ".csv";
#$Folder_rsync = "\\apsv254\c$\Program Files (x86)\ICW\";
$Data_spwo = @();
$Data_rsync=@();
$Data_rsync_compared=@();
$Data_spwo_compared=@();
#Rsync Anfang
# Lese das Log ein, suche nach NBAPS und erstelle ein neues Objekt in $Data_rsync
$logfile = "C:\Users\admrd\Desktop\test\bat\rsyncd.log"
$content = gc $logfile
$logins = @();
foreach($line in $content){
if ($line -cmatch "connect from NBAPS[\d]+"){
$arrLine = $line.Split(" ")
$logins += New-Object PSObject -Property @{"Name"=$arrLine[5];"Date"=$arrLine;"Time"=$arrLine[1]}
}
}
$Data_rsync = $logins | ?{(get-date $_.Date) -gt (get-date).AddDays(-21)} | sort Name,Date,Time -Descending | group Name | %{$_.Group} | select Name,Date,Time
# Teile die Daten aus $Data_Rsync in einzelne Spalten auf.
$Rsync_Name = @();
$Rsync_Zeit = @();
$Rsync_Datum = @();
foreach($row in $Data_rsync)
{
$Rsync_Name += $row.Name;
$Rsync_Zeit += $row.Time;
$Rsync_Datum += $row.Date;
}
#Vergleiche die beiden Variablen und gebe die unterschiede aus.
$Data_rsync_compared = Compare-Object -ReferenceObject $Data_rsync -DifferenceObject $Output -Property Name -PassThru | ?{$_.Sideindicator -eq "=>"}| select Name
#Rsync_name-string in eine abgeschnittene Tabelle wandeln
#$string = $Rsync_Name
#$chars = $string.ToCharArray()
#[int]$i = -1
#$computers = @()
#foreach ($c in $chars){
# if(($c -eq 'N') -or ($c -eq 'n')){
# $i++
# $computers += $c
# }else{
# $computers[$i] += $c
## }
#}
#Rsync Komplett!!!
#SPWO RESULT
import-module SQLite;
new-psdrive -name spwodb -psp SQLite -root "Data Source=C:\Users\admrd\Desktop\test\bat\spiceworks_prod.db";
$spwo_result = for ($n=13;$n -le 344;$n++)
{
$filter = "name='nbaps{0}'" -f $n;
ls spwodb:/devices -filter $filter | Select name, updated_on
};
#Vergleiche die beiden Variablen und gebe die unterschiede aus.
$Data_spwo_Compared=Compare-Object -ReferenceObject $Data_spwo -DifferenceObject $Output -Property Name -PassThru | ?{$_.Sideindicator -eq "=>"}| select Name
$Data_spwo += $spwo_result;
$spwo_name = @();
$spwo_update_on = @();
foreach($row in $Data_spwo)
{
$spwo_name += $row.name;
$spwo_update_on += $row.updated_on;
}
Compare-Object -ReferenceObject $Data_spwo -DifferenceObject $Output -Property Client -PassThru | ?{$_.Sideindicator -eq "=>"}| select Client
[string]$Data_rsync_compared | ConvertTo-Html -Fragment
$Data_spwo_compared | ConvertTo-Html -Fragment
$spwo_name | ConvertTo-Html -Fragment
$spwo_update_on | ConvertTo-Html -Fragment
$Rsync_Name | ConvertTo-Html -Fragment
$Rsync_Zeit | ConvertTo-Html -Fragment
$Rsync_Datum | ConvertTo-Html -Fragment
$html = @"
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title> Auswertung </title>
</head>
<body>
</table>
<table width="500" height="260" border="0" align="center">
<tr>
<td>
<div align="left">
<div align="left"><img src ="C:/Users/admrd/Desktop/test/bat/Logo/apsolut_Firmenlogo_Farbe.jpg"></div>
</td>
</tr>
</table align="center">
<table width="500" height="260" border="1" align="center">
<tr>
<td width="230" colspan="4" style="background-color:#FFCC00"><div align="center"><b> Folgende Rechner haben sich in den letzten X Tagen nicht gemeldet</td></div></b>
</tr>
<tr>
<td width="115" colspan="2" style="background-color:#FFCC00"><div align="center"><b> nicht gemeldet am Rsync</td></div></b>
<td width="115" colspan="2" style="background-color:#FFCC00"><div align="center"><b> nicht gemeldet am Spiceworks</td></div></b>
</tr>
<tr>
$Data_Rsync_compared
<td width="20">$($Data_rsync_compared)</td>
<td width="50"></td>
<td width="40">$($rsync_Zeit)</td>
<td width="50"></td>
<td width="30">$($rsync_Datum)</td>
</tr>
<tr>
<td width="20">$($Data_rsync_compared)Rsync</td>
<td width="50"></td>
<td width="50"></td>
<td width="40">$($Data_spwo_compared)SPWO</td>
</tr>
</table>
<table align="center" border="1" border-width: ;border-style: solid;border-collapse: collapse;>
<tr>
<td width="230" colspan="6" style="background-color:#FFCC00"><div align="center"><b> Letztes Meldedatum am Rsync</td></div></b>
</tr>
<tr>
<td width="20">$($rsync_name)</td>
<td width="50"></td>
<td width="40">$($rsync_Zeit)</td>
<td width="50"></td>
<td width="30">$($rsync_Datum)</td>
</tr>
</table>
<table width="500" height="260" border="1" align="center">
<tr>
<td width="230" colspan="2" style="background-color:#FFCC00"><div align="center"><b> Letztes Meldedatum am Spiceworks</td></div></b>
</tr>
<tr>
<td width="10">$($spwo_name)</td>
<td width="10">$($spwo_update_on)</td>
</tr>
</table>
</html>
"@
$html | Out-File $Filename
#$Data_rsync += $rsync_result;
#$Data_spwo += $spwo_result;
#$Data = $rsync_result + $spwo_result
#$Data | ConvertTo-HTML -head $a | Out-File C:\Users\admrd\Desktop\test\bat\test.htm #Export-CSV -Path $Filename -NoTypeInformation -Delimiter ",";
#$spwo_result | Export-CSV -Path $Filename -NoTypeInformation -Delimiter "," ;
#$rsync_result | Export-CSV -Path $Filename -NoTypeInformation -Delimiter "," ;
#$Filename | ConvertTo-HTML -head $a | Out-File C:\Users\admrd\Desktop\test\bat\test.htm
Send-MailMessage -From "IT-Admin@ap-solut.com" -Subject $Mailsubject -To "Roman.Dzichel@ap-solut.com" -Attachment $Filename -SmtpServer "10.33.50.5"
$Endzeit = Get-Date -Format "HHmmss";
$Laufzeit = $Endzeit-$Startzeit;
$Ausgabe = "Das Skript lief für " + $Laufzeit + " Sekunden.";
echo $Ausgabe;
Remove-PSDrive spwodb
Wäre echt nett wenn sich das jemand anschauen würde
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 224064
Url: https://administrator.de/contentid/224064
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
13 Kommentare
Neuester Kommentar
Tach auch,
http://validator.w3.org/#validate_by_input
Und außerdem geht so ein Konstrukt nicht:
also eine Row innerhalb eines TD-Tags. Wenn das gewünscht ist musst du das ganze in eine weitere Tabelle in dieser Zelle packen:
Grüße Uwe
Ich habe ein seltsames Problem.
find ich nicht seltsam, denn ich würde dir an deiner Stelle raten den HTML-Code nochmal ganz genau zu überprüfen, dann wirst du einen Haufen Fehler finden !http://validator.w3.org/#validate_by_input
Und außerdem geht so ein Konstrukt nicht:
<td>
<tr><td>NBAPS99</td></tr>
<tr><td>NBAPS135</td></tr>
<tr><td>NBAPS101</td></tr>
<tr><td>NBAPS176</td></tr>
<tr><td>NBAPS185</td></tr>
</td>
<td>
<table>
<tr><td>NBAPS99</td></tr>
<tr><td>NBAPS135</td></tr>
<tr><td>NBAPS101</td></tr>
<tr><td>NBAPS176</td></tr>
<tr><td>NBAPS185</td></tr>
</table>
</td>
Grüße Uwe
klar !!
hier wandelst du die Variablen in HTML-Fragmente für die Ausgabe in der Konsole, aber du speicherst diesen Inhalt damit nicht in den jeweiligen Variablen
du musst die HTML-Ausgabe wieder den Variablen zuweisen, du schreibst also den obigen Abschnitt so:
und passt die Variablennamen in deinem HTML-Code entsprechend an.
das ganze hatten wir doch schonmal, irgendwie hast du das Prinzip noch nicht verstanden, aber wie gesagt das sind Grundlagen ...
Grüße Uwe
hier wandelst du die Variablen in HTML-Fragmente für die Ausgabe in der Konsole, aber du speicherst diesen Inhalt damit nicht in den jeweiligen Variablen
[string]$Data_rsync_compared | ConvertTo-Html -Fragment
$Data_spwo_compared | ConvertTo-Html -Fragment
$spwo_name | ConvertTo-Html -Fragment
$spwo_update_on | ConvertTo-Html -Fragment
$Rsync_Name | ConvertTo-Html -Fragment
$Rsync_Zeit | ConvertTo-Html -Fragment
$Rsync_Datum | ConvertTo-Html -Fragment
$Data_rsync_compared_html = [string]$Data_rsync_compared | ConvertTo-Html -Fragment
$Data_spwo_compared_html = $Data_spwo_compared | ConvertTo-Html -Fragment
$spwo_name_html = $spwo_name | ConvertTo-Html -Fragment
$spwo_update_on_html = $spwo_update_on | ConvertTo-Html -Fragment
$Rsync_Name_html = $Rsync_Name | ConvertTo-Html -Fragment
$Rsync_Zeit_html = $Rsync_Zeit | ConvertTo-Html -Fragment
$Rsync_Datum_html = $Rsync_Datum | ConvertTo-Html -Fragment
das ganze hatten wir doch schonmal, irgendwie hast du das Prinzip noch nicht verstanden, aber wie gesagt das sind Grundlagen ...
Grüße Uwe
Zitat von @Dpole86:
ich wiederhole mich erneut , so wird die Ausgabe nur an die Konsole geleitet und nicht in den Variablen gespeichert, s.o.
> $Data_rsync_compared | ConvertTo-Html -Fragment
> $Data_spwo_compared | ConvertTo-Html -Fragment
>
Tut mir leid, aber das führt hier zu nichts...
Klinke mich gepflegt aus....
Grüße Uwe
Das Ergebnis deines obigen befehls ergibt ein "Array aus Objekten", und das Convertto-HTML konvertiert diese Objekte in einen HTML-String. Etwas ähnliches machen z.B. auch die CMDLets format-table und format-list, d.h. diese machen aus Objekten formatierte Strings. Deshalb sollte man diese tunlichst am Ende einer Pipeline verwenden, da ansonsten die schönen Objekte mit ihren Methoden und Eigenschaften flöten gehen.
Ein hilfreiches CMDlet was dich besser verstehen lässt woraus ein Objekt oder Variable besteht ist
Beispiel:
Hoffe das hilft dir beim verstehen ....
Grüße Uwe
Ein hilfreiches CMDlet was dich besser verstehen lässt woraus ein Objekt oder Variable besteht ist
get-member
. Wenn du ein Objekt daran via Pipeline übergibst gibt dir die Powershell aus, welcher Typ das Objekt ist, und wenn es ein Objekt ist, alle möglichen Eigenschaften und Methoden dessen.Beispiel:
$deineVariable | get-member
Grüße Uwe
das ist aber der Standard von convertto-html -fragment. Wenn du das nicht willst musst du die Strings manuell zusammenbauen, als was willst du diese denn haben ?? Nur die Namen als reine Strings ?, das geht so :
$deinePlainTextListe = $Data_rsync_compared | select -ExpandProperty Name