2013-11-19 4 views
1

У меня проблема с удалением дубликатов из моего массива.Удалить дубликаты из лицензионного массива

$DataSheet = Import-Csv C:\Temp\Groups.CSV 
$LicenseData = @() 

foreach ($Group in $DataSheet) { 
    $GroupMembership = Get-ADGroupMember $Group.Name | Select SamAccountName 
    foreach ($Member in $GroupMembership) { 
     $LicenseInfo = "" | Select "ID","GroupName","EngineLicense","UserLicense" 
     $LicenseInfo.ID = $Member.SamAccountName 
     $LicenseInfo.GroupName = $Group.Name 
     $LicenseInfo.EngineLicense = $Group.EngineLicense 
     $LicenseInfo.UserLicense = $Group.UserLicense 
     $LicenseData += $LicenseInfo 
    } 
} 

$LicenseData | Sort-Object ID | 
    Export-Csv C:\Temp\LicenseData.CSV -NoTypeInformation -Force 
$EngineLicense = $LicenseData | Group -Property $EngineLicense | 
       ForEach {$_.Group | Sort-Object EngineLicense -Unique} | 
       Select EngineLicense, ID | 
       Sort-Object EngineLicense 
$UserLicense = $LicenseData | Group -Property $UserLicense | 
       ForEach {$_.Group | Sort-Object UserLicense -Unique} | 
       Select UserLicense, ID | 
       Sort-Object UserLicense 

Это пример того, что $LicenseData выглядит

 
ID  GroupName EngineLicense UserLicense 
--  --------- ------------- ----------- 
TestUser1 Group A Mobile  Professional 
TestUser1 Group B ERQA   ERQA 
TestUser1 Group B ERQA   ERQA 
TestUser2 Group A Mobile  Professional 
TestUser2 Group B ERQA   ERQA 

$EngineLicense выглядит

 
EngineLicense ID 
------------- -- 
ERQA   TestUser1 
Mobile  TestUser1 

То, что я пытаюсь сделать, это показать, потребляемые лицензии для каждого пользователя, но удаление дубликатов лицензии для пользователя. В настоящее время -Unique удаляет дубликаты лицензий на двигатель.

В идеале это то, что я представляю себе на вид. Обратите внимание, что показаны лицензии, потребляемые для обоих пользователей, и удаленная дублируемая запись ERQA для TestUser1.

 
EngineLicense ID 
------------- -- 
ERQA   TestUser1 
Mobile  TestUser1 
ERQA   TestUser2 
Mobile  TestUser2 

ответ

3

, если я не то недоразумение следующее должно произвести желаемый результат:

$LicenseData | Select-Object -Unique EngineLicense, ID | 
    Sort-Object ID, EngineLicense 
+0

Это работало. Большое спасибо! – user3007002

Смежные вопросы