You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何添加列以展示操作系统与PowerShell版本信息?

解决方法:添加操作系统和PowerShell版本列

嘿,我来帮你搞定这个需求!你已经有了获取PowerShell版本的命令,现在只需要扩展脚本块,同时抓取操作系统信息,再把这些数据规整成结构化输出,就能轻松添加对应的列了。

第一步:修改Invoke-Command脚本块,同时获取OS和PS版本

直接在远程执行的脚本块里,用[PSCustomObject]把需要的字段打包,这样返回的结果本身就是带列的对象,方便后续输出:

$remoteInfo = Invoke-Command -ComputerName $wks -Credential $cred -Scriptblock {
    [PSCustomObject]@{
        ComputerName = $env:COMPUTERNAME
        OSVersion = (Get-CimInstance -ClassName Win32_OperatingSystem).Caption
        PSVersion = $PSVersionTable.PSVersion.ToString()
    }
} -ErrorAction SilentlyContinue

代码解释:

  • ComputerName:返回目标机器的名称,方便你对应到具体设备
  • OSVersion:通过Get-CimInstance获取操作系统的友好名称(比如Windows 11 Pro、Windows Server 2019 Datacenter),比单纯的版本号更直观
  • PSVersion:把$PSVersionTable.PSVersion对象转成字符串,避免输出时显示版本的细分字段(比如Major、Minor)

第二步:整合到现有工作流(批量处理示例)

如果你是批量处理多台机器,可以把结果收集到数组里,最后统一输出成表格:

# 初始化结果数组
$allResults = @()

# 遍历目标机器列表
foreach ($computer in $wks) {
    $machineInfo = Invoke-Command -ComputerName $computer -Credential $cred -Scriptblock {
        [PSCustomObject]@{
            ComputerName = $env:COMPUTERNAME
            OSVersion = (Get-CimInstance -ClassName Win32_OperatingSystem).Caption
            PSVersion = $PSVersionTable.PSVersion.ToString()
        }
    } -ErrorAction SilentlyContinue

    # 处理无法连接的机器,添加提示信息
    if (-not $machineInfo) {
        $machineInfo = [PSCustomObject]@{
            ComputerName = $computer
            OSVersion = "无法连接/获取信息"
            PSVersion = "无法连接/获取信息"
        }
    }

    $allResults += $machineInfo
}

# 输出带列的表格
$allResults | Format-Table -AutoSize

小贴士

  • 如果你的现有脚本已经在收集其他机器信息(比如CPU、内存),可以直接把OSVersionPSVersion字段加到你现有的PSCustomObject里,不用单独创建对象
  • 如果你需要把结果导出到CSV文件,只需要把最后一行改成$allResults | Export-Csv -Path "机器信息.csv" -NoTypeInformation

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

火山引擎 最新活动