2013-03-13 9 views
6

カスタムオブジェクト(PSObject)を作成してそのプロパティを事前に定義し、プログラム実行の後半で、オブジェクトに値の配列を追加し続けることは可能ですか?カスタムPSObject PowerShell 2.0を作成

たとえば、

$c = @() 

$c = New-Object PSObject 
$c | Add-Member -type NoteProperty -name Name 
$c | Add-Member -type NoteProperty -name Gender 
$c | Add-Member -type NoteProperty -name Age 


$c | Add-Member -type NoteProperty -name Name -value "John" 
$c | Add-Member -type NoteProperty -name Gender -value "Male" 
$c | Add-Member -type NoteProperty -name Age -value "30" 

事前にご連絡いただきありがとうございます。

+1

新しいPSObjectに設定する前に$ cを空の配列に設定する理由がわかりません。 2番目の割り当てで配列が失われました。 –

+0

私は、一連のコンピュータのチェックリストを行うスクリプトを持っています。したがって、オブジェクトを作成し、すべてのコンピュータのステータスを配列に配置することによって、各コンピュータの各チェックのステータスを記録します。最初のチェックは、コンピュータのテスト接続です。私はコンピュータのチェックをすべて終えて、ステータスを記録したかったのです。 – Rajiv

+1

おもしろい事実:質問が閉じられるように答えを正しいものとしてマークすることは許されています。 :-) –

答えて

16

私にはわかりません。指定したプロパティを持つオブジェクトの配列が必要ですか?サンプルは最初に配列を作成するため、単一のオブジェクトに上書きします。あなたはあなたの配列を失った。

new-objectを使用してオブジェクトを作成し、-Propertyパラメータに値をハッシュテーブルとして指定できます。このように:

$c = New-Object psobject -Property @{ 
    Name = "John" 
    Gender = "Male" 
    Age = 30 
} 

は、それらの配列を作成するには、使用することができます:あなたは一つ一つを実行する複数のテストを持っている場合

$myarray = @() 

$myarray += New-Object psobject -Property @{ 
    Name = "John" 
    Gender = "Male" 
    Age = 30 
} 

、あなたがテスト機能でテストを実行することができますその後、あなたはそれを収集し、「resultobject」を作成します。

$myresults = @() 

function mytests($computer) { 
    #Test connection 
    $online = Test-Connection $computer 

    #Get buildnumber 
    $build = (Get-WmiObject win32_operatingsystem -ComputerName $computer).buildnumber 

    #other tests 

    #output results 
    New-Object psobject -Property @{ 
     Online = $online 
     WinBuild = $build 
    } 
} 

$myresults += mytests -computer "mycomputername" 
+1

私の削除された答えのコメントのために+1: –

+0

それは最初の配列要素のプロパティ値を指定する規則ですか?私は、配列の構造体を(列名で)宣言することはできませんし、その後で配列要素を追加することはできませんか? PSObjectの初期化とともに配列要素を設定することは必須ですか? – Rajiv

+1

作成時に配列に追加する必要があるのですか?あなたはしないから。 '$ myobjname = new-object .....'を使って、 '$ myarray + = $ obj'の後に追加することができます。ほとんどの場合、オブジェクトを作成する必要があるときにオブジェクトの値を知っているので、すべてを一緒に行うほうが簡単です。 –

2

をええ、私はこれは古い記事です知っているが、Don Jonesはこのようなものでした:

$props = @{ 
    Name = "John" 
    Gender = "Male" 
    Age = 30 
} 

$c = New-Object PSObject -Property $props 

あなたは、プロパティを参照するには、以下の新しいオブジェクト値を実行することができます:私はそれはあなたが探しているものだと思う

c$ | Get-Member 

を。

+1

これは、以前の回答とまったく同じ解決策です。 –

関連する問題