L oop через функцию до уникального значения - PullRequest
0 голосов
/ 26 мая 2020

Я сделал сценарий PowerShell для работы с CSV-файлами. У меня проблема со вторым импортом. Скрипт разделен на несколько разделов, например:

Первая часть ---- Classi c объявление переменных
Вторая часть ---- L oop через мой первый csv
Третий часть ---- Функция от l oop до второй csv
Последняя часть ---- Действия с 3 последними разделами

Моя функция в третьей части выглядят так:

Function FindRef {
param (
    [Parameter(Mandatory)]
    $Name
)
$RefList = Import-Csv "PATHTOMYCSV\ref.csv" -Delimiter ';'

foreach ($Ref in $RefList) {
     if ($Ref.Company -eq $Name -or $Ref.Model -eq $Name) {          
        Write-Host "$($Ref.Company), $($Ref.Model) and reference is $($Ref.Reference)"
        $PhoneRef =  $Ref.reference 
    }
}

}

Когда я вызываю функцию y « FindRef » с параметром «Samsung», например, он возвращает мне :

Samsung Galaxy A21s REF
Samsung Galaxy J2 Core REF
Samsung Galaxy A Quantum REF
Samsung Galaxy A71 REF
Samsung Galaxy A51 REF 
Samsung Galaxy A21 REF 
Samsung Galaxy Tab S6 Lite REF
Samsung Galaxy M11 REF 
Samsung Galaxy A31 REF
Samsung Galaxy A41 REF 
Samsung Galaxy M21 REF 
Samsung Galaxy A11 REF 
Samsung Galaxy M31 REF 
Samsung Galaxy S20 Ultra 5G REF 
Samsung Galaxy S20 Ultra REF
Samsung Galaxy S20+ REF
Samsung Galaxy Z Flip REF 
Samsung Galaxy Tab S6 REF 

В приведенном выше примере с именем « Samsung » у меня слишком много результатов, мне нужна только одна ссылка.

Я хотел бы oop по этой функции, если она возвращает несколько результатов, пока у меня не будет уникальной ссылки.

Я не понимаю, как это сделать, у вас есть идеи?

PS: Результат моей функции, когда я ее вызываю:

RefFunction powershell

Мой csv:

Ref.csv
С уважением,

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Я наконец нашел решение своей проблемы, поделюсь с вами. Я был зациклен на своей функции, она была явно не нужна!

$PhoneRef = ""
$RefList = Import-Csv "C:\Users\SRV-VDG\Desktop\Scripy\Ref.csv" -Delimiter ';'
$I=0
while ($I -ne 1) {
    $Name = Read-host -Prompt 'Input the name '
    $I=0
    foreach ($Ref in $RefList) {
        if ($Ref.Company -eq $Name -or $Ref.Model -eq $Name) {          
            Write-Host "$($Ref.Company), $($Ref.Model) and reference is $($Ref.Reference)"
            $PhoneRef =  $Ref.Reference 
            $I++
        }
    }
}
0 голосов
/ 26 мая 2020

Вы можете попробовать что-то вроде этого, чтобы получить уникальную ссылку для определенного c типа названия компании / модели:

Function FindRef {
param (
   [Parameter(Mandatory)]
   $Name

$RefList = Import-Csv "PATHTOMYCSV\ref.csv" -Delimiter ';' | Where-Object {($_.Company -eq $Name -or $_.Model -eq $Name)} | Sort Company -Unique
$PhoneRef =  $RefList.Reference
Write-Output $PhoneRef

}

Примечание. Это решение будет работать, если вы хорошо разбираетесь в " любой "Ссылка, возвращенная для этой конкретной компании / бренда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...