sans_souciの日記

無憂茶房

/powershell/Invoke-WebRequest を使用してサーバ上のファイルの情報を取得する

Invoke-WebRequest を使用して接続先のファイルの情報(更新日時)を取得したい

使用する言語は Powershell v5.1

ソース

# コメント

# with-bom  
# 日本語を含む場合は bom ありで保存する必要あり
# .psm1 にする

# progress information not displayed :
$progressPreference = 'silentlyContinue'

# Basic Authenticationj -------------------------------------------
$yourid  = '' # 必要   
$yourpwd = '' # 必要
function mygetcred{
  $yourconvpwd = ConvertTo-SecureString $yourpwd -AsPlainText -Force
  $mycred = New-Object System.Management.Automation.PSCredential($yourid, $yourconvpwd)
  
  return $mycred
} 

# parse : [DateTime]::ParseExact("20171231","yyyyMMdd", $null)
function mychangedate{
  param (
      $fromsvn
  )

  # myformat
  $myformat = "ddd, "

  # Sat, 04 Sep 2021 00:48:40 GMT 
  $mycultureinfo= [System.Globalization.CultureInfo]::CreateSpecificCulture("en-US")  
  $result = [DateTime]::ParseExact($fromsvn,$myformat, $mycultureinfo)
  return $result
}

# Main / $mytype は A-or-B で固める。
function getmysvninfo{
  Param(
    [ValidateSet(“func”, “cont”)]$mytype,
    $myfilename
  )

  $baseurl = 'http://127.0.0.1:8000/'

  if ( $null -eq $mytype -or $null -eq $myfilename){
    Write-host "----------------------------------------------------"
    Write-Host "引数を二つ指定してください"
    Write-Host "第一引数: func または cont"
    Write-Host "第二引数: 対象のテキストファイルまでのパス"
    write-host "■ 使用例:"
    Write-Host "  getmysvninfo func ./some.txt"
    Write-Host "  または"
    Write-host "  getmysvninfo cont ./some.txt"
    Write-host "----------------------------------------------------"
    exit
  }
  else{
  # Write-Host "arg01: [ $mytype ] arg02: [ $myfilename ]"
  # ファイルを読み込む処理
    foreach ($item in $(get-content $myfilename)) {
    # echo "--- $item ---"
    # http の情報を取得する: curl みたいの
    # Invoke-WebRequest -Uri "http://path/to/url/" -Credential $mycred
    # Invoke-WebRequest -Uri "http://127.0.0.1:8000/"$mytype
    # echo "http://127.0.0.1:8000/$mytype$item"
    # Invoke-WebRequest -Uri "http://127.0.0.1:8000/$mytype$item" -UseBasicParsing  # -Credential $mycred
      $urlfull = ${baseurl}+${mytype}+${item}      
##
      $statusCode = 0
      $myresult = $null

      try{
        $myresult = Invoke-WebRequest -UseBasicParsing -uri $urlfull
        $statusCode = $myresult.StatusCode
      }catch [System.Net.WebException]{
        $statusCode = $_.Exception.Response.StatusCode.value__
      }
##
      if ($statuscode -eq 200) {
        $mylastdate = ([datetime]$myresult.Headers['Last-Modified']).Tostring("yyyy-MM-dd HH:mm:ss")
        Write-Output "$mylastdate : $statuscode : $item : $urlfull"        
      }else{
        Write-Output "---- Not Found ---- : $statuscode : $item : $urlfull"
      }
    }
  }
}

Miscellaneous

  • はてなブログの書き方は Markdownの書き方を混ぜてもおkみたい。。
  • ソースに ps1 としてあげれば、Poweshell用の色付けをしてくれる。
  • 次のテーマ: docs.microsoft.com
    • 書式指定