以下代码获取计算机显示器的型号&从文本文件中的计算机列表远程序列号。如何在文本文件中输出信息,如:
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
答案 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'