Заполнение значения свойства в массиве из уже имеющего диапазон значений - PowerShell - PullRequest
0 голосов
/ 05 июля 2018

$ emails = Import-Csv "C: \ Testing \ Emails.csv"

$ * письма 1004 *

Email User-1@test.com User-2@test.com User-3@test.com User-4@test.com User-5@test.com User-6@test.com User-7@test.com User-8@test.com User-9@test.com User-10@test.com .... and So on...

$ DagSelection DAGname Sr GB-01 1 GB-04 2 GB-02 3 GB-03 4

$DagValues = $DagSelection.dagname
[PSCustomObject]$Array1 = @()
foreach ($x in $DagValues) {$Array1 += 1..100 | foreach {[PsCustomObject] 
@{Databases= $x + "-" + "{0:D3}" -f [int]$_}} }

$ Array1 Databases GB-01-001 GB-01-002 GB-01-003 GB-01-004 GB-01-005 .... and So on...

Моя проблема здесь с кодом, приведенным ниже. Он заполняет базы данных для каждого адреса электронной почты, указанного в столбце «Электронная почта». Но не в цикле. потому что диапазон закончен, и я хочу заполнить его, пока у нас не будет адреса электронной почты. Это означает, что если диапазон от GB-01-001 до GB-01-100, он должен начинаться заново с самого начала. Надеюсь, я выполнил требование здесь. Пожалуйста, дайте мне знать, если какие-либо вопросы.

$props = $Array1 | Get-Member -MemberType NoteProperty | select -ExpandProperty Name
foreach ($prop in $props){$emailsTemp | Add-Member -Name $prop -Value $null -MemberType NoteProperty -Force}
for ($i=0;$i -lt $emailsTemp.count; $i ++){ $emailsTemp[$i].Databases = 
$Array1[$i].Databases}
$emailsTemp

$ emailsTemp

Проверка почты
User-1@test.com GB-01-001 User-2@test.com GB-01-002 User-3@test.com GB-01-003 User-4@test.com GB-01-004 User-5@test.com GB-01-005 User-6@test.com GB-01-006 User-7@test.com GB-01-007 User-8@test.com GB-01-008 User-9@test.com GB-01-009 User-10@test.com GB-01-010 ...... User-401@test.com (I want to fill up here as well) User-402@test.com (I want to fill up here as well) User-403@test.com (I want to fill up here as well) `........ и т. д. До тех пор, пока идентификаторы электронной почты не появятся в первом столбце с именем Email .

1 Ответ

0 голосов
/ 05 июля 2018
#Starting Values
$emails = Import-Csv "C:\Testing\Emails.csv"
$DagSelection = Import-Csv "something.csv"
$DagValues = $DagSelection.dagname

#Get Database array
[array]$Databases=$null
ForEach ($x in $DagValues) {        
    For ($i=1;$i -lt 101;$i++) {
        [array]$Databases+=$x+"-"+("{0:D3}" -f [int]$i)
    }
}

#Output Item
class OutputClassItem {
    [string]$Email
    [string]$DB
}

#Zipping together Email Addresses with Databases
#If Database list runs out, repeat from beginning
[array]$OutputArray=$null
$loopcount=0
Do {
    For($j=0;$j -lt $Databases.Count -and $loopcount -lt $emails.Count;$j++) {
        $OutputItem = New-Object -Type OutputClassItem
        $OutputItem.Email=$emails[$loopcount]
        $OutputItem.DB=$Databases[$j]
        [array]$OutputArray+=$OutputItem
        $loopcount++
    }
} While ($loopcount -lt $emails.Count)

$OutputArray | Export-Csv "output.csv" -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...