通过PC名称和监视器详细信息格式化脚本输出

时间:2015-07-06 18:31:39

标签: powershell

以下代码获取计算机显示器的型号&从文本文件中的计算机列表远程序列号。如何在文本文件中输出信息,如:

PC-Name
Model :
Serial number :

代码:

$users = gc .\computernames.txt

gwmi WmiMonitorID -Namespace root\wmi -computername $users |
  Select @{n="Model";e={[System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName -ne 00)}},
         @{n="Serial Number";e={[System.Text.Encoding]::ASCII.GetString($_.SerialNumberID -ne 00)}} |
  Format-List

2 个答案:

答案 0 :(得分:0)

我认为最好是使用WMI,获取模型,你可以使用Win32_ComputerSystem类,并获得SN,你可以使用win32_bios,这里是如何获得两个和每台计算机并将其导出到文本文件:

要获取监视器或任何其他WMI类只需替换类和属性,要获取可用属性,请使用Gwmi win32_logicaldisk | Get-Member(或任何其他类别的课程)查找属性并根据需要进行更改,祝你好运

$Computers = gc .\computernames.txt
$Array = @()
Foreach ($Computer in $computers)
{
$Result = "" | Select Name,Model,SerialNumber
$WMI_CS = Get-WmiObject Win32_ComputerSystem -ComputerName $computer
$WMI_Bios = Get-WmiObject Win32_Bios -ComputerName $computer
$Result.Name = $WMI_CS.Name
$Result.Model = $WMI_CS.Model
$Result.SerialNumber = $WMI_Bios.SerialNumber
$Array += $Result
}

$Array | Format-List | Out-File C:\Report.txt

答案 1 :(得分:0)

PSComputerName属性添加到select语句,以将计算机名称包含在所选属性中,并将Format-List语句的输出通过管道传输到Set-Content以写入列表到文件:

gwmi WmiMonitorID -Namespace root\wmi -computername $users |
  Select PSComputerName,
         @{n="Model";e={[System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName -ne 00)}},
         @{n="Serial Number";e={[System.Text.Encoding]::ASCII.GetString($_.SerialNumberID -ne 00)}} |
  Format-List | Set-Content 'C:\path\to\output.txt'

如果您想要完全按照问题中列出的格式进行操作,则需要自行构建,例如:使用这样的自定义格式字符串:

gwmi WmiMonitorID -Namespace root\wmi -computername $users |
  Select PSComputerName,
         @{n="Model";e={[System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName -ne 00)}},
         @{n="Serial Number";e={[System.Text.Encoding]::ASCII.GetString($_.SerialNumberID -ne 00)}} |
  % { "{0}`r`nModel : {1}`r`nSerial Number : {2}" -f $_.PSComputerName, $_.Model, $_.'Serial Number' } |
  Set-Content 'C:\path\to\output.txt'