none
Properties nebeneinander und per Mail verschicken, String, Verständnisfrage

    Frage

  • moin zusammen,

    ich möchte aus dem Eventlog Errors per Mail verschicken.

    damit die Properties nebeneinander verschickt werden können muss ich sie in einen String umwandeln.

    vom Verständnis dachte ich es geht so

    $a = @{'Time'=$event.TimeGenerated; 'source'=$event.source; 'Message'=$event.Message} $a # oder so $x = $Event.timeGenerated + $Event.source #oder so $x = ($Event.TimieGenerated).tostring() + ($Event.Source).tostring()

    # oder so

    $x = "$Event.TimeGenerated" + "$Event.Source"


    ich habe ein funktionierendes Beispiel gefunden aber ich denke so macht man es eher selten

    $EmailBody = $event | ft -Property source,timegenerated,message | Out-String

    wie würdet ihr den String zusammenbauen? damit ich ähnliches Beispiel erreiche?

     
    Source         TimeGenerated       Message                                                                                              
    ------         -------------       -------                                                                                              
    SecurityCenter 06.04.2018 12:14:04 Der Symantec Endpoint Protection-Status wurde erfolgreich auf SECURITY_PRODUCT_STATE_ON aktualisiert.
    SecurityCenter 06.04.2018 12:09:04 Der Symantec Endpoint Protection-Status wurde erfolgreich auf SECURITY_PRODUCT_STATE_ON aktualisiert.
    


    Chris


    Freitag, 6. April 2018 11:14

Antworten

  • Da das "+" sowohl für eine Berechnung als auch der Verkettung von Strings dient, kann es bei der Verwendung ggf. zu unerwünschten Ergebnissen kommen.
    Je nach Inhalt wird erst gerechnet und dann ein String daraus.
    Somit ist es dann sicher, wenn man Nicht-String-Variablen mit dem ToString() sicher in einen String wandelt.

    Ansonsten kann man auch [String]::Format() verwenden, da hat man bessere Entfaltungsmöglichkeiten.

    • Als Antwort markiert -- Chris -- Freitag, 6. April 2018 11:31
    Freitag, 6. April 2018 11:30
  • Wenn's "schick" aussehen soll, könntest Du auch eine HTML formatierte Mail senden. Dazu brauchst Du ConvertTo-Html und den Switch  -BodyAsHtml für Dein Send-MailMessage. Dann sieht's auch bei ein paar mehr Events als Tabelle noch gut aus.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    • Als Antwort markiert -- Chris -- Freitag, 6. April 2018 11:59
    Freitag, 6. April 2018 11:35
  • Generell gilt:

    [String]::Format("FormatString", Arg0, Arg1, Arg2, ..., ArgN)

    FormatString = "{0} {1} ... {n}"

    In den geschweiften Klammern gibt man die Nummer des Arguments sowie ggf. ein Format an.

    Insgesamt nachzulesen in der .Net-Dokumentation (da die PS .Net-Funktionen aufruft).

    https://msdn.microsoft.com/de-de/library/system.string.format(v=vs.110).aspx
    https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-numeric-format-strings
    https://docs.microsoft.com/de-de/dotnet/standard/base-types/standard-date-and-time-format-strings

    • Als Antwort markiert -- Chris -- Freitag, 6. April 2018 11:58
    Freitag, 6. April 2018 11:57

Alle Antworten

  • Da das "+" sowohl für eine Berechnung als auch der Verkettung von Strings dient, kann es bei der Verwendung ggf. zu unerwünschten Ergebnissen kommen.
    Je nach Inhalt wird erst gerechnet und dann ein String daraus.
    Somit ist es dann sicher, wenn man Nicht-String-Variablen mit dem ToString() sicher in einen String wandelt.

    Ansonsten kann man auch [String]::Format() verwenden, da hat man bessere Entfaltungsmöglichkeiten.

    • Als Antwort markiert -- Chris -- Freitag, 6. April 2018 11:31
    Freitag, 6. April 2018 11:30
  • sorry wenn ich nochmals nachfrage (bin nur Gelegenheits Powersheller)

    wie wäre dann die Syntax in meinem Beispiel bei [String]::Format()


    Chris

    Freitag, 6. April 2018 11:33
  • Wenn's "schick" aussehen soll, könntest Du auch eine HTML formatierte Mail senden. Dazu brauchst Du ConvertTo-Html und den Switch  -BodyAsHtml für Dein Send-MailMessage. Dann sieht's auch bei ein paar mehr Events als Tabelle noch gut aus.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    • Als Antwort markiert -- Chris -- Freitag, 6. April 2018 11:59
    Freitag, 6. April 2018 11:35
  • Generell gilt:

    [String]::Format("FormatString", Arg0, Arg1, Arg2, ..., ArgN)

    FormatString = "{0} {1} ... {n}"

    In den geschweiften Klammern gibt man die Nummer des Arguments sowie ggf. ein Format an.

    Insgesamt nachzulesen in der .Net-Dokumentation (da die PS .Net-Funktionen aufruft).

    https://msdn.microsoft.com/de-de/library/system.string.format(v=vs.110).aspx
    https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-numeric-format-strings
    https://docs.microsoft.com/de-de/dotnet/standard/base-types/standard-date-and-time-format-strings

    • Als Antwort markiert -- Chris -- Freitag, 6. April 2018 11:58
    Freitag, 6. April 2018 11:57
  • Generell gilt:

    [String]::Format("FormatString", Arg0, Arg1, Arg2, ..., ArgN)

    FormatString = "{0} {1} ... {n}"

    In den geschweiften Klammern gibt man die Nummer des Arguments sowie ggf. ein Format an.

    bzw. auch

    "{0} {1} ... {n}" -f $arg0, $arg1, $arg2, ..., $argN
    geschrieben.


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    Freitag, 6. April 2018 12:11