PowerShell'de Yazma Ana Bilgisayarı ve Yazma Çıkışı arasındaki fark nedir ?
Sevmek...
Write-Host "Hello World ";
Write-Output "Hello World";
PowerShell'de Yazma Ana Bilgisayarı ve Yazma Çıkışı arasındaki fark nedir ?
Sevmek...
Write-Host "Hello World ";
Write-Output "Hello World";
Yanıtlar:
Özetle, Write-Host
konsolun kendisine yazar. VBScript'te bir MsgBox olarak düşünün . Write-Output
, öte yandan, ardışık düzene yazar, böylece bir sonraki komut onu girdi olarak kabul edebilir. Örtük olarak size çağrıldığı Write-Output
gibi Write-Output
, nesne yazmak için kullanmanız gerekmez .
PS> Get-Service
şununla aynı olacaktır:
PS> Get-Service | Write-Output
Yazma Çıkışı, çıktıyı boru hattına gönderir. Oradan başka bir cmdlet'e aktarılabilir veya bir değişkene atanabilir. Write-Host, bunu doğrudan konsola gönderir.
$a = 'Testing Write-OutPut' | Write-Output
$b = 'Testing Write-Host' | Write-Host
Get-Variable a,b
Çıktılar:
Testing Write-Host
Name Value
---- -----
a Testing Write-OutPut
b
Powershell'e bir değişkene atayarak ya da anoher komutuna borulayarak ardışık düzendeki çıktıyla ne yapacağını söylemezseniz, varsayılana gönderilir, bu normalde konsoldur, böylece sonuç aynı görünür. .
Write-Output
verileri ardışık düzen aracılığıyla bir nesne olarak gönderir. Sorular örneğinde sadece bir dizge geçecektir.
write-host
ana bilgisayara bağlıdır. Konsolda write-host
aslında yapıyor [console]::WriteLine
. Bkz bu daha fazla bilgi için.
Write-Ouput
nesneler gönderir. Bu kez bir dize, ama genel olarak bu nesneleri gönderecek ve o :) çıkış sonuçları / verilere varsayılan yöntemdir olarak kullanmak normalde gereksizdir
Yazma Ana Bilgisayarı ve Yazma Çıkışı arasındaki diğer bir fark:
Write-Host, mesajı ekranda görüntüler ancak günlüğe yazmaz
Yazma Çıkışı, günlüğe bir mesaj yazar, ancak bunu ekranda göstermez.
Ve Write-Host, zararlı olarak kabul edilir. Yazma Ana Bilgisayarı Zararlı Olarak Kabul Edildi bölümünde ayrıntılı bir açıklama görebilirsiniz .
Write-Output
Komut dosyasını kendiniz çalıştırıyorsanız, bence ekranda mesaj görüntülenir. Bu nedenle, "Yazma-Çıkışı günlüğe bir mesaj yazar, ancak ekranda göstermez" ile ne demek istediğinizden emin değilim. ?
İki cmd arasındaki farkı aşağıdaki örnekle anlayabilirsiniz:
Ana bilgisayara "msgtxt" yazma | Get-Service Yukarıda çalıştırıldığında, "msgtxt" olarak çıktı alacaksınız.
Yazma-çıkışı "msgtxt" | Get-Service Yukarıda çalıştırıldığında, msgtxt herhangi bir hizmetin adı olmadığı için bir hata alırsınız. (İdeal durumda) (Bunu bir ardışık düzene yazdığınız ve Get-Service'e girdi olarak geçirildiği için)