首页 > 解决方案 > Powershell Get values listed

问题描述

I'm trying to get values from a hashtable but i'm having some difficulty with that.

$allMediafiles is a Hashtable.

This is my code:

$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;
}

My result:

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

I need something like this:

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

Thanks for any help!!

$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   

标签: powershell

解决方案


您只需要再次调用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
    }
}


推荐阅读