Exchange Remote Powershell bekommt sporadisch "Kaputt" Zustand
Ich versuche erhalten den status aller TransportAgents von einem remote-Exchange-Server über die Windows Powershell.
Ich sporadisch eine Fehlermeldung erhalten, dass die The session state is Broken
. Sobald es kaputt ist brauche ich eine neue Sitzung zu erstellen
Unten eine Liste der Befehle, die ich benutze (in der richtigen Reihenfolge)
# Build the PSSession for Exchange
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<SERVER>/PowerShell/ -Authentication Default
# Invoke the command 'Get-TransportAgent' on the remote PSSession
Invoke-Command $Session {Get-TransportAgent}
# Result when there is NO ERROR
Identity Enabled Priority PSComputerName
-------- ------- -------- --------------
Transport Rule Agent True 1 <SERVER>
Malware Agent True 2 <SERVER>
Text Messaging Routing Agent True 3 <SERVER>
Text Messaging Delivery Agent True 4 <SERVER>
Wenn ich wiederholen Sie den Befehl Invoke-Command $Session {Get-TransportAgent}
folgende Fehler aufgetreten sporadisch:
Invoke-Command : Because the session state for session Session9, <GUID-REMOVED>, <SERVER> is not equal to Open, you cannot run a command in the session. The session state is Broken. At line:1 char:1
UPDATE
Nach dem hinzufügen der IdleTimeout in der SessionOption-ich bin receving die folgende Fehlermeldung gefolgt von Sitzung unterbrochen
Invoke-Command $Session {Get-TransportAgent}
Starting a command on the remote server failed with the following error
message : The I/O operation has been aborted because of either a thread exit or an application request. For more information, see the about_Remote_Troubleshooting
Help topic.
+ CategoryInfo : OperationStopped: (<SERVER>:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : JobFailure
+ PSComputerName : <SERVER>
Frage: Warum tritt der Fehler Auftritt und wie man dieses Problem lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird die Sitzung wahrscheinlich mal aus. Zu beheben, erstellen Sie eine
PSSessionOption
Objekt mit erhöhter Sitzungs-timeout-Werts, die Sie dann versorgen zuNew-PSSession
cmdlet. Der Standard-timeout 60000 Millisekunden (1 minute), die möglicherweise ziemlich klein, wenn Sie eine umfangreiche Skript enthält asynchrone Anfragen oder funktioniert einfach wirklich lange.Diese
SessionOption
Objekt machen Ihren$session
offen bleiben für 10 Minuten nach der letzten Ausführung des Befehls.EDIT: Nach Lektüre der Handbücher auf die Powershell-remote-session-Staaten, habe ich entdeckt, dass
Broken
ist ein abnormaler Staat, der nicht aufgrund von Leerlauf oder andere lokale Maßnahmen, sondern ist eher ein Indiz für den Verlust der Verbindung zwischen den beteiligten hosts, oder Probleme beim ausführen von "wsmprovhost" auf der server-Seite. Sie untersuchen sollten, wenn Sie Ihr OS und Netzwerk gesund ist. Ein Skript kann solche Fehler immer noch, es zu tun, sollten Sie überprüfen, session state, und wenn es nichtOpened
, öffnen Sie die Sitzung.Immer noch, wenn die Wiederherstellung versuchen würde, werfen Sie einen timeout, dann aus der Patsche helfen, in Ihrem Skript, wie können Sie eigentlich nicht mehr remoting ohne eine Verbindung.
$session.state
ist nichtopen
Sie möglicherweise anweisen, die Skripts zu erstellen session-Objekt.