ग्रुप-ऑब्जेक्ट के साथ बनाए गए प्रत्येक समूह से नवीनतम तिथि कैसे प्राप्त करें

मेरे पास 3 गुणों के साथ कस्टम ऑब्जेक्ट्स की एक सरणी है।

PS> $aOutput | select -first 10 | ft -auto

MifProblem    FileCreationTime      Client
----------    ----------------      ------
dataldr.box   12/2/2013 9:45:50 AM  UAPURO1-NURSE1
DeltaMismatch 11/25/2013 7:01:37 AM UAPISTRAINING3
DeltaMismatch 11/23/2013 2:52:21 AM PICASO-2123
DeltaMismatch 11/24/2013 7:16:40 AM JADE05
DeltaMismatch 11/29/2013 8:21:10 AM JADE05
DeltaMismatch 11/19/2013 6:31:09 AM JADE05
DeltaMismatch 12/1/2013 5:25:41 AM  JADE05
DeltaMismatch 11/20/2013 5:40:33 AM JADE05
DeltaMismatch 11/18/2013 8:05:43 AM JADE05
DeltaMismatch 11/21/2013 8:30:45 AM JADE05

मैं यह पता लगाने की कोशिश कर रहा हूं कि मैं क्लाइंट द्वारा इस सरणी को सभी MifProblem और नवीनतम फ़ाइलक्रिएटटाइम की गिनती के साथ कैसे समूहीकृत कर सकता हूं।

यहां आउटपुट है जो मैं उपरोक्त सरणी के आधार पर देखना चाहता हूं:

Client         MifProblems LatestFileCreationTime
------         ----------- ----------------------
UAPURO1-NURSE1 1           12/2/2013 9:45:50 AM
UAPISTRAININ3  1           11/25/2013 7:01:37 AM
PICASO-2123    1           11/23/2013 2:52:21 AM
JADE05         7           12/1/2013 5:25:41 AM
0

2 उत्तर

एक तरीका है हैश टेबल का उपयोग accumulators के रूप में करना है (परीक्षण नहीं किया गया है, वी 3 की आवश्यकता है)

$MIFProblem_ht = @{}
$LastCreate_ht = @{}

$aOutput |
 foreach {
   $MIFProblem_ht[$_.client]++
   if ($_.FileCreationTime -gt $LastCreate_ht[$_.client])
     {$LastCreate_ht[$_.client] = $_.FileCreationTime}
   }

$MIFProblem_ht.keys |
 foreach { [PSCustomObject]@{
   Client = $_
   MifProblems = $MIFProblem_ht[$_]
   LastFileCreationTime = $LasCreate_ht[$_]
  }
0
जोड़ा

इसे आज़माएं:

$aOutput | group Client | 
select Count,Name,@{n='Client';e={$_.Group | sort FileCreationTime | select -l 1 -exp FileCreationTime }}
0
जोड़ा
यह बहुत अच्छा काम करता है! चिमटा के लिए धन्यवाद ओपी और Ansgar।
जोड़ा लेखक Adam Bertram, स्रोत
sort -Desc या select -Last 1 का उपयोग करें, अन्यथा आप नवीनतम (यानी नवीनतम) फ़ाइल के बजाय सबसे पुराने का चयन करेंगे।
जोड़ा लेखक Ansgar Wiechers, स्रोत
नहीं, यह नहीं करता है। अंतिम ग्राहक (JADE05) के परिणाम देखें।
जोड़ा लेखक Ansgar Wiechers, स्रोत
मैं नहीं देखता कि यह संभवतः कैसे काम कर सकता है। डिफ़ॉल्ट क्रम क्रम आरोही है, इसलिए 12/1/2013 5:25:41 पूर्वाह्न को अंतिम बाहर आना चाहिए, यहां तक ​​कि फ़ील्ड को किसी तारीख में परिवर्तित किए बिना (और यह करता है मैं, यहां देखें)।
जोड़ा लेखक Ansgar Wiechers, स्रोत
मैंने इसे इस तरह इस्तेमाल किया क्योंकि यह ओपी के अनुरोधित आउटपुट से मेल खाता था।
जोड़ा लेखक Shay Levy, स्रोत
मैंने आउटपुट (पहले 10 आइटम) की प्रतिलिपि बनाई और इसे यहां-स्ट्रिंग के रूप में संशोधित किया (सामग्री को अल्पविराम से अलग किया गया है, फिर पाइप किया गया है: कनवर्टफ्रॉम-सीएसवी | समूह क्लाइंट | गिनती, नाम, @ {n = 'क्लाइंट ... मुझे मिलता है ओपी के वांछित आउटपुट के समान परिणाम।
जोड़ा लेखक Shay Levy, स्रोत
तुम सही हो, मेरा बुरा! अब मैं देख सकता हूं कि मैं कहां गलत था, मुझे लगता है कि मैंने केवल पहली 3 तारीखों की संक्षेप में जांच की और माना कि चौथा भी सटीक है। मैंने इसे बदल दिया - कम से कम। प्रतिक्रिया के लिए धन्यवाद!
जोड़ा लेखक Shay Levy, स्रोत