В процессе работы мне приходилось искать устройства на разных коммутаторах, где физические адреса устройств выглядели достаточно необычно (по мнению автора). Например, на одном коммутаторе можно обнаружить устройства с физическим адресом, который выглядит как 01-23-45-67-89-AB, а на другом — как 0123-4567-89AB.
А вот искал я MAC-адреса с совсем другой маской. Вот такой: 01:23:45:67:89:AB. Чтобы ничего не напутать, я быстренько состряпал два скрипта, которые приводили физический адрес к нужному мне виду для определённого коммутатора.
Скрипт с заменой двоеточих на дефис:
[System.Console]::Title = "Представление MAC-адреса c дефисом"
while($true)
{
$mac = Read-Host "Введите MAC-адрес"
$withline = ($mac).Trim() -replace ":", "-"
$withline | Set-Clipboard
Write-Host "MAC-адрес $withline скопирован в буфер обмена!" -ForegroundColor Green
Write-Host
}
А здесь 01:23:45:67:89:AB превращается в 0123-4567-89AB:
[System.Console]::Title = "Представление MAC-адреса c дефисом в три блока"
while($true)
{
$mac = Read-Host "Введите MAC-адрес"
$join = (($mac).Trim() -replace ":", "").ToLower()
$finalmac = ($join -split '(....)').Where({$_}) -join '-'
$finalmac | Set-Clipboard
Write-Host "MAC-адрес $finalmac скопирован в буфер обмена!" -ForegroundColor Green
Write-Host
}
И, соответственно, обратная конвертация из 0123-4567-89AB в 01:23:45:67:89:AB:
[System.Console]::Title = "Представление MAC-адреса c двоеточиями в два блока"
while($true)
{
$mac = Read-Host "Введите MAC-адрес"
$join = (($mac).Trim() -replace "-", "").ToLower()
$finalmac = ($join -split '(..)').Where({$_}) -join ':'
$finalmac | Set-Clipboard
Write-Host "MAC-адрес $finalmac скопирован в буфер обмена!" -ForegroundColor Green
Write-Host
}
Скрипты зациклены, а результат работы падает сразу в буфер обмена.