Ich möchte Variablen und Werte in einem PowerShell- Skript ausgeben, indem ich Flags einrichte und sehe, dass sich die Daten im gesamten Skript immatrikulieren.
Wie würde ich das machen?
Was wäre beispielsweise die PowerShell, die dem folgenden PHP-Code entspricht?
echo "filesizecounter: " . $filesizecounter
powershell
phill
quelle
quelle
Antworten:
Es gibt verschiedene Möglichkeiten:
Write-Host
: Schreiben Sie direkt in die Konsole, die nicht in der Funktions- / Cmdlet-Ausgabe enthalten ist. Ermöglicht das Einstellen der Vordergrund- und Hintergrundfarbe.Write-Debug
: Schreiben Sie direkt in die Konsole, wenn Sie$DebugPreference
auf Weiter oder Stopp eingestellt sind.Write-Verbose
: Schreiben Sie direkt an die Konsole, wenn$VerbosePreference
auf Weiter oder Stopp eingestellt sind.Letzteres ist für zusätzliche optionale Informationen
Write-Debug
zum Debuggen vorgesehen (scheint also in diesem Fall zu passen).Zusätzlich : In PSH2 (zumindest) erhalten Skripte, die die Cmdlet-Bindung verwenden, automatisch die Parameter
-Verbose
und-Debug
switch, wodurch sie lokal aktiviertWrite-Verbose
undWrite-Debug
(dh die Präferenzvariablen überschrieben) wie kompilierte Cmdlets und Anbieter.quelle
Powershell hat ein Alias-Mapping-Echo
Write-Output
, also:echo "filesizecounter : $filesizecounter"
quelle
echo
ist ein AliasWrite-Output
gemäß Microsoft TechNet und wird hierPowerShell interpoliert, nicht wahr?
In PHP
kann auch geschrieben werden als:
In PowerShell sollte so etwas Ihren Anforderungen entsprechen:
quelle
quelle
Der bei weitem einfachste Weg, um in Powershell zu widerhallen, besteht darin, einfach das String-Objekt zu erstellen und es von der Pipeline ausgeben zu lassen:
Natürlich geben Sie etwas Flexibilität auf, wenn Sie die Write- * -Methoden nicht verwenden.
quelle
echo ist ein Alias für Write-Output, obwohl es genauso aussieht wie Write-Host .
Es ist nicht Was ist der Unterschied zwischen Echo und Write-Host in Powershell? .
echo ist ein Alias für Write-Output, der in den Success-Ausgabestream schreibt. Dadurch kann die Ausgabe über Pipelines verarbeitet oder in Dateien umgeleitet werden. Write-Host schreibt direkt in die Konsole, sodass die Ausgabe nicht weiter umgeleitet / verarbeitet werden kann.
quelle
Der Write-Host funktioniert einwandfrei.
quelle
Ich weiß nicht, ob es sinnvoll ist, dies zu tun, aber Sie können einfach schreiben
Und es sollte ausgegeben werden:
quelle
"filesizecounter: $filesizecounter"
ist noch kürzer.PowerShell verfügt über Aliase für mehrere häufig verwendete Befehle wie
echo
. Geben Sie Folgendes in PowerShell ein:um eine Antwort zu erhalten:
Sogar Get-Alias hat einen Alias
gal -> Get-Alias
. Sie könnten schreibengal echo
, um den Alias für zu erhaltenecho
.Andere Aliase sind hier aufgelistet: https://docs.microsoft.com/en-us/powershell/scripting/learn/using-familiar-command-names?view=powershell-6
cat dir mount rm cd echo move rmdir chdir erase popd sleep clear h ps sort cls history pushd tee copy kill pwd type del lp r write diff ls ren
quelle
Versuchen
Get-Content .\yourScript.PS1
Sie es und Sie werden den Inhalt Ihres Skripts sehen.Sie können diese Zeile auch in Ihren Scrip-Code einfügen:
....
quelle
Es sollte auch erwähnt werden, dass Set-PSDebug dem
echo on
Batch-Befehl der alten Schule ähnlich ist :Dieser Befehl führt dazu, dass jede Zeile des ausführenden Skripts angezeigt wird:
quelle