Dove Windows 8 memorizza l'utilizzo stimato dei dati tramite Wifi?


19

Ho scoperto per caso che in Windows 8, se si fa clic con il pulsante destro del mouse su una rete wireless precedentemente connessa dall'interfaccia della schermata Start, è disponibile un'opzione per mostrare l'utilizzo stimato dei dati.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Dove sono archiviati questi dati? È possibile recuperarlo tramite PowerShell / WMI? Un caso d'uso per me sarebbe quello di impostare avvisi automatici basati sull'utilizzo dei dati: attualmente utilizzo Networx per una suddivisione più dettagliata, ma per un avviso rapido, se riesco a recuperare l'utilizzo, il percorso automatizzato aiuterebbe molto.


1
Mi chiedo perché sia ​​solo stimato .
Der Hochstapler,

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlansembra correlato. Sto ancora cercando.
Bob

È correlato, ma la mia ricerca mostra che è puramente correlato alla GUI, non ho visto nulla su dove è memorizzata la stima effettiva. niente su google per quella chiave reg tranne un risultato in questo momento.
MDMoore313,

1
@OliverSalzburg Probabilmente lo chiamano stimato perché potrebbe mostrare un numero diverso dal tuo ISP. Probabilmente stanno indovinando anche un po 'di spese generali (che Windows non può misurare, poiché viene aggiunto altrove)
derobert

Risposte:


3

Ricordo quando hai posto questa domanda per la prima volta, ma alla fine sono riuscito a capirlo. Spero che sia ancora utile a te o a qualcun altro!

È possibile accedere a questi dati chiamando il metodo GetLocalUsage degli oggetti ConnectionProfile , che sono connessioni WLAN / WAN (ovvero SSID). GetLocalUsage accetta due parametri DateTime e restituisce un oggetto DataUsage contenente la quantità di dati inviati e ricevuti durante l'intervallo specificato. È possibile ottenere un elenco di oggetti ConnectionProfile chiamando il GetConnectionProfiles metodo NetworkInformation .

Ho scritto la seguente funzione che recupera i dati e restituisce un oggetto. Passagli uno o più SSID e facoltativamente avvia e ferma 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

            }
        }
    }
}

Ottimo, grazie per la ricerca e la risposta!
Sathyajith Bhat

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.