function Get-MacCrap { [CmdletBinding()] param( [Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyname=$true)] [string[]] $ComputerName, [string[]] $LanFilter = “*Local Area Connection*”, [string[]] $WlanFilter = “*Wireless Network Connection*” ) begin { $Filter = ($LanFilter, $WlanFilter | ForEach-Object { # Translate these two supported wildcard metacharacters into something WQL's "LIKE" understands. foreach ($TempFilter in $_) { 'NetConnectionID LIKE "' + ($TempFilter -replace '\*', '%' -replace '\?', '_') + '"' } }) -join ' OR ' Write-Verbose "Using filter: $Filter" } process { foreach ($Computer in $ComputerName) { $LanMacs, $WlanMacs = @(), @() foreach ($Adapter in Get-WmiObject -Class Win32_NetworkAdapter -ComputerName $Computer -Filter $Filter){ foreach ($TempFilter in $LanFilter) { if ($Adapter.NetConnectionID -like $TempFilter) { $LanMacs += $Adapter.MacAddress } } foreach ($TempFilter in $WlanFilter) { if ($Adapter.NetConnectionID -like $TempFilter) { $WlanMacs += $Adapter.MacAddress } } } New-Object -TypeName PSObject -Property ([ordered]@{ ‘ComputerName’= $Computer ‘LAN’ = $LanMacs -join ';' ‘WLAN’ = $WlanMacs -join ';' ‘Serial’ = (Get-WmiObject -Class Win32_Bios -ComputerName $Computer).SerialNumber }) } # end of foreach $ComputerName } # end of process block }