Lui*_*cia 1 powershell powershell-2.0 powershell-3.0
我需要创建一个脚本来对 3 个不同的环境 url 发出请求,然后为我发送的每个页面生成一个 CSV 文件,其中包含每个环境的平均响应时间。
但是我收到这个错误:
无法转换参数“地址”,其值为:“System.Object[]”,“DownloadString”类型为“System.Uri”:“无法转换类型为“System.Object[]”的“System.Object[]”值" 键入“System.Uri”。
这是我的代码:
function ResponseTime($CommonName,$URL, $environment)
{
$Times = 5
$i = 0
$TotalResponseTime = 0
While ($i -lt $Times) {
$Request = New-Object System.Net.WebClient
$Request.UseDefaultCredentials = $true
$Start = Get-Date
$PageRequest = $Request.DownloadString($URL)
$TimeTaken = ((Get-Date) - $Start).TotalMilliseconds
$Request.Dispose()
$i ++
$TotalResponseTime += $TimeTaken
}
$AverageResponseTime = $TotalResponseTime / $i
Write-Host Request to $CommonName took $AverageResponseTime ms in average -ForegroundColor Green
$details = @{
Date = get-date
AverageResponseTime = $AverageResponseTime
ResponseTime = $Destination
Environment = $environment
}
$results += New-Object PSObject -Property $details
}
ResponseTime 'app homepage' 'https://urlproduction', 'PRODUCTION'
ResponseTime 'app homepage' 'https://urlQA', 'QA'
ResponseTime 'app homepage' 'https://urltest', 'TEST'
$results | export-csv -Path c:\so.csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)
您在 Powershell 中遇到了一个常见的陷阱。认为函数参数在定义中用逗号分隔,但函数调用参数不是。如果使用逗号,Powershell 会将此类项目转换为数组。
在这种特殊情况下
ResponseTime 'app homepage' 'https://urlproduction', 'PRODUCTION'
Run Code Online (Sandbox Code Playgroud)
被解析为
Call function ResponseTime with two parameters:
Run Code Online (Sandbox Code Playgroud)
'app homepage'和'https://urlproduction', 'PRODUCTION'-- 其中后者是由两个元素组成的数组。
另一方面
ResponseTime 'app homepage' 'https://urlproduction' 'PRODUCTION'
Run Code Online (Sandbox Code Playgroud)
被解析为
Call function ResponseTime with three parameters:
Run Code Online (Sandbox Code Playgroud)
'app homepage','https://urlproduction'和 'PRODUCTION'
| 归档时间: |
|
| 查看次数: |
3189 次 |
| 最近记录: |