有人可以根据公共密钥列提供PowerShell脚本来连接两个函数结果。
示例:
Result1和Result2有共同的字段'名称'。我想加入两个结果并获取以下信息。
$Result1 = get-wmiobject -ComputerName localhost -Class win32_service
$Result2 = get-service
结果
Name : wuauserv
DisplayName : Windows Update
Status : Running
StartMode : Manual
ProcessId : 400
答案 0 :(得分:0)
使用以下PowerShell脚本根据公共密钥列(名称)加入两个结果。
$Result1=get-wmiobject -ComputerName localhost -Class win32_service
$Result2=get-service
$Result=@()
for($i=0;$i -lt $Result2.count;$i++)
{
$startmode=($Result1 | where{$_.Name -eq $Result2[$i].Name})|Select StartMode,ProcessId
$tempObj=new-object PSObject
$tempObj | Add-member noteproperty Name $Result2[$i].Name
$tempObj | Add-member noteproperty DisplayName $Result2[$i].DisplayName
$tempObj | Add-member noteproperty Status $Result2[$i].Status
$tempObj | Add-member noteproperty StartMode $startmode.StartMode
$tempObj | Add-member noteproperty ProcessId $startmode.ProcessId
$Result += $tempObj
}
$Result
答案 1 :(得分:0)
无需合并两个命令的输出。所有属性都已从Get-WMIObject
中删除。 (就我个人而言,我喜欢使用CIM cmdlet而不是WMI)
Get-CimInstance Win32_Service | select Name, DisplayName, State, StartMode, ProcessId
修改:来自gcim
的状态输出是Get-Service
的状态属性(如果这是一个问题,这里有一个计算的属性来修复它)
Get-CimInstance Win32_Service | select Name, DisplayName, @{Name="Status";Expression={$_.State}}, StartMode, ProcessId
答案 2 :(得分:0)
试试这个
$result=get-wmiobject -ComputerName localhost -Class win32_service | %{ New-Object psobject -Property @{ objectwmi=$_; objectgetservice=(get-service | where name -eq $_.Name | select -first 1)} }