Эхо-эквивалент в PowerShell для тестирования скриптов - PullRequest
188 голосов
/ 02 апреля 2009

Я хотел бы вывести переменные и значения в сценарии PowerShell , установив флаги и увидев, как данные поступают в программу по всему сценарию.

Как бы я это сделал?

Например, что будет PowerShell эквивалентно следующему коду PHP?

echo "filesizecounter: " . $filesizecounter 

Ответы [ 9 ]

237 голосов
/ 02 апреля 2009

Есть несколько способов:

Write-Host: запись непосредственно на консоль, не включается в вывод функции / командлета. Позволяет установить цвет переднего плана и фона.

Write-Debug: запись непосредственно на консоль, если $DebugPreference установлен на Продолжить или Остановить.

Write-Verbose: запись непосредственно на консоль, если для $VerbosePreference установлено значение Продолжить или Остановить.

Последний предназначен для дополнительной необязательной информации, Write-Debug для отладки (так что, похоже, подходит в этом случае).

Дополнительно : В сценариях PSH2 (как минимум), использующих привязку командлетов, автоматически получаются параметры переключателя -Verbose и -Debug, локально включающие Write-Verbose и Write-Debug (то есть переопределяющие переменные предпочтения ), как это делают скомпилированные командлеты и поставщики.

94 голосов
/ 28 октября 2009

Powershell имеет эхо-отображение псевдонима для Write-Output, поэтому:

echo "filesizecounter : $filesizecounter"

24 голосов
/ 02 апреля 2009

PowerShell интерполирует, не так ли?

В PHP

echo "filesizecounter: " . $filesizecounter 

также можно записать как:

echo "filesizecounter: $filesizecounter" 

В PowerShell что-то подобное должно соответствовать вашим потребностям:

Write-Host "filesizecounter: $filesizecounter"
21 голосов
/ 02 апреля 2009
Write-Host "filesizecounter : " $filesizecounter 
13 голосов
/ 14 января 2010

Самый простой способ отобразить в powershell - просто создать строковый объект и позволить конвейеру вывести его:

$filesizecounter = 8096
"filesizecounter : $filesizecounter"

Конечно, вы отказываетесь от некоторой гибкости, когда не используете методы Write- *.

9 голосов
/ 08 сентября 2014

echo является псевдонимом Write-Output , хотя выглядит так же, как Write-Host .

Это не В чем разница между echo и Write-Host в PowerShell? .

echo - это псевдоним для Write-Output, который записывает в выходной поток Success. Это позволяет обрабатывать вывод через конвейеры или перенаправлять в файлы. Write-Host пишет напрямую в консоль, поэтому вывод не может быть перенаправлен / обработан.

7 голосов
/ 23 мая 2017

Write-host работает нормально.

$Filesize = (Get-Item $filepath).length;
Write-Host "FileSize= $filesize";
4 голосов
/ 19 января 2015

Я не знаю, разумно ли это делать, но вы можете просто написать

"filesizecounter: " + $filesizecounter

И это должно вывести:

Размер файлаcounter: значение

3 голосов
/ 16 января 2013

Попробуйте Get-Content .\yourScript.PS1, и вы увидите содержание вашего скрипта.

также вы можете вставить эту строку в код вашего скрипта:

get-content .\scriptname.PS1
script code
script code

....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...