我创建了一个脚本来测试两个点之间的互联网连接,但是在~1小时之后,脚本失败了。
由于调用深度溢出,脚本失败。
我模糊地理解了我所创建的递归行为的概念,但我正在寻找一种方法,允许这个脚本在没有问题的情况下运行几天。
0435081769$targetAddress = 'Target-PC'
$outputDir = 'C:\Support\Logs'
$outputFile = 'NetworkStabilityLog.csv'
function Set-ConsoleWindow() {
$pshost = Get-Host
$pswindow = $PSHost.UI.RawUI
$newsize = $PSWindow.WindowSize
$newsize.Width = 50
$newsize.Height = 15
$PSWindow.WindowSize = $newsize
}
function Check-Dir() {
if (!(Test-Path $outputDir\$outputFile)) {
New-Item -ItemType Directory -Force -Path $outputDir
}
Add-Content $outputDir\$outputFile "Target Address, Status, Date"
Clear
}
function Display-Message() {
Write-Host "Testing connection to $targetAddress in progress"
Write-Host
Write-Host "Close window to stop test."
Write-Host
}
function Ping-Network() {
$date = Get-Date
$checkIP = Test-Connection -ComputerName "$targetAddress" -Quiet -Count 1 -BufferSize 1
if ($checkIP -Match "False") {
Add-Content $outputDir\$outputFile "$targetAddress, Fail, $date"
Write-Host "Connection Down at $Date"
}
Sleep-Script
}
function Sleep-Script() {
Start-Sleep -Seconds 1
Ping-Network
}
Set-ConsoleWindow
Check-Dir
Display-Message
Ping-Network发布于 2018-12-18 22:28:24
Ping-Network和Sleep-Script递归地调用对方,但从未中断过。你当然会有溢流。别干那事。!
如果你想要一个无限循环:做一个无限循环。从代码中删除函数Sleep-Script,并将最后一行(Ping-Network)替换为:
while ($true) {
Ping-Network
Start-Sleep -Seconds 1
}https://stackoverflow.com/questions/53841651
复制相似问题