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
}
}
}
}