Как добавлять аргументы из текстового файла в скрипт PowerShell?

Подскажите, у меня есть текстовый файл с перечислением серийного номера устройств, и скрипт PowerShell в котором на основании серийного номера устройства получаются данные об устройстве через апи и записываются в файл, если прямо в скрипте указать серийник то все работает отлично, но вручную прогонять 10000 устройств невозможно, как реализовать автоматического поочередное добавление серийников из txt файла в скрипт?
P.S. серийные номера динамически изменяются.

UPD: для теста записал в текстовый файл серийный, написал переменную $serial = @(Get-Content -Path "C:\serial.txt")
запустил цикл типа
foreach ($serialID in $serial) {
...
добавляю в апи запрос $serial - "https://..."+$serial"+..."
....
}
если в файле одно значение то все хорошо, если два и более то по всей видимости он сразу вставляет все значения в запрос апи и соотвественно я получаю ошибку
  • Вопрос задан
  • 251 просмотр
Пригласить эксперта
Ответы на вопрос 4
Fzero0
@Fzero0
Вечный студент
Get-Content -Path "C:\serial.txt" -Raw
Ответ написан
Комментировать
@MaxKozlov Куратор тега PowerShell
Правильно добавлять не $serial - в нём список сериалов, а $serialID - переменную из цикла
или логичнее тогда уж
# Пляски @() вокруг Get-Content не нужны, foreach и так всё переберёт как массив, если вы не на PSv2
$serials = Get-Content ...
foreach ($serial in $serials) {
  Invoke-WebRequest "https://...api..$serial..."
}


А если их действительно 10000 лучше использовать foreach -parallel из седьмого PS или его ранние варианты из PoshRSJob, Invoke-Parallel, ThreadJob...
Ответ написан
@davchik Автор вопроса
Всем спасибо, сделал из своего примера, по какой то причине если указать serialID он выдает строку которая есть в файле, а если например задать serial2 то все работает корректно
Ответ написан
@alhaos
param (
    $fileWithSerialNumbersName = "d:\serials.txt"
)

# create example file
@"
00-00-000
00-00-001
00-00-002
"@ | Out-File $fileWithSerialNumbersName

Get-Content -Path "C:\serial.txt" | ForEach-Object{
    "https://...+$_+..."
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы