Write-Host против Write-Information в PowerShell 5
Хорошо известно, чтоWrite-Host
это зло ВPowerShell 5
, Write-Information
добавлен и считается заменойWrite-Host
.
Но действительно, что лучше?Write-Host
зло, потому что не использует конвейер, поэтому входное сообщение не может быть повторно использовано.
Но чтоWrite-Host
сделать это просто показать что-то в консоли, верно? В каком случае мы будем использовать вход?
В любом случае, если мы действительно хотим повторно использовать ввод, почему бы просто не написать что-то вроде этого:
$foo = "Some message to be reused like saving to a file"
Write-Host $foo
$foo | Out-File -Path "D:\foo.log"
Еще минусыWrite-Host
в том, что,Write-Host
Можно указать, в каком цвете сообщения отображаются в консоли с помощью-ForegroundColor
а также-BackgroundColor
.
С другой стороны, используяWrite-Information
входное сообщение может использоваться везде, где мы хотим, через конвейер № 6. И не нужно писать дополнительные коды, как я пишу выше. Но темная сторона этого в том, что, если мы хотим записывать сообщения в консоль и также сохранять в файл, мы должны сделать это:
# Always set the $InformationPreference variable to "Continue"
$InformationPreference = "Continue";
# if we don't want something like this:
# ======= Example 1 =======
# File Foo.ps1
$InformationPreference = "Continue";
Write-Information "Some Message"
Write-Information "Another Message"
# File AlwaysRunThisBeforeEverything.ps1
.\Foo.ps1 6>"D:\foo.log"
# ======= End of Example 1 =======
# then we have to add '6>"D:\foo.log"' to every lines of Write-Information like this:
# ======= Example 2 =======
$InformationPreference = "Continue";
Write-Information "Some Message" 6>"D:\foo.log"
Write-Information "Another Message" 6>"D:\foo.log"
# ======= End of Example 2 =======
Я думаю, что это немного излишне.
Я знаю только небольшой аспект этой вещи против, и там должно быть что-то в моем уме. Так есть ли что-нибудь еще, что может заставить меня поверить, чтоWrite-Information
лучше, чемWrite-Host
Пожалуйста, оставьте ваши добрые ответы здесь.
Спасибо.