Geht einfach zu zeigen, @JamesKo, wenn Sie die falsche Frage stellen, bekommen Sie die falsche Antwort :-(. Mehrere Menschen legen gute Glauben Antworten hier basierend auf (a) Mangel an Linux-Exposition und (b) Ihre Verwendung des Begriffs wortreich Im Folgenden werde ich Ihnen erklären, wie Linux zu diesem Thema mit PowerShell in Verbindung steht, aber zögern Sie nicht, am Ende auf die Antwort zu springen, wenn Sie es eilig haben.
Hintergrund
In Powershell, die ausführlichen eine ganz bestimmte Bedeutung hat, die die PowerShell man page noch eher vage ist:
Zeigt detaillierte Informationen über den Vorgang an, der mit dem Befehl ausgeführt wird. Diese Information ähnelt der Information in einer Ablaufverfolgung oder einem Transaktionsprotokoll. Dieser Parameter funktioniert nur, wenn der Befehl eine ausführliche Nachricht generiert.
Es klingt sogar wie, was Sie wollen ...aber lassen Sie uns vergleichen Sie das mit der Linux-Dokumentation für set -x
, die je nach Ihrem Geschmack von Linux, könnte dies (von man-pages project) ...
Die Schale für jeden Befehl auf Standardfehler eine Spur schreiben wird nach es erweitert den Befehl und bevor er ausgeführt wird.
oder diese (von gnu) ...
Drucken eine Spur von einfachen Befehlen, Befehle, Kommandos Fall, wählen Sie Befehle und Rechnen für Befehle und ihre Argumente oder zugehörigen Wortlisten nachdem sie erweitert sind und bevor sie ausgeführt werden.
Die erste Zeile Ihrer Frage stimmt klar und prägnant mit diesen überein. In PowerShell ist dies jedoch anders. Kurz gesagt: Wenn Sie den ausführlichen Modus aktivieren (sei es mit der Befehlszeilenoption -Verbose
oder der Variablen $VerbosePreference
), wird einfach die Ausgabe des ausführlichen Streams an die Konsole aktiviert. (Genau wie Linux zwei Streams bietet, stdout und stderr, bietet PowerShell mehrere Streams: Ausgabe-Stream, Fehler-Stream, Warn-Stream, ausführlicher Stream und Debug-Stream. Sie arbeiten mit diesen Streams auf die gleiche Weise wie Linux - Sie können verwenden, selbst, zum Beispiel commands 4>&1
die ausführlichen Stream stdout zu verschmelzen, zum Beispiel. (Sie können mehr über Powershell mehr Ausgabeströme im Grunde Schreiben Streams Abschnitt PowerShell One-Liners: Accessing, Handling and Writing Data lesen und eine gute schnelle Referenz werden die Complete Guide to PowerShell Punctuation.)
Die Antwort
Mit dem Befehl Set-PSDebug erhalten Sie bash-äquivalentes Tracing.Sie können sogar das Tracing-Detail mit deranpassenParameter. Als erstes ist hier die Kontrolle, bevor Set-PSDebug
mit:
PS> Get-PSDepth
0
Mit einem Wert von Sie jede Codezeile erhalten, wie es ausführt, zum Beispiel:
PS> Set-PSDebug -Trace 1
PS> Get-PSDepth
DEBUG: 1+ >>>> Get-PSDepth
DEBUG: 141+ >>>> {
DEBUG: 142+ >>>> $nest = -1
DEBUG: 143+ >>>> $thisId = $pid
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 145+ >>>> $thisId = (gwmi win32_process -Filter "processid='$thisId'").ParentProcessId
DEBUG: 146+ >>>> $nest++
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 148+ >>>> $nest
0
DEBUG: 149+ >>>> }
Mit einem Wert von Sie erhalten auch Variablenzuweisungen und Codepfade:
PS> Set-PSDebug -Trace 2
PS> Get-PSDepth
DEBUG: 1+ >>>> Get-PSDepth
DEBUG: ! CALL function '<ScriptBlock>'
DEBUG: 141+ >>>> {
DEBUG: ! CALL function 'Get-PSDepth' (defined in file 'C:\Users\msorens\Documents\WindowsPowerShell\profile.ps1')
DEBUG: 142+ >>>> $nest = -1
DEBUG: ! SET $nest = '-1'.
DEBUG: 143+ >>>> $thisId = $pid
DEBUG: ! SET $thisId = '9872'.
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 145+ >>>> $thisId = (gwmi win32_process -Filter "processid='$thisId'").ParentProcessId
DEBUG: ! SET $thisId = '10548'.
DEBUG: 146+ >>>> $nest++
DEBUG: ! SET $nest = '0'.
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 148+ >>>> $nest
0
DEBUG: 149+ >>>> }
Das sind die Spuren eines simp le cmdlet schrieb ich Get-PSDepth
. Es druckt die Befehle, Zuweisungen usw. mit dem Präfix DEBUG
, vermischt mit der tatsächlichen Ausgabe, die in diesem Fall die einzige Zeile ist, die nur 0
enthält.
An erster Stelle sollte ein Benutzer mit Ihrem Vertreter etwas Recherche durchgeführt haben, bevor Sie fragen? [google: Echo auf powershell] (http://www.google.com/search?q=Echo+auf+powershell&oq=Echo+auf+powershell) – LotPings
@LotPings Entschuldigung, es ist mir nicht in den Sinn gekommen zu Google "Echo für Powershell". –