Public/Get-OSWifiConnection.ps1
#Requires -Modules Posh-SSH function Get-OSWifiConnection { [CmdletBinding()] param ( [Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)] $SSHSession, [Parameter(ValueFromPipelineByPropertyName)] [String] $Interface = 'wlan0' ) begin { $Command = "iwconfig $Interface" $PatternESSID = 'ESSID(:|=)\"(?<ESSID>.*)\"' $PatternMode = 'Mode(:|=)(?<Mode>[^\s]*)' $PatternFrequency = 'Frequency(:|=)(?<Frequency>[^\s]*)\s(?<Unit>[^\s]*)' $PatternAccessPoint = 'Access Point:\s(?<AccessPoint>[^\s]*)' $PatternBitRate = 'Bit Rate(:|=)(?<BitRate>[^\s]*)\s(?<Unit>[^\s]*)' $PatternTxPower = 'Tx-Power(:|=)(?<TxPower>[^\s]*)\s(?<Unit>[^\s]*)' #$PatternLinkQuality = 'Link Quality(:|=)(?<LinkQuality>[^\s]*)' $PatternLinkQualityActual = 'Link Quality(:|=)(?<LinkQualityActual>\d+)' $PatternLinkQualityMax = 'Link Quality(:|=)\d*\/(?<LinkQualityMax>\d+)' $PatternSignalLevel = 'Signal level(:|=)(?<SignalLevel>[^\s]*)\s(?<Unit>[^\s]*)' } process { try { $CommandResultColl = Invoke-SSHCommandStream -SSHSession $SSHSession -Command $Command $Properties = [ordered]@{ Host = [String]$SSHSession.Host Interface = [String]$Interface } foreach ($CommandResult in $CommandResultColl) { if ($CommandResult -match $PatternESSID) { $Properties.ESSID = [String]$matches.ESSID } if ($CommandResult -match $PatternMode) { $Properties.Mode = [String]$matches.Mode } if ($CommandResult -match $PatternFrequency) { $Properties.Frequency = [Single]$matches.Frequency } if ($CommandResult -match $PatternAccessPoint) { $Properties.AccessPoint = [String]$matches.AccessPoint } if ($CommandResult -match $PatternBitRate) { $Properties.BitRate = [Int]$matches.BitRate } if ($CommandResult -match $PatternTxPower) { $Properties.TxPower = [Int]$matches.TxPower } if ($CommandResult -match $PatternLinkQualityActual) { $Properties.LinkQualityActual = [Int]$matches.LinkQualityActual } if ($CommandResult -match $PatternLinkQualityMax) { $Properties.LinkQualityMax = [Int]$matches.LinkQualityMax } if ($CommandResult -match $PatternSignalLevel) { $Properties.SignalLevel = [Int]$matches.SignalLevel } } $Result = New-Object psobject -Property $Properties $Result } catch { Write-Output -InputObject $PSItem.Exception.Message } } end { } } |