Webアクセステスト自動実行スクリプト by PowerShell
複数の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」がフォルダ内に出力される。
※上記結果は、Google関連のサイトで試した結果。「https://www.google.com/test」は実在しないページ。
使用するスクリプトとURLリストファイル
$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
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
Author And Source
この問題について(Webアクセステスト自動実行スクリプト by PowerShell), 我々は、より多くの情報をここで見つけました https://qiita.com/khat/items/2e8832137f0470cef1b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .