Accidentalmente descubrí que en Windows 8, si haces clic derecho en una red inalámbrica previamente conectada desde la interfaz de la pantalla Inicio, hay una opción para mostrar el uso estimado de datos.
¿Dónde se almacenan estos datos? ¿Es posible recuperar esto a través de PowerShell/WMI? Un caso de uso para mí sería configurar alertas automáticas basadas en el uso de datos; actualmente usoRedpara un desglose más detallado, pero para una alerta rápida, si puedo recuperar el uso, la ruta automatizada sería de gran ayuda.
Respuesta1
Recuerdo la primera vez que hiciste esta pregunta, pero finalmente pude resolverla. ¡Espero que te siga siendo útil a ti o a alguien más!
Puede acceder a estos datos llamando alObtener uso localmétodo dePerfil de conexiónobjetos, que son conexiones WLAN/WAN (es decir, SSID). GetLocalUsage toma dos parámetros DateTime y devuelve unUso de datosObjeto que contiene la cantidad de datos enviados y recibidos durante el intervalo especificado. Puede obtener una lista de objetos ConnectionProfile llamando alObtener perfiles de conexiónmétodo deInformación de red.
Escribí la siguiente función que recupera los datos y devuelve un objeto. Pásele uno o más SSID y, opcionalmente, inicie y detenga 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
}
}
}
}
Respuesta2
Este artículo de MSDN es el mejor que pude encontrar en Microsoft:http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx. Le indica cómo puede llamarlo desde un programa, pero no dónde se almacenan los datos propiamente dichos. No voy a copiarlo y pegarlo todo porque no sé en qué idioma prefieres programar.