Public/Get-UnifiClient.ps1
|
function Get-UnifiClient { [CmdletBinding()] param( [string]$Site, # Limit to currently connected clients only (default returns all known clients) [switch]$Active ) if (-not $script:UnifiSession) { Write-Error "Not connected. Run Connect-UnifiController first." return } $siteId = Resolve-UnifiSite $Site $endpoint = if ($Active) { '/stat/sta' } else { '/stat/alluser' } $result = Invoke-UnifiRequest -Endpoint $endpoint -Site $siteId if (-not $result.data -or $result.data.Count -eq 0) { Write-Warning "No clients found on site '$siteId'." return } $result.data | Select-Object ` @{ N = 'Hostname'; E = { if ($_.hostname) { $_.hostname } elseif ($_.name) { $_.name } else { '-' } } }, @{ N = 'IP'; E = { if ($_.ip) { $_.ip } elseif ($_.fixed_ip) { "$($_.fixed_ip)*" } else { '-' } } }, @{ N = 'MAC'; E = { $_.mac } }, @{ N = 'Network'; E = { if ($_.essid) { $_.essid } elseif ($_.network) { $_.network } else { '-' } } }, @{ N = 'Type'; E = { if ($_.is_wired) { 'Wired' } else { 'Wireless' } } }, @{ N = 'Signal'; E = { if (-not $_.is_wired -and $_.rssi) { "$($_.signal) dBm (RSSI $($_.rssi))" } else { '-' } } } } |