آیا تا به حال به این فکر کرده ایم که Write-Output و Write-Host هر دو برای چاپ رشته ها یا خروجی دستور استفاده می شوند، پس تفاوت آنها چیست؟
مثال
PS C:> Write-Output "Test String" Test String PS C:> Write-Host "Test String" Test String
خروجی ثابت می ماند.
اولین تفاوت عمده ذخیره خروجی با استفاده از ساختار Pipeline است. Write-Output و Write-Host هر دو از ساختار خط لوله پشتیبانی می کنند، به عنوان مثال،
مثال
"Test String" | Write-Output Test String "Test String" | Write-Host Test String
خروجی ثابت می ماند.
اولین تفاوت عمده ذخیره خروجی با استفاده از ساختار Pipeline است. Write-Output و Write-Host هر دو از ساختار خط لوله پشتیبانی می کنند، به عنوان مثال،
مثال
"Test String" | Write-Output Test String "Test String" | Write-Host Test String
اما وقتی خروجی را ذخیره می کنیم، تفاوت بین دو دستور را نشان می دهد.
خروجی
$a = "Test String" | Write-Output Get-Variable a Name Value ---- ----- a Test String $b = "Test String" | Write-Host Test String Get-Variable b Name Value ---- ----- b
در مثال بالا، وقتی خروجی رشته در یک متغیر ذخیره میشود، Write-Output میتواند آن را ذخیره کند در حالی که Write-Host خروجی را در کنسول نمایش میدهد و خروجی به متغیری اختصاص داده نمیشود، زیرا Write-Host خروجی را مستقیماً به کنسول تولید میکند. در حالی که Write-Output خروجی را در داخل متغیر تولید و ذخیره می کند. به همین دلیل است که اگر اسکریپت نویس از اینکه هاست راه دور کنسول به درستی کار می کند یا نه، استفاده از Write-Host برای راه دور PowerShell توصیه نمی شود.
تفاوت دیگر این است که با cmdlet Write-Host می توانید خروجی را با رنگ پس زمینه و پیش زمینه (متن) تزئین کنید و در دستور Write-Output این امکان وجود ندارد.
مثال
Write-Host "Dark green backgound with White text" -BackgroundColor DarkGreen -ForegroundColor White Dark green backgound with White text