Увеличение до достижения числа

У меня есть число, давайте используем 11 в качестве значения для примера. У меня есть точки доступа с именем (в данном случае) 0266AP1, 0266AP2, 0266AP3, 0266AP4 и так далее. 0266 - это номер сайта / магазина.

Выполнив вызов Cisco Prime API, я вижу, что на сайте 0266 есть 11 точек доступа. Что я хочу сделать, чтобы сделать действительно быстрый список для передачи моему контроллеру, так это приращение, пока я не достигну 11 или значения @count.

Function Get-AllApNames {
    Write-Verbose "Getting all APs for Store $Store"
    $req = "https://cpist/webacs/api/v3/data/AccessPointDetails.json?.group=$Store"
    Write-Verbose "Making request to $storeApReq"
    $idReq = Invoke-RestMethod -uri $storeApReq -method Get -ContentType 'application/json' -headers @{ Authorization = $auth }
    Write-Log "Making Get request to $storeApReq" -Level INFO -logfile $logFile
    $apIdCount =  $apIdListReq.queryResponse."@count"
    $apArray = New-Object System.Collections.ArrayList
}

Я удалил свои попытки, поскольку все они вроде как оказались пустыми, но я по сути хочу использовать $apIdCount в качестве точки остановки и 1 в качестве отправной точки.

Решение 1:

Function Get-AllApNames {
    Write-Verbose "Getting all APs for Store $Store"
    $req = "https://cpist/webacs/api/v3/data/AccessPointDetails.json?.group=$Store"
    Write-Verbose "Making request to $storeApReq"
    $idReq = Invoke-RestMethod -uri $storeApReq -method Get -ContentType 'application/json' -headers @{ Authorization = $auth }
    Write-Log "Making Get request to $storeApReq" -Level INFO -logfile $logFile
    $apIdCount =  $apIdListReq.queryResponse."@count"

    $apArray = New-Object System.Collections.ArrayList

    $apLoop = 1..$apIdCount

    foreach($i in $apLoop) {
        $accPt = $Store + 'AP' + $i
        Write-Host $accPt
    }
}
0
0
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Упомянув о том, что 1 является моей отправной точкой, а $apIdCount - моей точкой остановки, я понял простой способ достижения этого.

Function Get-AllApNames {
    Write-Verbose "Getting all APs for Store $Store"
    $req = "https://cpist/webacs/api/v3/data/AccessPointDetails.json?.group=$Store"
    Write-Verbose "Making request to $storeApReq"
    $idReq = Invoke-RestMethod -uri $storeApReq -method Get -ContentType 'application/json' -headers @{ Authorization = $auth }
    Write-Log "Making Get request to $storeApReq" -Level INFO -logfile $logFile
    $apIdCount =  $apIdListReq.queryResponse."@count"

    $apArray = New-Object System.Collections.ArrayList

    $apLoop = 1..$apIdCount

    foreach($i in $apLoop) {
        $accPt = $Store + 'AP' + $i
        Write-Host $accPt
    }
}

Это выводит именно то, что я ищу.

0266AP1
0266AP2
0266AP3
0266AP4
0266AP5
0266AP6
0266AP7
0266AP8
0266AP9
0266AP10
0266AP11

Я не уверен, что это лучший способ справиться с этим, поэтому пока оставлю это открытым для более опытных мнений!

То, что вы описываете, называется циклом for:

for ($i=1; $i -le $apIdCount; $i++) {
    $accPt = $Store + 'AP' + $i
    Write-Host $accPt
}

См. Также эта статья Technet в структурах управления циклом в PowerShell.

Для меня это имеет смысл, в отличие от петли foreach.

CodeSpent 13.09.2018 21:49

Другие вопросы по теме