PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2006-12-24

[]PowerShellからWebサービスを利用する


AmazonWebServiceを利用してみよう!

STEP1:AmazonWebServiceへのリファレンスコードを用意する

  1. VB2005を起動してWindowsアプリケーションの新規プロジェクトを作成。
    プロジェクト名は任意。
  2. 「Web参照の追加」で以下のURLを追加。
    http://webservices.amazon.com/AWSECommerceService/JP/AWSECommerceService.wsdl
    Web参照名は「AmazonWebService」に設定して参照の追加ボタンを押下する。
  3. プロジェクトを保存した後、Web References\AmazonWebServiceの下に自動生成されたファイルの中にある「Reference.vb」を任意の場所にコピーしておく。
    今回は「C:\AmazonWebService\Reference.vb」に置きます。
  4. Reference.vbを開き、79行目を書き換える。
    変更前:Me.Url = 〜〜
    変更後:Me.Url = "http://soap.amazon.co.jp/onca/soap?Service=AWSECommerceService"
    (79行目はapp.configから設定を読み込んでいる部分で、書き換えることでapp.configとの関連を排除しています。)

STEP2:AmazonWebServiceを利用するスクリプトを用意する

以下の「Run-AmazonWebService.ps1」をパスの通った所に置く。

ただし、[アクセスキー]という箇所は、各自の「Amazon Web Serviceのアクセスキー」を貼り付けてください。

アクセスキーの取得方法は「アマゾンWebサービスを利用するには」でググれば詳しい解説が見つかります。

Run-AmazonWebService.ps1
Param([String]$refVB, [String]$asin)

# AmazonWebServiceを利用するライブラリを生成する
$files = @($refVB)
$provider = New-Object Microsoft.VisualBasic.VBCodeProvider
$params = New-Object CodeDom.Compiler.CompilerParameters
$params.GenerateInMemory = $True
$refDLL = "System.Xml.dll","system.web.services.dll"
$params.ReferencedAssemblies.AddRange($refDLL)
$compilerResults = $provider.CompileAssemblyFromFile($params, $files)

# AmazonWebServiceを利用してASINで書籍を検索する
$azn = New-Object AmazonWebService.AWSECommerceService
$req = New-Object AmazonWebService.ItemLookupRequest
$req.ItemId = @($asin)
$req.IdType = [AmazonWebService.ItemLookupRequestIdType]::ASIN
$req.Condition = [AmazonWebService.Condition]::All
$req.ResponseGroup = @("Large", "Images", "ItemAttributes")
$look = New-Object AmazonWebService.ItemLookup
$look.AWSAccessKeyId = "[アクセスキー]"
$look.Request = $req
$res = $azn.ItemLookup($look)
$r = $res.Items
$bk = $r[0].Item[0]

# ASINで検索した書籍情報を表示する
Write-Host $bk.ItemAttributes.Title
Write-Host "<Author>"
Write-Host $bk.ItemAttributes.Author[0]
Write-Host "<Publisher>"
Write-Host $bk.ItemAttributes.Publisher
Write-Host "<Image>"
Write-Host $bk.MediumImage.URL

STEP3:AmazonWebServiceを利用する

Run-AmazonWebService.ps1の使用方法

Run-AmazonWebService [リファレンスコードのパス] [ASINコード]

Run-AmazonWebService.ps1の実行例

Windows Powershell in Action

PS C:\> Run-AmazonWebService.ps1 "C:\AmazonWebService\Reference.vb" "1932394907"
<Title>
Windows Powershell in Action
<Author>
Bruce Payette
<Publisher>
Manning Pubns Co
<Image>
http://ec2.images-amazon.com/images/P/1932394907.01._SCMZZZZZZZ_V34376568_.jpg

Imageはこれ↓

http://ec2.images-amazon.com/images/P/1932394907.01._SCMZZZZZZZ_V34376568_.jpg

Connection: close