【发布时间】:2016-02-18 13:59:57
【问题描述】:
我是 PowerShell 新手,我尝试从客户端读取一些监视器/显示信息。
我整理了这个脚本:
param(
[string]$ComputerName
)
$objWMi = get-wmiobject -namespace root\WMI -ComputerName $ComputerName -class WmiMonitorID | select WeekOfManufacture, YearOfManufacture, UserFriendlyName, SerialNumberID, ManufacturerName
$Userfn = ForEach-Object {($objWMi.UserFriendlyName -ne 0 | foreach {[char]$_}) -join"";}
$SerialNum = ForEach-Object {($objWMi.SerialNumberID -ne 0 | foreach {[char]$_}) -join"";}
$ManuName = ForEach-Object {($objWMi.ManufacturerName -ne 0 | foreach {[char]$_}) -join"";}
$Weekom = $objWMi.WeekOfManufacture
$Yearom = $objWMi.YearOfManufacture
Write-Host "1: $Userfn | $ManuName | $SerialNum | $Weekom | $Yearom"
Exit 0
使用.\myscript.ps1 -ComputerName clientdnsname 调用它并返回如下内容:
1: P22W-5 ECO | FUS | YE7XXXXX | 46 | 2008。
就像一个魅力,正是我需要的。有一个例外:如果某些客户端连接了多个监视器,则脚本将返回如下内容:
1: HP E272qHP E272q | HWPHWP | CNKXXXXCCNKYYYY | 40 40 | 2015 2015
如果有多个监视器和输出,我如何修改输出以拆分结果
1: HP E272q | HWP| CNKXXXX | 40 | 2015 2: HP E272q | HWP| CNKXXXX | 40 | 2015
变量包含所有监视器的信息,我不知道如何避免这种情况或如何将其拆分为每个变量的一个值。 任何想法都非常感谢!
编辑:我需要像上面一样在 一行 中返回结果,因为我将它提供给另一个程序。
【问题讨论】:
标签: powershell scripting wmi wmi-query