Get-Currency.Ps1

Я уже не помню зачем мне понадобилось посмотреть курсы…🙂

Но вот результат — скрипт открывает страничку сайта cbr.ru и берет оттуда курсы популярных валют к рублю. По умолчанию берутся сегодняшние курсы, но можно указать и другую дату.

Get-Currency.Ps1
param ($Name = "*", [datetime]$Date = (Get-Date)) $WClient = new-object System.Net.WebClient $url = "http://www.cbr.ru/currency_base/D_print.asp?date_req=$(Get-Date $Date -f 'dd\/MM\/yyyy')" $data = $WClient.DownloadString($url) $reg = [regex]'<td align="right" >(?<ID>.+?)</td>\s*<td align="left" >&nbsp;&nbsp;(?<Name>.+?)</td>\s*<td align="right" >(?<Modifier>.+?)</td>\s*<td>&nbsp;&nbsp;(?<FullName>.+?)</td>\s*<td align="right">(?<Rate>.+?)</td>' $match = $reg.match($data) while ($match.Success) { $Rate = [double]($match.Groups["Rate"].value -replace ",",".") / $match.Groups["Modifier"].value $object = New-Object -TypeName "PSObject" $object | Add-Member -MemberType "NoteProperty" ` -Name "ID" -Value ($match.Groups["ID"].value) $object | Add-Member -MemberType "NoteProperty" ` -Name "Name" -Value ($match.Groups["Name"].value) $object | Add-Member -MemberType "NoteProperty" ` -Name "FullName" -Value ($match.Groups["FullName"].value) $object | Add-Member -MemberType "NoteProperty" ` -Name "Rate" -Value $Rate if ($object.Name -like $Name) { Write-Output $object } $match = $match.nextMatch() }

Используем:

[PS C:\...\Scripts] .\Get-Currency.Ps1 ID Name FullName Rate -- ---- -------- ---- 036 AUD Австралийский доллар 21,5308 974 BYR Белорусских рублей 0,0114504 208 DKK Датских крон 4,76807 840 USD Доллар США 24,7196 978 EUR Евро 35,5839 352 ISK Исландских крон 0,38953 398 KZT Казахских тенге 0,204484 124 CAD Канадский доллар 25,0604 156 CNY Китайских юаней Жэньминьби 3,36779 949 TRY Новая турецкая лира 20,8604 578 NOK Норвежских крон 4,43847 960 XDR СДР 38,6323 702 SGD Сингапурский доллар 16,9999 980 UAH Украинских гривен 4,86128 826 GBP Фунт стерлингов Соединенного Королевства 48,8781 752 SEK Шведских крон 3,74965 756 CHF Швейцарский франк 21,3616 392 JPY Японских йен 0,216421 [PS C:\...\Scripts] .\Get-Currency.Ps1 usd ID Name FullName Rate -- ---- -------- ---- 840 USD Доллар США 24,7196 [PS C:\...\Scripts] .\Get-Currency.Ps1 usd -date "02/12/2007" ID Name FullName Rate -- ---- -------- ---- 840 USD Доллар США 26,3473 [PS C:\...\Scripts] .\Get-Currency.Ps1 *d | Format-Table -Auto ID Name FullName Rate -- ---- -------- ---- 036 AUD Австралийский доллар 21,5308 840 USD Доллар США 24,7196 124 CAD Канадский доллар 25,0604 702 SGD Сингапурский доллар 16,9999

Ну или можно просто получить значение курса:

[PS C:\...\Scripts] (.\Get-Currency.Ps1 gbp).rate 48,8781

А если используется эта полезная функция, то вот так:

[PS C:\...\Scripts] .\Get-Currency.Ps1 gbp|... rate 48,8781

Ну и еще примерчики🙂

[PS C:\...\Scripts] "50 фунтов стерлингов = $((.\get-currency.ps1 gbp).rate * 50) рублей" 50 фунтов стерлингов = 2443.905 рублей

PowerGadgets:

charts

Опубликовано в PowerShell. 5 комментариев »

комментариев 5 to “Get-Currency.Ps1”

  1. Bishop Says:

    А вот по такому адресу
    http://cbr.ru/scripts/XML_daily.asp?date_req=26/12/2007
    можно получать курсы в XML.

  2. Xaegr Says:

    2 Bishop:
    Спасибо!🙂 Не знал, сегодня попробую переделать — будет проще🙂

  3. Александр Says:

    Тоже не знал возьму на заметку.

  4. Get-Currency.Ps1 v2 « PowerShell и другие скрипты Says:

    […] Bishop за то что показал урл для получения курсов в xml Тот же самый скрипт, но в 2 раза короче, не зависящий от смены […]

  5. Bishop Says:

    Там (http://cbr.ru/scripts/root.asp) вообще много сервисов: XML, SOAP, RSS. Только запрятали же🙂


Обсуждение закрыто.

%d такие блоггеры, как: