You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中Get-ComputerInfo获取OSName两种写法的差异咨询

Get-ComputerInfo两种调用方式的差异说明

两种写法返回的内容类型完全不同,这是输出不一致的核心原因:

  • 带-Property参数的调用逻辑:Get-ComputerInfo -Property OSName不会直接返回OSName对应的字符串值,只会返回一个仅包含你指定属性的自定义PowerShell对象。你直接把这个对象传给Write-Host输出时,PowerShell会默认把单属性自定义对象格式化成类哈希表的字符串样式,也就是你看到的@{OsName=Microsoft Windows 11 Pro},本质上你输出的是整个对象,不是对象里存的系统名字符串。
  • 点号访问属性的调用逻辑:(Get-ComputerInfo).OSName是先执行命令拿到包含所有系统信息的完整对象,再通过点访问符直接提取对象中OSName字段存储的字符串值,拿到的就是纯文本的系统名,输出自然是干净的系统版本字符串。

如果你想靠-Property参数减少命令返回的内容量、提升执行效率,只需要在调用后补一次属性访问即可,写法如下:

# 带-Property参数时获取纯属性值的正确写法
$OSName = (Get-ComputerInfo -Property OSName).OSName
Write-Host $OSName

小提示:这个命令的属性名匹配不区分大小写,写OSName或者OsName都能正常命中属性,不需要特意对齐大小写。

内容的提问来源于stack exchange,提问作者Mark Stepan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:12:24