首页 > 解决方案 > 抓取监视器信息 Powershell

问题描述

所以我一直在玩我找到的这部分代码,但我无法弄清楚如何将它变成一个函数。

$Monitors = Get-WmiObject WmiMonitorID -Namespace root\wmi
        ForEach ($Monitor in $Monitors)
{
$Manufacturer = ($Monitor.ManufacturerName -notmatch 0 | ForEach{[char]$_}) -join ""
$MName = ($Monitor.UserFriendlyName -notmatch 0 | ForEach{[char]$_}) -join ""
$MSerial = ($Monitor.SerialNumberID -notmatch 0 | ForEach{[char]$_}) -join ""
Echo $Manufacturer
Echo $MName
Echo $MSerial
}    

Echo 在那里只是为了测试,但它按原样工作。一旦我尝试将它全部放入一个函数中,什么都不会吐出。我也不确定如何创建一个数组,以便将数据组合到一个单元格中。例如,监视器 1 + 2 串行单元 1,监视器 1 + 2 模型单元 2。

任何帮助,将不胜感激。

标签: powershell

解决方案


您应该包含您的实际功能,以便我们可以看到它为什么不起作用。也就是说,我生成了这个示例,它可能会对您有所帮助:

function Get-MonitorDetails
{
  param
  (
    [Object]
    [Parameter(Mandatory=$true, ValueFromPipeline=$true, HelpMessage="Data to process")]
    $InputObject
  )
  process
  {
    $Manufacturer = ($InputObject.ManufacturerName -notmatch 0 | ForEach-Object{[char]$_}) -join ""
    $MName = ($InputObject.UserFriendlyName -notmatch 0 | ForEach-Object{[char]$_}) -join ""
    $MSerial = ($InputObject.SerialNumberID -notmatch 0 | ForEach-Object{[char]$_}) -join ""

    return [pscustomobject]@{
      Manufacturer = $Manufacturer
      MName        = $MName
      MSerial      = $MSerial
    }
  }
}

Get-WmiObject WmiMonitorID -Namespace root\wmi | Get-MonitorDetails

推荐阅读