2017-06-30 5 views
2

オブジェクトのメンバーではない配列から完全なオブジェクトを削除しようとしています。オブジェクトを削除する方法が見つからないため、アイテムを削除するためのソリューションが非常に多くあります。 誰かが完全なオブジェクトを削除する方法を提案できますか?パワーシェルの配列からオブジェクトを削除するには?

+2

'$ file.data = $ file.data | ? id -ne 'Caption'' – wOxxOm

答えて

0

私はコメントの答えはあなたが探しているものだと思います:file.data = $file.data | ? id -ne 'Caption'

Where-Objectコマンドレットのエイリアス(代替名)である?が少し説明されています。これは、いくつかの基準に基づいてコレクションをフィルタリングする場合に使用しますあなたがよく知っていればWHEREのSQL文)。

上記の答えは短いバージョンであり、あなたは、代わりにこれを見るかもしれません:どこ-ObjectコマンドレットにのScriptBlock { }を渡すと$_を使用している

$file = Get-Content '\path\to\file' -Raw | ConvertFrom-Json 
$Result = $file.data | Where-Object {$_.id -ne 'Caption'} 

を使用して、その後、パイプラインの各項目を表すためにそのオブジェクトのIDプロパティが文字列Captionと一致していないかどうかを確認するために、比較演算子が等しくない演算子として-neを使用します。それがtrueと評価された場合、項目はパイプラインを通過できます。上記の例では、変数は$Result変数になります。文が偽と評価された場合、その項目はコレクション内の項目を破棄し、次の項目に移動します。

+0

説明をいただきありがとうございます。私はオブジェクトを読み、次のステップでデータを使用することができます。私はそれが使用され、プロセスが完了したときにそれを望みます。リストからこのオブジェクトを削除します。それをリストから削除する方法を教えてください。 –

+0

なぜそれをする必要がありますか?後でフィルタリングされたリストではどうしますか? whereコマンドレットを使用すると、フィルタリングされたリストを1つの変数に作成し、現在の方法で処理することができます。それは役に立ちますか? –

+0

一時的な場所で、データをしばらく保持してから次のリクエストを受け取ったときに使用します。リクエストが処理された後、アレイのリストを消去します。このプロセスに何か問題があれば教えてください。 –

関連する問題