LoginSignup
2
0

More than 1 year has passed since last update.

Webアクセステスト自動実行スクリプト by PowerShell

Last updated at Posted at 2021-12-04

複数のWebサイトへのアクセステストを自動実行、結果をCSVファイル出力するスクリプトをPowerShellで作成したので備忘兼ねて共有する。
スクリプト前段は、テスト日時、実行端末のPC名・ユーザ名、端末インターフェース・IP(LAN/WAN)、DNS設定、プロキシ設定を取得する。
スクリプト後段は、URLリストのファイルを読み込み、DNS名前解決IP、Invoke-WebRequestで得られるステータス情報、レスポンス値を取得してCSVファイルに書き込む。

使用方法

①「web-acccess-test.ps1」と「url_list.csv」を同じフォルダ内に置く。
②「web-acccess-test.ps1」を右クリックして「PowerShellで実行」をクリック。
③テスト結果「Result-yyyyMMdd-HHmmss.csv」がフォルダ内に出力される。
image.pngimage.png

※上記結果は、Google関連のサイトで試した結果。「https://www.google.com/test」は実在しないページ。

使用するスクリプトとURLリストファイル

web-acccess-test.ps1
$FormatDate = (Get-Date).ToString("yyyyMMdd-HHmmss")
$FileName = "Result-" + $FormatDate + ".csv"
$outFile = ".\" + $FileName

"Test Date,$((Get-Date).ToString("yyyy/MM/dd-HH:mm:ss"))" | Out-File $outFile -encoding UTF8

$u= [System.Security.Principal.WindowsIdentity]::GetCurrent()
"Test PC\User,$($u.name)" | Out-File $outFile -encoding UTF8 -append

$TestNetCon = Test-NetConnection www.google.com
"Source Interface,$($TestNetCon.InterfaceAlias)" | Out-File $outFile -encoding UTF8 -append
"Source IP(LAN),$($TestNetCon.SourceAddress.IPAddress)" | Out-File $outFile -encoding UTF8 -append
"Source IP(WAN),$(Invoke-WebRequest -Uri "inet-ip.info/ip")" | Out-File $outFile -encoding UTF8 -append

$dns = Get-DnsClientServerAddress -InterfaceAlias  $TestNetCon.InterfaceAlias   -AddressFamily IPv4
"DNS Server,$($dns.ServerAddresses)" | Out-File $outFile -encoding UTF8 -append

New-PSDrive -PSProvider registry -Root HKEY_CURRENT_USER -Name HKCU
$BrowserSettings = Get-ItemProperty  -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
if($($BrowserSettings.ProxyEnable) -eq 1){
 $proxy = "Proxy Server,$($BrowserSettings.ProxyServer)"
}elseif($($BrowserSettings.AutoConfigURL) -is [string]){
 $proxy = "Proxy PAC,$($BrowserSettings.AutoConfigURL)"
}else{
 $proxy = "Proxy Setting,None"
}
$proxy | Out-File $outFile -encoding UTF8 -append

""  | Out-File $outFile -encoding UTF8 -append
"No,Test URL,Resolve IP,Status,Response Time"  | Out-File $outFile -encoding UTF8 -append
Get-Content $outFile

$urllist = Import-Csv ./url_list.csv
foreach ($urllist in $urllist)
{
  $ResolveIP =  (Resolve-DnsName ([System.Uri]"$($urllist.TestURL)").host -type A).IPAddress
  $csv = "$($urllist.No)," + "$($urllist.TestURL)," + "$($ResolveIP),"
  try {
    $ResponseTime = (Measure-Command -Expression {$w = Invoke-WebRequest -Uri $urllist.TestURL }).Milliseconds
    $csv += "$($w.StatusCode) " + "$($w.StatusDescription)," +"$($ResponseTime) msec"
  }catch [net.webException]{
    $err = $_.Exception.Response
    $csv += "$($_.Exception.Response.StatusCode.Value__) " + "$($_.Exception.Response.StatusDescription)," + "None (Web Access Problem!)"
  }
  $csv | Out-File $outFile -encoding UTF8 -append
  $csv
}
$csvFile = [System.IO.Directory]::GetCurrentDirectory() +"\"+ $FileName
Start-Process EXCEL.EXE $csvFile
url_list.csv
No,TestURL
'01,https://www.google.com/
'02,https://www.google.co.jp/maps
'03,https://www.google.com/test

参考サイト

(Invoke-WebRequestのエラーコード処理)
https://www.fixes.pub/program/225088.html
https://stackoverflow.com/questions/51198517/measure-response-time-using-invoke-webrequest-similar-to-curl
http://265.blog3.fc2.com/blog-entry-39.html

(Webサイトのアクセスレスポンス値取得)
https://stackoverflow.com/questions/51198517/measure-response-time-using-invoke-webrequest-similar-to-curl

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0