Использование Win32_Computersystem с Win32_service на одной линии и output-csv - PullRequest
1 голос
/ 24 декабря 2011

Я использую Get-WmiObject Win32_service и передаю выходные данные в CSV. Мой сценарий собирает запущенные службы, но я хотел бы отобразить osname, ip и domain для объекта в одной строке в моем csv (чтобы я мог легко сортировать в 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 Ответ

3 голосов
/ 24 декабря 2011

Используйте командлет New-Object, чтобы создать новый объект для каждого объекта службы и добавить требуемые свойства (osname) из класса Win32_OperatingSystem WMI (подпись os недоступна в классе Win32_ComputerSystem).

$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
...