As a follow up from my last post, here’s a simple extension method to forcibly restore the default trace listener every time you invoke an AppFabric Caching Administration Management cmdlet. It’s not the prettiest code, but it’s functional:
public static class PowershellExtensions | |
{ | |
public static Collection<PSObject> InvokeCommandAndRestoreDefaultTraceListener(this Pipeline pipeline) | |
{ | |
bool hasDefaultTraceListener = PowershellExtensions.IsDefaultTraceListenerPresent(); | |
Collection<PSObject> results = pipeline.Invoke(); | |
if(hasDefaultTraceListener && !PowershellExtensions.IsDefaultTraceListenerPresent()) | |
{ | |
Trace.Listeners.Add(new DefaultTraceListener()); | |
} | |
return results; | |
} | |
private static bool IsDefaultTraceListenerPresent() | |
{ | |
foreach(TraceListener listener in Trace.Listeners) | |
{ | |
if(listener is DefaultTraceListener) | |
{ | |
return true; | |
} | |
} | |
return false; | |
} | |
} |