ユーザ用ツール

サイト用ツール


powershell:落書き3
# 定義: DFビットを立ててpingを実行する関数
function Test-MTU {
    param (
        [string]$Target,
        [int]$StartMTU = 800,
        [int]$EndMTU = 1000
    )

    $results = @()
    for ($mtu = $StartMTU; $mtu -le $EndMTU; $mtu++) {
        $pingResult = Test-Connection -ComputerName $Target -Count 1 -BufferSize $mtu -DontFragment -ErrorAction SilentlyContinue
        if ($pingResult.StatusCode -eq 0) {
            $results += "MTU: $mtu - Success"
        } else {
            $results += "MTU: $mtu - Failure"
        }
    }

    return $results
}

# example.comに対してMTUを800から1000の範囲でテスト
$target = "example.com"
$mtuResults = Test-MTU -Target $target

# 全インターフェイスのMTUおよびMRU設定を取得
$interfaces = Get-NetAdapter | Select-Object -Property Name, MacAddress, LinkSpeed, InterfaceDescription
$mtuSettings = $interfaces | ForEach-Object {
    $interfaceName = $_.Name
    $mtu = Get-NetIPInterface -InterfaceAlias $interfaceName | Select-Object -ExpandProperty NlMtu
    [PSCustomObject]@{
        Interface = $interfaceName
        MTU = $mtu
    }
}

# 結果をファイルに書き出し
$logFile = "mtu-result.txt"
$mtuResults | Out-File -FilePath $logFile
Add-Content -Path $logFile -Value "`nCurrent MTU Settings:`n"
$mtuSettings | Format-Table -AutoSize | Out-String | Add-Content -Path $logFile

Write-Host "Results saved to $logFile"
# PowerShellスクリプト

function Test-MTU {
    param (
        [string]$hostname,
        [int]$minMTU,
        [int]$maxMTU
    )

    $logFile = "mtu-result.txt"
    Remove-Item $logFile -ErrorAction SilentlyContinue

    function Ping-Host {
        param (
            [string]$host,
            [int]$size
        )

        $pingResult = Test-Connection -ComputerName $host -Count 4 -BufferSize $size -DontFragment -Quiet
        return $pingResult
    }

    function BinarySearch-MTU {
        param (
            [string]$host,
            [int]$low,
            [int]$high
        )

        while ($low -le $high) {
            $mid = [math]::Floor(($low + $high) / 2)

            if (Ping-Host -host $host -size $mid) {
                $low = $mid + 1
            } else {
                $high = $mid - 1
            }
        }
        return $high
    }

    # 最適なMTUサイズを探す
    $optimalMTU = BinarySearch-MTU -host $hostname -low $minMTU -high $maxMTU
    "Optimal MTU size for $hostname is $optimalMTU" | Out-File -FilePath $logFile -Append

    # 現在のすべてのインターフェイスのMTUおよびMRU設定を取得
    $interfaces = Get-NetIPInterface
    foreach ($interface in $interfaces) {
        $interfaceInfo = "Interface: $($interface.InterfaceAlias), MTU: $($interface.NlMtu), MRU: $($interface.NlMtu)" # Note: Windows does not expose MRU directly, typically MRU == MTU
        $interfaceInfo | Out-File -FilePath $logFile -Append
    }
}

# 設定
$hostname = "example.com"
$minMTU = 800
$maxMTU = 1000

# 実行
Test-MTU -hostname $hostname -minMTU $minMTU -maxMTU $maxMTU
powershell/落書き3.txt · 最終更新: 2024/07/05 03:03 by 133.106.51.50

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki