Skip to content

Commit

Permalink
Version 1.6
Browse files Browse the repository at this point in the history
added Group-ObjectFast
  • Loading branch information
TobiasPSP committed Nov 30, 2019
1 parent b72c9e5 commit b5ecfdb
Show file tree
Hide file tree
Showing 13 changed files with 89 additions and 0 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
89 changes: 89 additions & 0 deletions PSOneTools/1.6/Group-ObjectFast.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@


function Group-ObjectFast
{
[CmdletBinding(DefaultParameterSetName='Analysis')]
param
(
[Parameter(Mandatory)]
[string[]]
$Property,

[Parameter(ParameterSetName='Analysis')]
[Switch]
$NoElement,

[Parameter(ParameterSetName='Separation')]
[Switch]
$AsHashtable,

[Parameter(ParameterSetName='Separation')]
[Switch]
$AsString,

[Parameter(Mandatory, ValueFromPipeline)]
[object]
$InputObject
)

begin
{
# create an empty hashtable
$hashtable = @{}
}


process
{
# calculate the unique key based on the properties
# submitted by the user
if ($AsString -or $PSCmdlet.ParameterSetName -eq 'Analysis')
{
$key = $(foreach($_ in $Property) { $InputObject.$_ }) -join ','
}
else
{
$key = foreach($_ in $Property) { $InputObject.$_ }
}

# check to see if the key is present already
if ($hashtable.ContainsKey($key) -eq $false)
{
# add an empty array list
$hashtable[$key] = [Collections.Arraylist]@()
}

# add element to appropriate array list:
$null = $hashtable[$key].Add($InputObject)
}

end
{
if ($AsHashtable)
{
return $hashtable
}
elseif ($NoElement)
{
foreach($_ in $hashtable.Keys)
{
[PSCustomObject]@{
Count = $hashtable[$_].Count
Name = $key
}
}
}
else
{
foreach($_ in $hashtable.Keys)
{
[PSCustomObject]@{
Count = $hashtable[$_].Count
Name = $key
Group = $hashtable[$_]
}
}
}
}

}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit b5ecfdb

Please sign in to comment.