19 votos

¿De dónde almacén de Windows 8 la estimación de uso de datos a través de Wifi?

Accidentalmente, he descubierto que en Windows 8, si usted haga clic en un previamente conectado a la red inalámbrica en la pantalla de Inicio de la interfaz, hay una opción para mostrar los datos estimados de uso.

enter image description here

enter image description here

Donde esta almacenan los datos? Es posible recuperar este a través de PowerShell/WMI? Un caso de uso para mí sería configuración de alertas automatizadas basadas en el uso de datos - yo actualmente uso Networx para un desglose más detallado, pero para una rápida alerta, si me puede traer el uso, el sistema automatizado de ruta sería de una gran ayuda.

3voto

charleswj81 Puntos 570

Yo recuerdo cuando me preguntó por primera vez esta pregunta, pero finalmente se decidió a averiguar lo que ocurría. Esperanza todavía de uso a usted o a alguien más!

Usted puede acceder a los datos llamando a la GetLocalUsage método de ConnectionProfile objetos, los cuales son WLAN/conexiones WAN (es decir, Ssid). GetLocalUsage toma dos DateTime parámetros y devuelve un DataUsage objeto que contiene la cantidad de datos enviados y recibidos durante el intervalo especificado. Usted puede obtener una lista de ConnectionProfile objetos llamando a la GetConnectionProfiles método de NetworkInformation.

Me escribió la siguiente función que recupera los datos y devuelve un objeto. Pasa uno o más Ssid y, opcionalmente, iniciar y detener 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

            }
        }
    }
}

1voto

K.A Puntos 3536

Este artículo de MSDN es la mejor que pude encontrar de Microsoft: http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx. Le dice cómo usted puede llamar desde un programa, pero no se donde los datos adecuados se almacena. Yo no voy a copiar y pegar todo porque no sé en qué idioma prefiere programa.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: