Windows 8은 Wi-Fi를 통한 예상 데이터 사용량을 어디에 저장합니까?

Windows 8은 Wi-Fi를 통한 예상 데이터 사용량을 어디에 저장합니까?

우연히 Windows 8의 시작 화면 인터페이스에서 이전에 연결된 무선 네트워크를 마우스 오른쪽 버튼으로 클릭하면 예상 데이터 사용량을 표시하는 옵션이 있다는 사실을 발견했습니다.

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

이 데이터는 어디에 저장되어 있나요? PowerShell/WMI를 통해 이를 가져올 수 있나요? 저의 사용 사례는 데이터 사용량을 기반으로 자동 경고를 설정하는 것입니다. 현재는네트웍스더 자세한 분석을 원하지만 빠른 알림을 위해 사용량을 가져올 수 있다면 자동화된 경로가 많은 도움이 될 것입니다.

답변1

당신이 처음 이 질문을 했을 때가 기억나는데, 마침내 그 답을 알아냈습니다. 그것이 당신이나 다른 누군가에게 여전히 유용하기를 바랍니다!

다음을 호출하여 이 데이터에 액세스할 수 있습니다.로컬 사용량 가져오기의 방법연결 프로필WLAN/WAN 연결(예: SSID)인 개체입니다. GetLocalUsage는 두 개의 DateTime 매개변수를 사용하고데이터 사용량지정된 간격 동안 보내고 받은 데이터의 양을 포함하는 개체입니다. 다음을 호출하여 ConnectionProfile 개체 목록을 가져올 수 있습니다.연결 프로필 가져오기의 방법네트워크정보.

데이터를 검색하고 객체를 반환하는 다음 함수를 작성했습니다. 하나 이상의 SSID를 전달하고 선택적으로 DateTime을 시작 및 중지합니다.

function Get-EstimatedDataUsage()
{
    Param(
        [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
        [ValidateNotNullOrEmpty()]
        [String]$ProfileName,

        [Parameter(Position=1, Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [DateTime]$From,

        [Parameter(Position=2, Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [DateTime]$To
    )

    Process
    {
        foreach($profile in $ProfileName)
        {
            try
            {
                [void][Windows.Networking.Connectivity.NetworkInformation,Windows,ContentType=WindowsRuntime]
                $ConnectionProfiles = [Windows.Networking.Connectivity.NetworkInformation]::GetConnectionProfiles() | Where-Object ProfileName -EQ $profile
            }
            catch
            {
                Write-Error 'Unable to create instance of Windows.Networking.Connectivity.NetworkInformation.'
                continue
            }

            foreach($ConnectionProfile in $ConnectionProfiles)
            {
                $ProfileName = $ConnectionProfile.ProfileName

                if($From -eq $null)
                {
                    try
                    {
                        $ResetTime = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlan\$ProfileName -Name ResetTime -ErrorAction Stop | Select-Object -ExpandProperty ResetTime
                        $From_determined = [datetime]::FromFileTime($ResetTime)
                    }
                    catch
                    {
                        $From_determined = [datetime]::FromFileTime(0)
                    }
                }
                else
                {
                    $From_determined = $From
                }

                if($To -eq $null)
                {
                    $To_determined = Get-Date
                }
                else
                {
                    $To_determined = $To
                }

                $usage = $ConnectionProfile.GetLocalUsage($From_determined, $To_determined)

                $op = '' | select Name,Received,Sent,From,To

                $op.Name = $ProfileName
                $op.Received = $usage.BytesReceived
                $op.Sent = $usage.BytesSent
                $op.From = $From_determined
                $op.To = $To_determined

                $op

            }
        }
    }
}

답변2

이 MSDN 기사는 Microsoft에서 찾을 수 있는 최고의 기사입니다.http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx. 프로그램에서 호출하는 방법을 알려주지만 적절한 데이터가 저장된 위치는 알려주지 않습니다. 나는 당신이 어떤 언어로 프로그래밍하는 것을 선호하는지 모르기 때문에 그것을 모두 복사하여 붙여넣지는 않을 것입니다.

관련 정보