我正在尝试编写一个将2个WMI命令组合在一起的PowerShell脚本

时间:2015-06-05 19:23:45

标签: powershell

Get-WmiObject -Class Win32_ComputerSystem; -Class Win32_Bios -ComputerName computer001, computer002 | Name, Caption, Identifyingnumber, vendor, UserName  Export-CSV ComputerList.csv

到目前为止我有什么。 我想要获得这种类型的输出

Model: OptiPlex 760                 
Name: Computer006
UserName: Domain\UserName
SerialNumber: M4RQFQZ

如果可以使用标题导出到excel中,那也会很棒。我有10个远程商店我需要运行它。

1 个答案:

答案 0 :(得分:3)

您需要使用一个Get-WmiObject - 每个WMI类调用并使用组合数据创建自定义对象。例如:

#$servers = "computer001", "computer002"
$servers = "localhost", "localhost" #test

$servers | ForEach-Object {
    $CS = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $_
    $BIOS = Get-WmiObject -Class Win32_Bios -ComputerName $_ 

    New-Object -TypeName psobject -Property @{
        Model = $CS.Model
        Name = $CS.Name
        UserName = $CS.UserName
        SerialNumber = $BIOS.SerialNumber
    }
}

UserName       Name    Model               SerialNumber
--------       ----    -----               ------------
FRODEPC\Frode FRODEPC System Product Name System Serial Number
FRODEPC\Frode FRODEPC System Product Name System Serial Number

您可以通过Format-List Model, Name, UserName, SerialNumber使用管道来获取列表视图,但如果您要将其导出(导出,将其直接传送到Export-CSV ...

Model        : System Product Name
Name         : FRODEPC
UserName     : FRODEPC\Frode
SerialNumber : System Serial Number

Model        : System Product Name
Name         : FRODEPC
UserName     : FRODEPC\Frode
SerialNumber : System Serial Number

正如您所看到的,我有一台定制的计算机,但它应该为预建的OEM机器显示正确的型号和序列号值。