我有一个 powershell 脚本可以测量某些页面的下载时间,但是我收到上面的错误,我不确定我做错了什么
错误是
Cannot bind argument to parameter 'InputObject' because it is null.
function ResponseTime($CommonName,$URL, $environment)
{
$Times = 5
$i = 0
$TotalResponseTime = 0
Write-HOst $URL
While ($i -lt $Times) {
$Request = New-Object System.Net.WebClient
$Request.UseDefaultCredentials = $true
$Start = Get-Date
Write-HOst $URL
$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
$random = Get-Random -minimum 1 -maximum 30
Start-Sleep -s $random
}
#PRODUCTION
ResponseTime -commonname 'app homepage' -URL 'https://url1' -environment 'PRODUCTION'
ResponseTime -commonname 'department homepage' -URL 'https://url2' -environment 'PRODUCTION'
$results | export-csv -Path c:\so.csv -NoTypeInformation
最佳答案
查看您上次的编辑,似乎 $results
只是返回 $null
(正如您的错误所述)
唯一的行设置$results
是$results += New-Object PSObject -Property $details
它不在您的 Export-CSV
调用范围内,即使在范围内,如果未调用此行,$results 也可能为空。
恕我直言,您应该将其设置为例如一个ArrayList如下:
$results = New-Object -TypeName System.Collections.ArrayList
并通过
添加项目$times = ResponseTime -commonname '' #etc
$results.Add($times) | Out-Null
这将为您提供一个 ArrayList - 即使其中没有任何项目 - 也可以轻松将其转换为 CSV 和其他格式。
关于powershell - 无法将参数绑定(bind)到参数 'InputObject',因为它为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46605086/