मुझे याद है जब आपने पहली बार यह सवाल पूछा था, लेकिन मैं आखिरकार इसे समझ पाया। आशा है कि यह अभी भी आप या किसी और के लिए उपयोग कर रहा है!
आप इस डेटा तक पहुँच प्राप्त कर सकते हैं GetLocalUsage ConnectionProfile ऑब्जेक्ट की विधि , जो WLAN / WAN कनेक्शन (यानी SSID) हैं। GetLocalUsage दो DateTime पैरामीटर लेता है और निर्दिष्ट अंतराल के दौरान भेजे गए और प्राप्त किए गए डेटा की मात्रा युक्त एक DataUsage ऑब्जेक्ट देता है । आप NetworkInformation की GetConnectionProfiles विधि को कॉल करके ConnectionProfile ऑब्जेक्ट की सूची प्राप्त कर सकते हैं ।
मैंने निम्न फ़ंक्शन को लिखा है जो डेटा को पुनः प्राप्त करता है और एक ऑब्जेक्ट देता है। एक या एक से अधिक SSIDs को पास करें और वैकल्पिक रूप से 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
}
}
}
}