Эхо-эквивалент в 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