ehcm 0 Geschrieben 22. August 2016 Melden Teilen Geschrieben 22. August 2016 Hallo zusammen,folgender Powershellbefehl wird regelmäßig von unserem Monitoringsystem "PRTG" ausgeführt und funktioniert: #Öffnen der Exchange Management Shell und verbinden zum Exchange-Server $pssession = new-pssession -configurationname Microsoft.Exchange -connectionuri "http://MAILSERVER/Powershell/" -Authentication Kerberos $startsession = import-pssession -session $pssession -allowclobber -WarningAction SilentlyContinue -DisableNameChecking | out-null #Abruf des aktuellen Datums $D = get-date -format yyyy.MM.dd #Abfrage der empfangenen E-Mails $RS = get-messagetrackinglog -Recipients:alias@domain.com -EventID "RECEIVE" -Start "$D 00:00:00" -End "$D 23:59:59" -Resultsize unlimited | measure-object| Format-Wide count | out-string #Beenden der Powershellsession remove-pssession -session $pssession #Ausgabe des Ergebnisses Write-Output ("{0}:OK" -f $RS.Trim()) Nun habe ich den Befehl um "Get-TransportService" ergänzt, um alle Exchange-Server in die Zählung einzubeziehen: #Öffnen der Exchange Management Shell und verbinden zum Exchange-Server $pssession = new-pssession -configurationname Microsoft.Exchange -connectionuri "http://MAILSERVER/Powershell/" -Authentication Kerberos $startsession = import-pssession -session $pssession -allowclobber -WarningAction SilentlyContinue -DisableNameChecking | out-null #Abruf des aktuellen Datums $D = get-date -format yyyy.MM.dd #Abfrage der Empfangenen E-Mails $RS = Get-TransportService | get-messagetrackinglog -Recipients:alias@domain.com -EventID "RECEIVE" -Start "$D 00:00:00" -End "$D 23:59:59" -Resultsize unlimited | measure-object| Format-Wide count | out-string #Beenden der Powershellsession remove-pssession -session $pssession #Ausgabe des Ergebnisses Write-Output ("{0}:OK" -f $RS.Trim()) Jetzt erhalte ich folgende Fehlermeldung: Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren. + CategoryInfo : InvalidArgument: (Exchange2010:PSObject) [Get-MessageTrackingLog], ParameterBindingException + FullyQualifiedErrorId : InputObjectNotBound,Get-MessageTrackingLog + PSComputerName : MAILSERVER Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren. + CategoryInfo : InvalidArgument: (Exchange2013-1:PSObject) [Get-MessageTrackingLog], ParameterBindingException + FullyQualifiedErrorId : InputObjectNotBound,Get-MessageTrackingLog + PSComputerName : MAILSERVER Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren. + CategoryInfo : InvalidArgument: (Exchange2013-2:PSObject) [Get-MessageTrackingLog], ParameterBindingException + FullyQualifiedErrorId : InputObjectNotBound,Get-MessageTrackingLog + PSComputerName : MAILSERVER 0:OK Allerdings nur, wenn ich über die Powershell die Exchange Management Shell starte.Wenn ich den Befehl direkt in die Exchange Management Shell eingebe erhalte ich die gewünschte Rückmeldung. $D = get-date -format yyyy.MM.dd $RS = Get-TransportService | get-messagetrackinglog -Recipients:alias@domain.com -EventID "RECEIVE" -Start "$D 00:00:00" -End "$D 23:59:59" -Resultsize unlimited | measure-object| Format-Wide count | out-string Write-Output ("{0}:OK" -f $RS.Trim()) 123:OK Wie kann ich dieses Problem lösen? :rolleyes:Viele Grüßeehcm :cool: Zitieren Link zu diesem Kommentar
ehcm 0 Geschrieben 25. August 2016 Autor Melden Teilen Geschrieben 25. August 2016 Hallo zusammen, ich konnte das Problem leider immer noch nicht lösen. Auch das ersetzen von "Get-TransportService" durch "Get-ExchangeServer" oder "Get-MailboxServer" hat keine Verbesserung in der Powershell gebracht (in der Exchange Management Shell funktionieren sie). Da es scheinbar nur an dem Pipe nach dem "Get-TransportService" scheitert, würde ich dieses gerne umgehen. Gibt es eine Möglichkeit mein Skript umzugestalten, dass ich dieses Pipe nicht benötige? Viele Grüße ehcm Zitieren Link zu diesem Kommentar
Beste Lösung ehcm 0 Geschrieben 29. August 2016 Autor Beste Lösung Melden Teilen Geschrieben 29. August 2016 Hallo zusammen, ich habe das Problem nun umgangen, indem ich jeden Server einzeln abfrage und anschließend die Ergebnisse addiere. Ist sicher nicht die sauberste Lösung, aber sie funktioniert. ;) #Öffnen der Exchange Management Shell und verbinden zum Exchange-Server $pssession = new-pssession -configurationname Microsoft.Exchange -connectionuri "http://MAILSERVER/Powershell/" -Authentication Kerberos $startsession = import-pssession -session $pssession -allowclobber -WarningAction SilentlyContinue -DisableNameChecking | out-null #Abruf des aktuellen Datums $D = get-date -format yyyy.MM.dd #Abfrage der empfangenen E-Mails $rs1 = get-messagetrackinglog -Recipients:alias@domain.com -server MAILSERVER1 -EventID "RECEIVE" -Start "$D 00:00:00" -End "$D 23:59:59" -Resultsize unlimited | measure-object| Format-Wide count | out-string $rs2 = get-messagetrackinglog -Recipients:alias@domain.com -server MAILSERVER2 -EventID "RECEIVE" -Start "$D 00:00:00" -End "$D 23:59:59" -Resultsize unlimited | measure-object| Format-Wide count | out-string #Beenden der Powershellsession remove-pssession -session $pssession #Berechnung der gesamten empfangenen E-Mails $rs = [int] $rs1 +[int] $rs2 $rs = $rs | out-string #Ausgabe des Ergebnisses Write-Output ("{0}:OK" -f $rs.Trim()) Viele Grüße ehcm Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.