Apa perbedaan antara Write-Host dan Write-Output di PowerShell?
Suka...
Write-Host "Hello World ";
Write-Output "Hello World";
windows
powershell
daniyalahmad
sumber
sumber
Write-Output mengirimkan output ke pipeline. Dari sana dapat disalurkan ke cmdlet lain atau ditugaskan ke variabel. Write-Host mengirimkannya langsung ke konsol.
$a = 'Testing Write-OutPut' | Write-Output $b = 'Testing Write-Host' | Write-Host Get-Variable a,b
Keluaran:
Jika Anda tidak memberi tahu Powershell apa yang harus dilakukan dengan output ke pipeline dengan menetapkannya ke variabel atau menyalurkannya ke perintah lain, maka itu akan dikirim ke out-default, yang biasanya adalah konsol sehingga hasil akhirnya muncul sama .
sumber
Write-Output
mengirimkan data sebagai objek melalui pipa. Dalam contoh Pertanyaan itu hanya akan melewatkan sebuah string.write-host
tergantung pada host. Di konsolwrite-host
pada dasarnya melakukan[console]::WriteLine
. Lihat ini untuk info lebih lanjut.sumber
Write-Ouput
mengirimkan benda. Kali ini adalah string, tetapi secara umum akan mengirim objek, dan biasanya tidak perlu digunakan karena ini adalah cara default untuk menampilkan hasil / data :)Perbedaan lain antara Write-Host dan Write-Output:
Write-Host menampilkan pesan di layar, tetapi tidak menulisnya ke log
Write-Output menulis pesan ke log, tetapi tidak menampilkannya di layar.
Dan Write-Host dianggap berbahaya. Anda dapat melihat penjelasan rinci di Write-Host Dianggap Berbahaya .
sumber
Write-Output
menampilkan pesan di layar, jika Anda menjalankan skrip sendiri. Jadi saya tidak yakin apa yang Anda maksud dengan "Write-Output menulis pesan ke log, tetapi tidak menampilkannya di layar." ?Anda dapat memahami perbedaan antara kedua cmds dengan contoh di bawah ini:
Write-host "msgtxt" | Get-Service Saat dijalankan di atas, Anda akan mendapatkan keluaran sebagai "msgtxt"
Output-tulis "msgtxt" | Get-Service Saat menjalankan di atas, Anda akan menerima error karena msgtxt bukanlah nama layanan apa pun. (Dalam kondisi ideal) (Karena Anda menulisnya ke pipeline dan dikirimkan sebagai input ke Get-Service)
sumber