1

PowerShell で、サービス、ステータス、およびコンピューター名を含むいくつかの XML ファイルを比較します。出力にはこれらすべてが含まれますが、比較には名前とステータスのみを使用します。アイデアは、次のような出力を取得することです。

Name Status SideIndicator PSComputername ---- ------ ------------- -------------- Appinfo Running <=
Appinfo Stopped =>
AudioEndpointBuilder Stopped =>
AudioEndpointBuilder Running <=

ご覧のとおり、テーブルは見栄えがしますが、コンピューター名が含まれていません...誰か助けてくれるアイデアはありますか? これがコードの外観です。

$WBService1 = Invoke-Command  $WB1 -Credential ($WBCred) -ScriptBlock {Get-      Service} |
    Select-Object Name, Status, DisplayName, PSComputerName |
    Sort-Object Name
 $WBService2 = Invoke-Command  $WB2 -Credential ($WBCred) -ScriptBlock {Get-Service} |
    Select-Object Name, Status, DisplayName, PSComputerName |
        Sort-Object Name
$WBService1 | Export-Clixml $FileOutput\WBService1.xml
$WBService2 | Export-Clixml $FileOutput\WBService2.xml
$Service1 = Import-Clixml $FileOutput\WBService1.xml
$Service2 = Import-Clixml $FileOutput\WBService2.xml
Compare-Object $Service1 $Service2 -Property Name, Status | Sort-Object Name | Format-     Table -AutoSize Name, Status, Sideindicator, PSComputername
4

1 に答える 1

2

-Passthru を Compare-Object に追加して、追加のフィールドを取得できます。

Compare-Object $Service1 $Service2 -Property Name, Status -Passthru

例:

PS> (compare $a $b -property name,status -PassThru |sort name)[0] |ft -a name,status,sideindicator,pscomputername

Name                      Status  SideIndicator PSComputerName
----                      ------  ------------- --------------
AdobeFlashPlayerUpdateSvc Stopped <=            adil-win8

スペースを節約するために 1 を表示しています。

于 2014-05-15T19:05:52.597 に答える