Woher weiß ein Cmdlet, wann es wirklich sollte anrufen WriteVerbose()
, WriteDebug()
und usw.?
Vielleicht übersehe ich etwas Einfaches, aber ich kann die Antwort nicht finden. Alle Cmdlet Implementierungen, die ich bisher gesehen habe, rufen einfach WriteVerbose()
ohne jegliche zögern. Ich weiß, dass es richtig dies zu tun, aber es ist nicht wirksam .
Die Leistung leidet, wenn der Ausführlichkeitsmodus ausgeschaltet ist, aber ein Cmdlet trotzdem vorbereitet wird Daten für WriteVerbose()
Das heißt, umsonst.
Mit anderen Worten, in einem Cmdlet würde ich gerne in der Lage sein,:
if (<VerboseMode>)
{
.... data preparation, sometimes expensive ...
WriteVerbose(...);
}
Aber ich weiß nicht, wie ich das bekomme if (<VerboseMode>)
. Irgendwelche Ideen?
Schlussfolgerung: Die Antwort von @stej zeigt, wie man die benötigten Informationen theoretisch erhält. In der Praxis ist dies hacky und unwahrscheinlich geeignet. Wenn ein Cmdlet also eine sehr umfangreiche ausführliche oder Debug-Ausgabe erzeugt, erscheint es sinnvoll, einen zusätzlichen Parameter einzuführen, der die Ausführlichkeitsstufen angibt.