Powershell: удалить дублирующуюся запись в arraylist - PullRequest
0 голосов
/ 05 марта 2019

В моем Powershellscript я читаю некоторые данные из csv-файла в Arraylist.

На втором шаге я исключаю каждую строку без конкретного символа: (.

Натретий шаг Я хочу исключить каждую двойную запись.

Пример для моего списка:

Klein, Jürgen (Klein01); salesmanagement national 
Klein, Jürgen (Klein01); salesmanagement national 
Meyer, Gerlinde (Meyer02); accounting 
Testuser 
Admin1
Müller, Kai (Muell04); support international

Я использую следующий скрипт:

$Arrayusername = New-Object System.Collections.ArrayList
$NewArraylistuser = New-Object System.Collections.ArrayList
$Arrayusername = Get-Content -Path "C:\Temp\User\Userlist.csv"
for ($i=0; $i -le $Arrayusername.length; $i++)
{
    if ($Arrayusername[$i] -like "*(*")
    {
        $NewArraylistuser.Add($Arrayusername_ads[$i])
    }
    $Array_sorted = $NewArraylistuser | sort
    $Array_sorted | Get-Unique
}

Но переменная $Array_sorted все еще имеет двойные записи.Я не нахожу ошибки.

1 Ответ

0 голосов
/ 05 марта 2019

Некоторые идеи, как вы могли бы изменить свой код:

  1. Используйте существующую команду для импорта .csv файлов с разделителем ;.
  2. Фильтруйте вывод с помощью Where-Objectчтобы включать имена только с (.
  3. Выберите только уникальные объекты с Select-Object, или, если вы хотите отсортировать объект, используйте Sort-Object с теми же параметрами.

Примерно так должно работать:

Import-csv -Delimiter ';' -Header "Name","Position" -Path "C:\Temp\User\Userlist.csv" | Where-Object {$_.Name -like "*(*"} | Sort-Object -Unique -Property Name,Position
...