Я хотел бы выводить переменные и значения в сценарии PowerShell , устанавливая флаги и просматривая данные в течение всего сценария.
Как бы я это сделал?
Например, что будет PowerShell эквивалентно следующему коду PHP?
echo "filesizecounter: " . $filesizecounter
powershell
Phill
источник
источник
Ответы:
Есть несколько способов:
Write-Host
: Запись напрямую в консоль, не включается в вывод функции / командлета. Позволяет установить цвет переднего плана и фона.Write-Debug
: Запись напрямую в консоль, если$DebugPreference
установлено значение «Продолжить» или «Стоп».Write-Verbose
: Запись напрямую в консоль, если$VerbosePreference
установлено значение «Продолжить» или «Стоп».Последний предназначен для дополнительной необязательной информации,
Write-Debug
для отладки (так что, похоже, подходит в этом случае).Дополнительно : в сценариях PSH2 (по крайней мере), использующих привязку командлетов, автоматически получаются параметры
-Verbose
и-Debug
переключаются, локально включаютсяWrite-Verbose
иWrite-Debug
(то есть переопределяются переменные предпочтения), как это делают скомпилированные командлеты и поставщики.источник
У Powershell есть эхо-отображение сопоставления псевдонимов
Write-Output
, поэтому:echo "filesizecounter : $filesizecounter"
источник
echo
является псевдонимомWrite-Output
в соответствии с TechNet Microsoft и обсуждается здесьPowerShell интерполирует, не так ли?
В PHP
также может быть записано как:
В PowerShell что-то вроде этого должно соответствовать вашим потребностям:
источник
источник
Безусловно, самый простой способ отобразить в powershell - просто создать строковый объект и позволить конвейеру вывести его:
Конечно, вы отказываетесь от некоторой гибкости, когда не используете методы Write- *.
источник
echo является псевдонимом Write-Output, хотя выглядит так же, как Write-Host .
Не в чем разница между echo и Write-Host в PowerShell? ,
echo - псевдоним для Write-Output, который записывает в поток вывода Success. Это позволяет обрабатывать вывод через конвейеры или перенаправлять в файлы. Write-Host пишет напрямую в консоль, поэтому вывод не может быть перенаправлен / обработан дальше.
источник
Write-host работает нормально.
источник
Я не знаю, разумно ли это делать, но вы можете просто написать
И это должно вывести:
источник
"filesizecounter: $filesizecounter"
еще короче.PowerShell имеет псевдонимы для нескольких общих команд, таких как
echo
. Введите в PowerShell следующее:чтобы получить ответ:
Даже у Get-Alias есть псевдоним
gal -> Get-Alias
. Вы можете написать,gal echo
чтобы получить псевдоним для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
источник
Попробуйте,
Get-Content .\yourScript.PS1
и вы увидите содержание вашего сценария.также вы можете вставить эту строку в код вашего скрипта:
....
источник
Также следует отметить, что Set-PSDebug похож на командную команду старой школы
echo on
:Эта команда приведет к отображению каждой строки исполняемого скрипта:
источник