我正在使用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
答案 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