อะไรคือความแตกต่างระหว่างWrite-HostและWrite-Outputใน PowerShell?
ชอบ...
Write-Host "Hello World ";
Write-Output "Hello World";
อะไรคือความแตกต่างระหว่างWrite-HostและWrite-Outputใน PowerShell?
ชอบ...
Write-Host "Hello World ";
Write-Output "Hello World";
คำตอบ:
Write-Output ส่งเอาต์พุตไปยังไปป์ไลน์ จากนั้นสามารถส่งไปยัง cmdlet อื่นหรือกำหนดให้กับตัวแปร Write-Host ส่งไปยังคอนโซลโดยตรง
$a = 'Testing Write-OutPut' | Write-Output
$b = 'Testing Write-Host' | Write-Host
Get-Variable a,b
ผลลัพธ์:
Testing Write-Host
Name Value
---- -----
a Testing Write-OutPut
b
หากคุณไม่บอก Powershell ว่าจะทำอย่างไรกับเอาต์พุตไปยังไปป์ไลน์โดยกำหนดให้กับตัวแปรหรือไพพ์ไปยังคำสั่ง anoher จากนั้นจะถูกส่งไปยังค่าเริ่มต้นซึ่งโดยปกติจะเป็นคอนโซลดังนั้นผลลัพธ์สุดท้ายจะปรากฏเหมือนกัน .
Write-Output
ส่งข้อมูลเป็นวัตถุผ่านไปป์ไลน์ ในตัวอย่างคำถามจะส่งผ่านสตริง
write-host
ขึ้นอยู่กับโฮสต์ ในคอนโซลเป็นหลักทำwrite-host
[console]::WriteLine
ดูนี้สำหรับข้อมูลเพิ่มเติม
Write-Ouput
ส่งวัตถุ คราวนี้เป็นสตริง แต่โดยทั่วไปแล้วจะส่งวัตถุและโดยปกติไม่จำเป็นที่จะใช้เนื่องจากเป็นวิธีเริ่มต้นในการส่งออกผลลัพธ์ / ข้อมูล :)
Write-Output
จะแสดงข้อความบนหน้าจอหากคุณเรียกใช้สคริปต์ด้วยตัวเอง ดังนั้นฉันไม่แน่ใจว่าคุณหมายถึงอะไร "Write-Output เขียนข้อความลงในบันทึก แต่ไม่แสดงบนหน้าจอ" เหรอ?
คุณสามารถเข้าใจความแตกต่างระหว่าง cmds ทั้งสองด้วยตัวอย่างด้านล่าง:
เขียนโฮสต์ "msgtxt" | รับบริการเมื่อทำงานด้านบนคุณจะได้รับผลลัพธ์เป็น "msgtxt"
เขียนเอาต์พุต "msgtxt" | รับบริการเมื่อทำงานด้านบนคุณจะได้รับข้อผิดพลาดเนื่องจาก msgtxt ไม่ใช่ชื่อของบริการใด ๆ (ในสภาพที่เหมาะสม) (เนื่องจากคุณกำลังเขียนลงในไปป์ไลน์และจะถูกส่งเป็นอินพุตไปยัง Get-Service)