Tôi nhớ khi bạn hỏi câu hỏi này lần đầu tiên, nhưng cuối cùng tôi cũng tìm ra được. Hy vọng nó vẫn còn sử dụng cho bạn hoặc người khác!
Bạn có thể truy cập dữ liệu này bằng cách gọi phương thức GetLocalUsage của các đối tượng ConnectionProfile , là các kết nối WLAN / WAN (tức là SSID). GetLocalUsage nhận hai tham số DateTime và trả về một đối tượng DataUsage chứa lượng dữ liệu được gửi và nhận trong khoảng thời gian được chỉ định. Bạn có thể nhận được một danh sách các đối tượng ConnectionProfile bằng cách gọi phương thức GetConnectionProfiles của NetworkIn information .
Tôi đã viết hàm sau lấy dữ liệu và trả về một đối tượng. Truyền cho nó một hoặc nhiều SSID và tùy ý bắt đầu và dừng 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
}
}
}
}