Windows 8 では、スタート画面のインターフェイスから以前接続したワイヤレス ネットワークを右クリックすると、推定データ使用量を表示するオプションがあることを偶然発見しました。
このデータはどこに保存されていますか?PowerShell/WMI経由で取得することは可能ですか?私の場合、データ使用量に基づいて自動アラートを設定するのがユースケースです。現在、私はネットワークより詳細な内訳については、簡単なアラートとして、使用状況を取得できれば、自動化されたルートが非常に役立ちます。
答え1
あなたが最初にこの質問をしたときのことを覚えていますが、ようやく理解できました。それがあなたや他の誰かにとってまだ役に立つことを願っています。
このデータにアクセスするには、ローカル使用状況を取得する方法接続プロファイルオブジェクトはWLAN/WAN接続(つまりSSID)です。GetLocalUsageは2つのDateTimeパラメータを受け取り、データ使用量指定された間隔中に送受信されたデータの量を含むオブジェクト。ConnectionProfileオブジェクトのリストを取得するには、接続プロファイルの取得方法ネットワーク情報。
私は、データを取得してオブジェクトを返す次の関数を作成しました。これに 1 つ以上の 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プログラムから呼び出す方法は説明されていますが、データ自体がどこに保存されるかは説明されていません。どの言語でプログラミングするのが好みか分からないので、すべてをコピーして貼り付けるつもりはありません。