WMIとPowershellに関する本をフォローしていて、Powershellでカスタムクラスを作成する方法を説明しています。これには、C#コードとadd-type
コマンドの記述が含まれます。コマンドを使用してオブジェクトに複数のエントリを作成しようとすると+=
、次のエラーが発生します。
Method invocation failed because [pawobject] doesn't contain a method named 'op_Addition'.
At line:23 char:14
+ $MyObjects += <<<< $MyObject
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
クラスの作成に使用しているコードは次のとおりです。
$source = @"
public class pawobject
{
public string Description { get; set; }
public string Name { get; set; }
public int Number { get; set;}
}
"@
そしてそれをPowerShellに追加するには、次を使用します。
Add-Type $source -Language CSharpVersion3
値を作成するコードは次のとおりです。
$MyObject = New-Object -TypeName pawobject -Property @{
Name = "MyObject5";
Number = 200;
Description = "Take3"
}
これにより、単一のが作成されます$MyObject
。ここから私の問題が発生します。次のような複数のエントリを持つオブジェクトを作成しようとしました。
$MyObjects += $MyObject
しかし、上記のエラーが発生します。私が試してみました
$MyObjects = $MyObjects + $MyObject
私はオンラインで周りを見回し、次のコードを追加してみましたpublic class
:
public static string Add(string a, string b) {
return (a + b);
}
しかし、それは数字でしか機能しないようです。私はC#にまったく精通していないので、このエラーを修正するためにどこから始めればよいのかさえわかりません。私は常に自分の環境で新しいオブジェクトを作成しているので、これは非常に便利であることがわかります。独自のタイプを定義できることは、特に各プロパティに入れることができるデータのタイプを制御できることで、大きな利点になります。よろしくお願いします。良い一日を!
編集:結果に何をさせたいかを説明しましょう。
私はこのような何かを宣言できるようにしたいと思います:
$MyObject = New-Object -TypeName pawobject -Property @{
Name = "MyObject";
Number = 100;
Description = "Take1"
}
私がの出力を取るとき、私は$MyObject
これで終わります:
Description Name Number
----------- ---- ------
Take1 MyObject 100
次に、これを宣言できるようにしたいと思います。
$MyObjects += $MyObjects
そして、$MyObjects
これを持っていることになります:
Description Name Number
----------- ---- ------
Take1 MyObject 100
Take2 MyObject5 200
基本的に(2セットのオブジェクトを追加するための専門用語がわからない)$MyObject
に$MyObjects