ฉันจำได้ว่าเมื่อคุณถามคำถามนี้เป็นครั้งแรก แต่ในที่สุดฉันก็สามารถคำนวณได้ หวังว่ามันยังคงใช้กับคุณหรือคนอื่น!
คุณสามารถเข้าถึงข้อมูลนี้ได้โดยการเรียกใช้เมธอดGetLocalUsageของวัตถุConnectionProfileซึ่งเป็นการเชื่อมต่อ WLAN / WAN (เช่น SSID) GetLocalUsage รับพารามิเตอร์ DateTime สองรายการและส่งคืนวัตถุDataUsageที่มีจำนวนข้อมูลที่ส่งและรับในช่วงเวลาที่ระบุ คุณจะได้รับรายชื่อของวัตถุ ConnectionProfile โดยการเรียกGetConnectionProfilesวิธีการNetworkInformation
ฉันเขียนฟังก์ชันต่อไปนี้ที่ดึงข้อมูลและส่งคืนวัตถุ ส่งผ่าน 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
}
}
}
}