Найдите следующий рабочий день из цикла JSON while в PowerShell - PullRequest
0 голосов
/ 10 апреля 2019

Я нашел симпатичный маленький JSON API от Kayaposoft , который даст значение true / false, если данный день является рабочим или нет (например, воскресенье 14 апреля; isWorkDay: false). Этот API также может соблюдать наши местные праздники, такие как Vappu в Финляндии и т. Д.

Итак, когда я пытаюсь написать сценарий в PowerShell (будучи новичком), я быстро осознал проблему с кодом ниже. Хотя код работает, он не очень практичен и зависит от каждой переменной дважды (один раз для его настройки и один раз в цикле).

Есть ли способ украсить этот код? Можно ли сделать это более практичным и / или не использовать каждую переменную дважды?

$date = (Get-Date).AddDays(11)
$jsonDate = $date.ToString('dd-MM-yyyy')

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$jsonRequest = Invoke-WebRequest "https://kayaposoft.com/enrico/json/v2.0/?action=isWorkDay&date=$jsonDate&country=fin" | ConvertFrom-Json

while ($jsonRequest.isWorkDay -ne $true) {

    $date = $date.AddDays(1)
    $jsonDate = $date.ToString('dd-MM-yyyy')

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    $jsonRequest = Invoke-WebRequest "https://kayaposoft.com/enrico/json/v2.0/?action=isWorkDay&date=$jsonDate&country=fin" | ConvertFrom-Json

    Write-Host $jsonDate
    Write-Host $jsonRequest

}

Results:
22-04-2019
@{isWorkDay=False}
23-04-2019
@{isWorkDay=True}

1 Ответ

1 голос
/ 10 апреля 2019

Примерно так:

$date = (Get-Date)
# not sure if you really need this ?!?
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# do { ... } while (...) - execute at least once
do {

    $jsonDate = $date.ToString('dd-MM-yyyy')    
    $jsonRequest = Invoke-WebRequest "https://kayaposoft.com/enrico/json/v2.0/?action=isWorkDay&date=$jsonDate&country=fin" | ConvertFrom-Json
    $date = $date.AddDays(1)

    Write-Host $jsonRequest
    Write-Host $jsonDate
}
while ($jsonRequest.isWorkDay -ne $true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...