0

さまざまなソースからデータを収集するレポート ファイルを作成しようとしています。次のようなレポート構造を構築しました。

$Data = import-csv "some CSV FILE"
<#
csv file must look like this
hostname,IP
server1,192.168.1.20
#>

次に、「初期値」が事前設定された配列オブジェクトを作成し、それを $data 変数にアタッチします

$Ids = ('7.1.1.1','7.1.1.2')
$CheckObj= @()
foreach ($id in $IDs) {
    $row = "" | Select-Object CheckID,CheckData,CheckDataRaw
    $row.CheckID = $id
    $row.CheckData = "NotChecked"
    $CheckObj+= $row
    }


$Data = $Data | Select *,CheckData

$data | % {$_.CheckData = $CheckObj}

結果のオブジェクトは次のとおりです。

hostname  : server1
ip        : 192.168.1.20
CheckData : {@{CheckID=7.1.1.1; CheckData=NotChecked; CheckDataRaw=}, 
            @{CheckID=7.1.1.2; CheckData=NotChecked; CheckDataRaw=}}

私がこれをやりたいと思うまで、すべては順調です:

$FinalReport = $data | Select-Object -Property * -ExpandProperty Checkdata

これらすべてのエラーが発生しますが、無視できるとしましょう...

Select-Object : The property cannot be processed because the property 
"CheckData" already exists.
At line:1 char:24
+ ... lReport = $data | Select-Object -Property * -ExpandProperty Checkdata
+                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (@{hostname=serv...ystem.Objec 
   t[]}:PSObject) [Select-Object], PSArgumentException
    + FullyQualifiedErrorId : AlreadyExistingUserSpecifiedPropertyExpand,Micro 
   soft.PowerShell.Commands.SelectObjectCommand

しかし、次のように、他の変数のセット全体が変更されます。

$data | fl


hostname  : server1
ip        : 192.168.1.1
CheckData : {@{CheckID=7.1.1.1; CheckData=NotChecked; CheckDataRaw=; 
            hostname=server1; ip=192.168.1.1}, @{CheckID=7.1.1.2; 
            CheckData=NotChecked; CheckDataRaw=; hostname=server1; 
            ip=192.168.1.1}}

$CheckObj 変数と同様に

$CheckObj


CheckID      : 7.1.1.1
CheckData    : NotChecked
CheckDataRaw : 
hostname     : server1
ip           : 192.168.1.1

CheckID      : 7.1.1.2
CheckData    : NotChecked
CheckDataRaw : 
hostname     : server1
ip           : 192.168.1.1

これは私の側ではまったく意図していません...誰かが私が間違っていることを明確にすることができますか?

Windows 7 で powershell 5.0 を使用しています。すべてのテストは powershell_ise を使用して行われ、powershell のデフォルトは変更していません。

私の予想される結果は、プロセスで使用したすべての変数ではなく、$Final Report 変数に展開されたコンテンツが含まれることです...

4

1 に答える 1