Wo speichert Windows 8 die geschätzte Datennutzung über WLAN?

19

Ich habe versehentlich festgestellt, dass in Windows 8, wenn Sie mit der rechten Maustaste auf ein zuvor verbundenes drahtloses Netzwerk auf der Startbildschirmoberfläche klicken, eine Option zum Anzeigen der geschätzten Datennutzung verfügbar ist.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Wo werden diese Daten gespeichert? Ist es möglich, dies über PowerShell / WMI abzurufen? Ein Anwendungsfall für mich wäre das Einrichten automatisierter Warnmeldungen basierend auf der Datennutzung. Derzeit verwende ich Networx für eine detailliertere Aufschlüsselung. Für eine schnelle Warnmeldung, wenn ich die Verwendung abrufen kann, würde die automatisierte Route viel helfen.

Sathyajith Bhat
quelle
1
Ich frage mich, warum es nur geschätzt wird .
Der Hochstapler
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlansieht verwandt aus. Ich suche immer noch.
Bob
Es ist verwandt, aber meine Forschung zeigt, dass es rein gui-verwandt ist. Ich habe nichts darüber gesehen, wo die tatsächliche Schätzung gespeichert ist. Für diesen Registrierungsschlüssel gibt es bei Google nichts außer einem Ergebnis zu diesem Zeitpunkt.
MDMoore313
1
@OliverSalzburg Wahrscheinlich nennen sie es geschätzt, weil es eine andere Nummer als Ihr ISP zeigen kann. Möglicherweise
schätzen

Antworten:

3

Ich erinnere mich, als Sie diese Frage zum ersten Mal stellten, aber ich kam endlich dazu, es herauszufinden. Hoffe, es hilft dir oder jemand anderem weiter!

Sie können auf diese Daten zugreifen, indem Sie die GetLocalUsage- Methode von ConnectionProfile- Objekten aufrufen , bei denen es sich um WLAN / WAN-Verbindungen (dh SSIDs) handelt. GetLocalUsage verwendet zwei DateTime-Parameter und gibt ein DataUsage- Objekt zurück, das die Datenmenge enthält, die während des angegebenen Intervalls gesendet und empfangen wurde. Sie können eine Liste der ConnectionProfile-Objekte abrufen , indem Sie die GetConnectionProfiles- Methode von NetworkInformation aufrufen .

Ich habe die folgende Funktion geschrieben, die die Daten abruft und ein Objekt zurückgibt. Übergeben Sie eine oder mehrere SSIDs und starten und stoppen Sie optional DateTimes:

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

            }
        }
    }
}
charleswj81
quelle
Toll, danke für die Recherche und die Antwort!
Sathyajith Bhat