2013年7月4日木曜日

◆Invoke-WebRequestサンプル

以前もちょっと取り上げたV3で追加になったコマンド。

実際に使う機会があったのでサンプルとして記載しておく。

かつてノーツで作られていた議事録をSharePointに移行したリストがあったのだが、移行ツールに不具合があるのか稀に添付文書のリンク切れが発生している。
そこで、リンク切れをチェックしてリストアップするスクリプトを書いた。

リスト形式(一覧)では添付の有無しか判らず、そのパスは明細を読む必要がある。
そこで、リストを一旦CSVに落として添付があるものについて「Invoke-WebRequest」で読み込んでみる。
そこから「href」に「Attachment」(すなわち添付)の文字があるものを抽出して存在チェックする。
とりあえず存在チェック自体も「Invoke-WebRequest」で読んでみてエラーになるかどうかで判断している。(これについては他にもっと良い方法が有るのかも・・・)

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015

$url = "http://server/sites/hoge/MEETING/Lists/List/DispForm.aspx?ID={0}"
$csv = Import-Csv "F:\Desktop\打ち合わせ報告書.csv" -Encoding default
$csv | %
{
 
if($_.添付 -eq 1
){
   
$_.整理番号 | Tee-Object -Variable number
    $urlString = $url -f $_.
ID
   
$web = Invoke-WebRequest -uri $urlString -UseDefaultCredentials
 
   
$web.links | ?{$_.href -like "*attachment*"} | %
{
     
$_.href |  %
{
       
Invoke-WebRequest -uri $_ -UseDefaultCredentials | Out-Null
        if($? -eq $false){$number >> "F:\Desktop\整理番号.txt"}
      }
    }
  }
}
<!-

0 件のコメント:

コメントを投稿