A GetMAC segítségével egyszerűen tudjuk a hálózati interfészekhez tartozó MAC címeket és az interfész állapotára vonatkozó információkat összegyűjteni, egyszerűbben, mint WMI segítségével. Használata nagyon hasonlít a WhoAmI-hoz, így a beágyazó függvény is hasonló lesz. Itt még készítettem egy formázó XML kifejezést is, hogy az eredmény szép legyen. Először nézzük a függvényt:
function get-mac
{
param(
$computername,
$user,
$password,
$connection
=
"*",
[switch] $on
)
$command = "getmac -v -fo csv"
if($user){
$command += " -u $user"
}
if($password){
$command += " -p $password"
}
if($computername){
$command += " -s $computername"
}
Invoke-Expression $command | ConvertFrom-Csv |
?{$_."Network Adapter" -like $connection -and (!$on -or ($_."Transport Name" -ne "Media
Disconnected" -and $_."Transport Name" -ne "Hardware
not present"))} |
%{$_.psobject.TypeNames.clear();
$_.psobject.TypeNames.Add("hardware.mac"); $_}
}
Update-FormatData -PrependPath C:\ps\hardware.mac.format.ps1xml
A használhatóság fokozására olyan paramétereket is bevezettem, amelyeket az eredeti parancssori eszköz nem nyújt. Ilyen az –on kapcsoló, mellyel csak az „élő” hálózati kapcsolatokkal rendelkező adaptereket kapjuk meg, vagy a –connection paraméter, mely szűri névre a hálózati kapcsolatokat.
És az ehhez tartozó formázó XML kifejezés:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<ViewDefinitions>
<View>
<Name>hardware.mac.default</Name>
<ViewSelectedBy>
<TypeName>hardware.mac</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>25</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>45</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>17</Width>
</TableColumnHeader>
<TableColumnHeader>
</TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>Connection Name</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Network Adapter</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Physical Address</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Transport Name</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
</ViewDefinitions>
</Configuration>
Ezzel a kimenet nagyon szép lesz:
127 . ábra A Get-MAC függvény kimenete az ISE felületen
A kimenetet az ISE felületről másoltam, mert elég széles oszlopokkal dolgoztam, így ebben a formában jobban látszik.