Chciałbym wyprowadzać zmienne i wartości w skrypcie PowerShell , ustawiając flagi i obserwując, jak dane stają się widoczne w całym skrypcie.
Jak mam to zrobić?
Na przykład, jaki byłby odpowiednik PowerShell dla następującego kodu PHP?
echo "filesizecounter: " . $filesizecounter
powershell
Phill
źródło
źródło
Odpowiedzi:
Istnieje kilka sposobów:
Write-Host
: Napisz bezpośrednio do konsoli, nieuwzględnione w wynikach funkcji / cmdlet. Umożliwia ustawienie koloru pierwszego planu i tła.Write-Debug
: Napisz bezpośrednio do konsoli, jeśli$DebugPreference
ustawiono Kontynuuj lub Zatrzymaj.Write-Verbose
: Napisz bezpośrednio do konsoli, jeśli$VerbosePreference
ustawiono Kontynuuj lub Zatrzymaj.Ten drugi jest przeznaczony do dodatkowych informacji opcjonalnych,
Write-Debug
do debugowania (wydaje się, że pasuje w tym przypadku).Dodatkowo : w skryptach PSH2 (przynajmniej) korzystających z wiązania cmdletów automatycznie pobierane są parametry
-Verbose
i-Debug
przełączane, lokalnie włączaneWrite-Verbose
iWrite-Debug
(tj. Zastępujące zmienne preferencji) tak, jak robią to skompilowane polecenia cmdlet i dostawcy.źródło
Powershell ma echo mapowania aliasu
Write-Output
, więc:echo "filesizecounter : $filesizecounter"
źródło
echo
to pseudonimWrite-Output
zgodnie z TechNet Microsoftu i omówiony tutajPowerShell interpoluje, prawda?
W PHP
można również zapisać jako:
W PowerShell coś takiego powinno odpowiadać twoim potrzebom:
źródło
źródło
Zdecydowanie najłatwiejszym sposobem na echo w PowerShell jest po prostu utworzenie obiektu string i umożliwienie mu wygenerowania przez potok:
Oczywiście rezygnujesz z pewnej elastyczności, gdy nie używasz metod Write- *.
źródło
echo jest aliasem dla Write-Output, chociaż wygląda tak samo jak Write-Host .
To nie jest Jaka jest różnica między echo i Write-Host w PowerShell? .
echo to alias zapisu i wyjścia, który zapisuje do strumienia wyjściowego Sukces. Umożliwia to przetwarzanie danych wyjściowych za pomocą potoków lub przekierowanie do plików. Write-Host zapisuje bezpośrednio w konsoli, więc dane wyjściowe nie mogą być dalej przekierowywane / przetwarzane.
źródło
Host zapisu działa dobrze.
źródło
Nie wiem, czy mądrze to zrobić, ale możesz po prostu pisać
I powinien generować:
źródło
"filesizecounter: $filesizecounter"
jest jeszcze krótszy.PowerShell ma aliasy dla kilku popularnych poleceń, takich jak
echo
. Wpisz następujące polecenie w PowerShell:aby uzyskać odpowiedź:
Nawet Get-Alias ma alias
gal -> Get-Alias
. Możesz napisać,gal echo
aby uzyskać aliasecho
.Inne aliasy są wymienione tutaj: 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
źródło
Spróbuj,
Get-Content .\yourScript.PS1
a zobaczysz treść skryptu.możesz także wstawić ten wiersz do swojego kodu skryptowego:
…
źródło
Należy również wspomnieć, że Set-PSDebug jest podobny do
echo on
polecenia wsadowego starej szkoły :Polecenie spowoduje wyświetlenie każdej linii skryptu wykonawczego:
źródło