抓斗监控器信息Powershell

时间:2018-10-01 13:26:40

标签: 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。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该已经包括了您的实际功能,所以我们可以了解为什么它不起作用。就是说,我生成了这个示例,可以为您提供帮助:

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