私のカスタムPSObjectの新しいインスタンスを作成したいと思います。私はPSObjectとして作成されたButtonオブジェクトを持っていて、Buttonと同じメンバを持つ新しいオブジェクトButton2を作成したいのですが、元のオブジェクトで参照することなく元のオブジェクトを複製する方法を見つけることができませんButton2のプロパティもButtonで変更されます)。いくつかのClone()メソッドを使ってハッシュテーブルや配列と同様にする方法がありますか?PSObjectオブジェクトの新しいクローンインスタンスを作成する方法
答えて
実際、クローンメソッドはありません!意志がある場合が...
$o = New-Object PsObject -Property @{ prop1='a' ; prop2='b' }
$o2 = New-Object PsObject
$o.psobject.properties | % {
$o2 | Add-Member -MemberType $_.MemberType -Name $_.Name -Value $_.Value
}
$o.prop1 = 'newvalue'
$o
$o2
出力:
prop2 prop1
----- -----
b newvalue
b a
のためにこれを行うには、関数 'clone'をしたい場合、私は、Cloneメソッドがご利用できていませんe。私はオブジェクトをクレートする方法に問題があるように見えます。あなたの例を使用すると、私はクローンメソッドを利用できますが、まず空のオブジェクトを作成してから、すべてのメンバーをAdd-Memberで追加します。だから私が使用する: $オブジェクト=新しいオブジェクトPSObject $オブジェクト| Add-Member NoteProperty propVal "test" powershellは、[System.Management.Automation.PSCustomObject]にCloseメソッドが含まれていないことを示しています。 –
@JosefNemec私は間違った構文を使ってPsObjectを作成しました。クローン方法がないということは間違いありません。そのため、すべてのオリジナルプロパティを新しいオブジェクトにコピーするだけで済みます。 –
素晴らしい作品です、ありがとうございます! –
最も簡単な方法は、PsObject
==>のCopy方法を使用することです$o2 = $o1.PsObject.Copy()
$o1 = New-Object -TypeName PsObject -Property @{
Fld1 = 'Fld1';
Fld2 = 'Fld2';
Fld3 = 'Fld3'}
$o2 = $o1.PsObject.Copy()
$o2 | Add-Member -MemberType NoteProperty -Name Fld4 -Value 'Fld4'
$o2.Fld1 = 'Changed_Fld'
$o1 | Format-List
$o2 | Format-List
出力:何らかの理由PSObject.Copy(のために
Fld3 : Fld3
Fld2 : Fld2
Fld1 : Fld1
Fld3 : Fld3
Fld2 : Fld2
Fld1 : Changed_Fld
Fld4 : Fld4
)は、すべてのオブジェクトタイプには使用できません。オブジェクトのコピーを作成するための別の解決策は、JSONから/に変換し、新たな変数に保存することです:あなたの現在のセクションでそれを
$CustomObject1 = [pscustomobject]@{a=1; b=2; c=3; d=4}
$CustomObject2 = $CustomObject1 | ConvertTo-Json -depth 100 | ConvertFrom-Json
$CustomObject2 | add-Member -Name "e" -Value "5" -MemberType noteproperty
$CustomObject1 | Format-List
$CustomObject2 | Format-List
これはこれまでのところ、他のオブジェクトを含むオブジェクトを深くクローンする唯一の答えです。 – aggieNick02
ユーティリティクラスでこれを置くか、定義
function clone($obj)
{
$newobj = New-Object PsObject
$obj.psobject.Properties | % {Add-Member -MemberType NoteProperty -InputObject $newobj -Name $_.Name -Value $_.Value}
return $newobj
}
使用法:
$clonedobj = clone $obj
- 1. バッチファイルの出力からPowerShell PSObjectを作成する方法は?
- 2. JavaScriptのオブジェクトの新しいインスタンスを作成する方法
- 3. カスタムPSObject PowerShell 2.0を作成
- 4. 新しいオブジェクトPSObjectがnull値の式のエラーに
- 5. JNIで新しいスコープで新しいJavaオブジェクトを作成する方法
- 6. プログラムに新しいオブジェクトを作成させる方法
- 7. 既存のオブジェクトの新しいrefrenceを使って新しいオブジェクトを作成する方法java
- 8. 新しいPsObjectを作成するいくつかの*穴がこの回答をマークしました
- 9. 新しいITLibMediaItemオブジェクトの作成方法は?
- 10. NPAPIを使用して新しいJSオブジェクトを作成する方法は?
- 11. Prototypeを使用して新しいAJAXオブジェクトを作成する方法
- 12. クエリ結果をループして新しいオブジェクトを作成する方法
- 13. 新しいオブジェクトを作成するすべてのオブジェクトを更新します
- 14. ダイナミックラムダとILでオブジェクトの新しいインスタンスを作成する方法は?
- 15. PSObjectをC#オブジェクトに解析する
- 16. playframeworkで最新の作成オブジェクトを取得する方法
- 17. 他のオブジェクトから新しいオブジェクトを作成する
- 18. 既存のオブジェクトから新しいオブジェクトを作成する
- 19. フリーズした親オブジェクトから新しいオブジェクトを作成する
- 20. 新規作成しないオブジェクトを作成しますか?
- 21. 新しいオブジェクトが作成されたことをテストするエレガントな方法
- 22. 新しいパーセル化可能オブジェクトを作成する適切な方法
- 23. 新しいmybalsamiqサイトの作成方法
- 24. React.js新しいウィンドウの作成方法
- 25. jQueryの:新しいオブジェクトを作成します... $(オブジェクト)
- 26. Powershell:JSON用に出力する複数レベルのPSObjectを作成
- 27. ビッグコマースの新しいお支払い方法を作成する
- 28. three.jsで新しいオブジェクトを作成
- 29. C++メソッドで新しいオブジェクトを作成
- 30. 新しい「動的」オブジェクトの作成?
行く私の答えにあなたは奇妙なあなた –