2016-10-27 88 views
0

有人可以提供一個PowerShell腳本來加入基於公共密鑰列的兩個函數結果。基於公共密鑰列加入兩個函數結果的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

以下PowerShell腳本使用基於公共密鑰列(名稱)都要加入的結果。

$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)} } 
相關問題