Reputation: 361
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
Upvotes: 2
Views: 136
Reputation: 174730
You only need to call Group-Object
once more - to group the records by Format
- then loop over the results:
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
}
}
Upvotes: 3