우연히 Windows 8의 시작 화면 인터페이스에서 이전에 연결된 무선 네트워크를 마우스 오른쪽 버튼으로 클릭하면 예상 데이터 사용량을 표시하는 옵션이 있다는 사실을 발견했습니다.
이 데이터는 어디에 저장되어 있나요? PowerShell/WMI를 통해 이를 가져올 수 있나요? 저의 사용 사례는 데이터 사용량을 기반으로 자동 경고를 설정하는 것입니다. 현재는네트웍스더 자세한 분석을 원하지만 빠른 알림을 위해 사용량을 가져올 수 있다면 자동화된 경로가 많은 도움이 될 것입니다.
답변1
당신이 처음 이 질문을 했을 때가 기억나는데, 마침내 그 답을 알아냈습니다. 그것이 당신이나 다른 누군가에게 여전히 유용하기를 바랍니다!
다음을 호출하여 이 데이터에 액세스할 수 있습니다.로컬 사용량 가져오기의 방법연결 프로필WLAN/WAN 연결(예: SSID)인 개체입니다. GetLocalUsage는 두 개의 DateTime 매개변수를 사용하고데이터 사용량지정된 간격 동안 보내고 받은 데이터의 양을 포함하는 개체입니다. 다음을 호출하여 ConnectionProfile 개체 목록을 가져올 수 있습니다.연결 프로필 가져오기의 방법네트워크정보.
데이터를 검색하고 객체를 반환하는 다음 함수를 작성했습니다. 하나 이상의 SSID를 전달하고 선택적으로 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
}
}
}
}
답변2
이 MSDN 기사는 Microsoft에서 찾을 수 있는 최고의 기사입니다.http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx. 프로그램에서 호출하는 방법을 알려주지만 적절한 데이터가 저장된 위치는 알려주지 않습니다. 나는 당신이 어떤 언어로 프로그래밍하는 것을 선호하는지 모르기 때문에 그것을 모두 복사하여 붙여넣지는 않을 것입니다.