#设置线程数量$throttleLimit = 10$SessionState = [system.management.automation.runspaces.initialsessionstate]::CreateDefault()$Pool = [runspacefactory]::CreateRunspacePool(1, $throttleLimit, $SessionState, $Host)$Pool.Open()#url configure$urlFile="D:\url.csv"$ScriptBlock = { param($urlinfo) function Send-Mail{ $Subject=$args[0] $Body=$args[2] $to=$args[1] if($Subject -eq $null -or $Body -eq $null -or $to -eq $null){ Write-Warning 参数丢失! return $false } $password = ConvertTo-SecureString 'password' -AsPlainText -Force $Credential = New-Object System.Management.Automation.PSCredential('account',$password) $SmptServer="smtp.xxxx.com" $From="user@xxxx.com" #$To="to@xxxx.com" $port="25" $encode=[system.text.encoding]::Default Send-MailMessage -SmtpServer $SmptServer -Port $port -Credential $Credential -From $From -Encoding $encode -to $To -Body $Body -Subject $Subject -BodyAsHtml -Priority High } function Invoke-url($urlinfo){ $project=$urlinfo.project $url=$urlinfo.url $monitor=$urlinfo.monitor $notice=$urlinfo.to if($notice -match ","){ $notice=$notice.split(",") } $checknums=$urlinfo.checknums $nterval=$urlinfo.nterval $script:j=0 $xmlhttp=New-Object -ComObject Microsoft.XMLHTTP if($url -ne $null -and $monitor -ne 'n'){ $xmlhttp.open("get",$url,$false) try{$xmlhttp.send()}catch{} if($xmlhttp.status -ne 200 -or $xmlhttp.readyState -ne 4){ $j++ if($j -le $checknums){ sleep $nterval invoke-url $urlinfo }else{ $status=$xmlhttp.status if($status -eq $null){ return $false } Send-Mail "Request $url failed,the status is $status" $notice "