Descobri acidentalmente que, no Windows 8, se você clicar com o botão direito do mouse em uma rede sem fio conectada anteriormente na interface da tela inicial, há uma opção para mostrar o uso estimado de dados.
Onde esses dados estão armazenados? É possível buscar isso via PowerShell/WMI? Um caso de uso para mim seria configurar alertas automatizados com base no uso de dados - atualmente usoRedexpara um detalhamento mais detalhado, mas para um alerta rápido, se eu conseguir buscar o uso, a rota automatizada ajudaria muito.
Responder1
Lembro-me de quando você fez essa pergunta pela primeira vez, mas finalmente consegui descobrir. Espero que ainda seja útil para você ou outra pessoa!
Você pode acessar esses dados ligando para oGetLocalUsagemétodo dePerfil de conexãoobjetos, que são conexões WLAN/WAN (ou seja, SSIDs). GetLocalUsage usa dois parâmetros DateTime e retorna umUso de dadosobjeto contendo a quantidade de dados enviados e recebidos durante o intervalo especificado. Você pode obter uma lista de objetos ConnectionProfile chamando o métodoObter perfis de conexãométodo deInformações de rede.
Escrevi a seguinte função que recupera os dados e retorna um objeto. Passe para ele um ou mais SSIDs e, opcionalmente, inicie e pare DateTime's:
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
}
}
}
}
Responder2
Este artigo do MSDN é o melhor que encontrei da Microsoft:http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx. Ele informa como você pode chamá-lo de um programa, mas não onde os dados propriamente ditos estão armazenados. Não vou copiar e colar tudo porque não sei em qual linguagem você prefere programar.