在同一行和输出-csv上使用Win32_Computersystem和Win32_service

时间:2011-12-24 11:50:13

标签: powershell csv active-directory wmi

我正在使用Get-WmiObject Win32_service并将输出传输到CSV。 我的脚本正在收集正在运行的服务,但是我想在我的csv中的同一行显示对象的osname,ip和domain(所以我可以用Excel轻松排序)。

我有没有办法将两者结合起来?

Get-WmiObject Win32_Computersystem
Get-WmiObject Win32_service

或许我可以将Get-QADComputer中的一些变量隐藏到这一行:

Get-WmiObject Win32_service -Computername $server.name -Filter "State='Running'" | select -Property SystemName,Name,Status,State,Startmode,DisplayName | Export-Csv -Append -NoClobber -NoTypeInformation -Path $reportfile

1 个答案:

答案 0 :(得分:3)

使用New-Object cmdlet为每个服务对象创建新对象,并从Win32_OperatingSystem WMI类添加所需的属性(osname)(Win32_ComputerSystem中无法使用os标题类)。

$ComputerName = 'PC1'

$os = Get-WmiObject Win32_OperatingSystem -ComputerName $ComputerName

Get-WmiObject Win32_Service -ComputerName $ComputerName -Filter "State='Running'" | Foreach-Object{

    New-Object -TypeName PSObject -Property @{
        SystemName=$_.SystemName
        Name=$_.Name
        Status=$_.Status
        State=$_.State
        StartMode=$_.Startmode
        DisplayName=$_.DisplayName
        IPAddress = [System.Net.Dns]::GetHostAddresses($_.SystemName)[0].IPAddressToString
        OSName = $os.Caption            
    } | Select-Object SystemName,Name,Status,State,StartMode,DisplayName,IPAddress,OSName

} | Export-Csv -Append -NoClobber -NoTypeInformation -Path $reportfile