找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 1894|回复: 0

[技术讨论] PowerShell脚本Write-Output和Write-Host异同

[复制链接]
发表于 2025-9-21 08:06:13 | 显示全部楼层 |阅读模式
Write-Output和Write-Host这两个虽然在powershell ise中功能差不多, 但是有时会干扰函数的输出, 有人注意到吗?

就是说你在ise中能成功执行的, 可能在别的地方不能成功
例如, 你如果在一个函数中返回一个字符串, 但是该函数在返回的时候上一行有Write-Output, 这样返回的数据把这个输出也返回了, 也就是返回了数组
看来不能乱用, 最好用Write-Host
  1. function Get-Greeting {
  2.     Write-Output "正在处理问候语..." # 这是给用户的提示信息
  3.     $greeting = "Hello, World!"
  4.     return $greeting # 这是函数真正的返回值
  5. }

  6. # 调用函数并尝试将结果存入变量
  7. $result = Get-Greeting

  8. # 检查 $result 的类型
  9. $result.GetType().Name
  10. # 输出: Object[]  <-- 看到了吗?它是一个数组!

  11. # 查看数组里的内容
  12. $result
  13. # 输出:
  14. # 正在处理问候语...
  15. # Hello, World!
复制代码
在函数中,永远不要使用 Write-Output 来打印“日志”或“状态信息”。它应该只用于输出函数的最终结果数据。所有用于人类阅读的、非结果性的信息,都应该使用 Write-Host、Write-Verbose、Write-Warning 等命令。


一语道破天机: 函数中的return实现上就是Write-Output
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:35 , Processed in 0.016367 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表