2016-10-27 2 views
0

누군가가 공통 키 열을 기반으로하는 두 가지 함수 결과를 결합하는 PowerShell 스크립트를 제공 할 수 있습니까?Powershell 스크립트가 공통 키 열을 기반으로 두 가지 함수 결과를 결합합니다.

예 :

결과 1과 결과 2에 공통 필드 '이름'이 있습니다. 결과에 모두 참여하고 아래 정보를 가져오고 싶습니다. PowerShell 스크립트 아래

$Result1 = get-wmiobject -ComputerName localhost -Class win32_service 
$Result2 = get-service 

결과

Name  : wuauserv 
DisplayName : Windows Update 
Status  : Running 
StartMode : Manual 
ProcessId : 400  

답변

0

사용은 일반적인 키 열 (이름)를 기반으로 결과를 모두 가입.

$Result1=get-wmiobject -ComputerName localhost -Class win32_service 
$Result2=get-service 
[email protected]() 
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 
0

두 명령의 출력을 결합 할 필요가 없습니다. 모든 속성은 이미 Get-WMIObject에 있습니다. (개인적으로 나는이 곳도 가능 WMI 대신 CIM cmdlet을 사용하여 같은)

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 
0

$result=get-wmiobject -ComputerName localhost -Class win32_service | %{ New-Object psobject -Property @{ objectwmi=$_; objectgetservice=(get-service | where name -eq $_.Name | select -first 1)} } 
시도
관련 문제