Эхо-эквивалент в PowerShell для тестирования script
Я хотел бы вывести переменные и значения в PowerShell script, установив флаги и увидев, что данные зачисляются на протяжении всего script.
Как мне это сделать?
Например, какой будет PowerShell, эквивалентный следующему PHP-коду?
echo "filesizecounter: " . $filesizecounter
Ответы
Ответ 1
Есть несколько способов:
Write-Host
: запись непосредственно в консоль, не включаемая в вывод функции/командлета. Позволяет установить цвет переднего плана и фона.
Write-Debug
. Пишите прямо в консоль, если для $DebugPreference
установлено значение Продолжить или Остановить.
Write-Verbose
. Пишите прямо в консоль, если для $VerbosePreference
установлено значение Продолжить или Остановить.
Последний предназначен для дополнительной необязательной информации, Write-Debug
для отладки (так что, похоже, подходит в этом случае).
Дополнительные: в сценариях PSH2 (по крайней мере), использующих привязку командлетов, автоматически получаются параметры переключателей -Verbose
и -Debug
, локально включающие Write-Verbose
и Write-Debug
(т.е. переопределяющие переменные предпочтения) в качестве скомпилированных командлетов и поставщиков делать.
Ответ 2
Powershell имеет псевдоним, отображающий эхо, на Write-Output
, поэтому:
echo "filesizecounter : $filesizecounter"
Ответ 3
PowerShell интерполирует, не так ли?
В PHP
echo "filesizecounter: " . $filesizecounter
также может быть записана как:
echo "filesizecounter: $filesizecounter"
В PowerShell что-то вроде этого должно соответствовать вашим потребностям:
Write-Host "filesizecounter: $filesizecounter"
Ответ 4
Write-Host "filesizecounter : " $filesizecounter
Ответ 5
На сегодняшний день самый простой способ эха в powershell - просто создать строковый объект и позволить конвейеру выводить его:
$filesizecounter = 8096
"filesizecounter : $filesizecounter"
Конечно, вы отказываетесь от некоторой гибкости, если не используете методы Write- *.
Ответ 6
echo - это псевдоним Write-Output, хотя он выглядит так же, как Write-Host.
Это не В чем разница между echo и Write-Host в PowerShell?.
echo - это псевдоним для Write-Output, который записывает в выходной поток Success. Это позволяет обрабатывать выходные данные через конвейеры или перенаправляться в файлы. Write-Host записывает непосредственно на консоль, поэтому вывод не может быть перенаправлен/обработан далее.
Ответ 7
Запись-хост работает нормально.
$Filesize = (Get-Item $filepath).length;
Write-Host "FileSize= $filesize";
Ответ 8
Я не знаю, правильно ли это сделать, но вы можете просто написать
"filesizecounter: " + $filesizecounter
И он должен выводиться:
filesizecounter: значение
Ответ 9
Попробуйте Get-Content .\yourScript.PS1
, и вы увидите содержимое своего script.
также вы можете вставить эту строку в свой код:
get-content .\scriptname.PS1
script code
script code
....
Ответ 10
PowerShell имеет псевдонимы для нескольких общих команд, таких как echo
. Введите в PowerShell следующее:
Get-Alias echo
чтобы получить ответ:
CommandType Name Version Source
----------- ---- ------- ------
Alias echo -> Write-Output
Даже у Get-Alias есть псевдоним gal -> Get-Alias
. Вы можете написать gal echo
, чтобы получить псевдоним для echo
.
gal echo
Другие псевдонимы перечислены здесь:
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