मैं हैशटेबल से मूल्य प्राप्त करने की कोशिश कर रहा हूं लेकिन मुझे इसके साथ कुछ कठिनाई हो रही है।

$allMediafiles एक हैशटेबल है।

यह मेरा कोड है:

$AllDoc =  ($allMediaFiles | Group-Object "video_audio" | ? {$_.name -eq 'document'}).Group

$obj2 = [pscustomobject]@{
    'FileTypes' = ($AllDoc.video_audio | Group ).Name; 
    'Format' = ($AllDoc.Format | Group).Values ;
    'O_OpenAccess' = ($AllDoc | Group-Object "SecurityTag" | ? {$_.Name -eq "O_OpenAccess"}).count; 
    'U_UserAccess' = ($AllDoc | Group-Object "SecurityTag" | ? {$_.Name -eq "U_UserAccess"}).count; 
    'S_SubscriberAccess' = ($AllDoc | Group-Object "SecurityTag" | ? {$_.Name -eq "S_SubscriberAccess"}).count;
    'REVIEW_ELDP' = ($AllDoc | Group-Object "SecurityTag" | ? {$_.Name -eq "REVIEW_ELDP"}).count;
}

मेरा परिणाम:

FileTypes Format           O_OpenAccess U_UserAccess S_SubscriberAccess REVIEW_ELDP
--------- ------           ------------ ------------ ------------------ -----------
document  {eaf, pfsx, pdf}            0           17                  2           0

मुझे कुछ ऐसा ही चाहिए:

FileTypes Format           O_OpenAccess U_UserAccess S_SubscriberAccess REVIEW_ELDP
--------- ------           ------------ ------------ ------------------ -----------
document  eaf                        0           14                  1           0
          pfsx                       0            3                  0           0
          pdf                        0            0                  1           0

किसी भी मदद के लिए धन्यवाद!!

$Alldoc =

video_audio SecurityTag        Duration Format
----------- -----------        -------- ------
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    S_SubscriberAccess          eaf   
document    U_UserAccess                pfsx  
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                eaf   
document    U_UserAccess                pfsx  
document    U_UserAccess                pfsx  
document    U_UserAccess                pfsx  
document    U_UserAccess                eaf   
document    S_SubscriberAccess          pdf   
document    U_UserAccess                eaf   
2
Paulo 8 सितंबर 2020, 21:40

1 उत्तर

सबसे बढ़िया उत्तर

आपको केवल Group-Object को एक बार फिर कॉल करना होगा - रिकॉर्ड को Format द्वारा समूहीकृत करने के लिए - फिर परिणामों पर लूप करें:

foreach($format in $Alldoc |Group-Object -Property Format)
{
    [pscustomobject]@{
        # Just grab the first one - they're all identical
        'FileTypes' = $format.Group[0].video_audio
        # Grab the format Name from when we grouped them
        'Format' = $format.Name
        # For the remaining ones, simply count the number of occurences
        'O_OpenAccess' = @($format.Group |? {$_.SecurityTag -eq "O_OpenAccess"}).Count
        'U_UserAccess' = @($format.Group |? {$_.SecurityTag -eq "U_UserAccess"}).Count 
        'S_SubscriberAccess' = @($format.Group |? {$_.SecurityTag -eq "S_SubscriberAccess"}).Count
        'REVIEW_ELDP' = @($format.Group |? {$_.SecurityTag -eq "REVIEW_ELDP"}).Count
    }
}

3
Mathias R. Jessen 8 सितंबर 2020, 22:04