m0nkrus
05-04-2022, 19:21
Есть рабочая конструкция под CMD:
for /f "tokens=3 skip=1" %%a in ('wmic path Win32_NetworkAdapter where "PNPDeviceID like '%%%%USB%%%%' AND AdapterTypeID='0'" get MacAddress^,AdapterType') do set "MacAddress=%%a"
for /f "tokens=3 skip=1" %%a in ('wmic path Win32_NetworkAdapter where "PNPDeviceID like '%%%%PCI%%%%' AND AdapterTypeID='0'" get MacAddress^,AdapterType') do set "MacAddress=%%a"
echo MAC %MacAddress::=%>"%Temp%\MacAddress.txt"
Скрипт ищет реальный (не виртуальный) сетевой адаптер и в случае его нахождения выдает в файл его MAC-адрес без разделителей. Причем, если на компьютере одновременно есть как встроенная сетевуха, так и воткнутый в него "свисток", то предпочтение отдается первой. Наличие или отсутствие интернета на выбранном адаптере не важно.
Учитывая, что от WMIC Майкрософт собирается полностью отказываться, мне бы хотелось заранее подстелить соломку и получить аналог этого кода на Powershell.
[hr]
Вот, что лично я насоображал:
$NetAdapter = Get-PnpDevice | where {$_.Class -like "Net" -and $_.InstanceId -like "*USB*"} | select FriendlyName
$NetAdapter = Get-PnpDevice | where {$_.Class -like "Net" -and $_.InstanceId -like "*PCI*"} | select FriendlyName
Этот код передает в переменную инфу о нужном адаптере. Но там три строки, тогда как нужна только последняя.
А вот этот код должен отлавливать MAC для выявленного адаптера и убирать разделители в строке:
$MacAddress = Get-WmiObject win32_networkadapterconfiguration | where {$_.descraption -like $NetAdapter} | select macaddress
$MacAddress = $MacAddress -replace ':'
Не хватает двух кусков - преобразования трехстрочной переменной в однострочную и передачи содержимого переменной в файл.
for /f "tokens=3 skip=1" %%a in ('wmic path Win32_NetworkAdapter where "PNPDeviceID like '%%%%USB%%%%' AND AdapterTypeID='0'" get MacAddress^,AdapterType') do set "MacAddress=%%a"
for /f "tokens=3 skip=1" %%a in ('wmic path Win32_NetworkAdapter where "PNPDeviceID like '%%%%PCI%%%%' AND AdapterTypeID='0'" get MacAddress^,AdapterType') do set "MacAddress=%%a"
echo MAC %MacAddress::=%>"%Temp%\MacAddress.txt"
Скрипт ищет реальный (не виртуальный) сетевой адаптер и в случае его нахождения выдает в файл его MAC-адрес без разделителей. Причем, если на компьютере одновременно есть как встроенная сетевуха, так и воткнутый в него "свисток", то предпочтение отдается первой. Наличие или отсутствие интернета на выбранном адаптере не важно.
Учитывая, что от WMIC Майкрософт собирается полностью отказываться, мне бы хотелось заранее подстелить соломку и получить аналог этого кода на Powershell.
[hr]
Вот, что лично я насоображал:
$NetAdapter = Get-PnpDevice | where {$_.Class -like "Net" -and $_.InstanceId -like "*USB*"} | select FriendlyName
$NetAdapter = Get-PnpDevice | where {$_.Class -like "Net" -and $_.InstanceId -like "*PCI*"} | select FriendlyName
Этот код передает в переменную инфу о нужном адаптере. Но там три строки, тогда как нужна только последняя.
А вот этот код должен отлавливать MAC для выявленного адаптера и убирать разделители в строке:
$MacAddress = Get-WmiObject win32_networkadapterconfiguration | where {$_.descraption -like $NetAdapter} | select macaddress
$MacAddress = $MacAddress -replace ':'
Не хватает двух кусков - преобразования трехстрочной переменной в однострочную и передачи содержимого переменной в файл.