none
Подскажите, по поводу как вывести информацию в файл RRS feed

  • Вопрос

  • Добрый день!

    Задача, нужно просканировать локальную сеть, вытащить оттуда мак-адреса.

    Сделал запрос который полностью меня удовлетворяет

    Get-WmiObject Win32_NetworkAdapter -ComputerName $ip -Filter "PNPDeviceID like 'PCI%' or PNPDeviceID like 'USB%' or PNPDeviceID IS Null" | Where {!(!$_.MACAddress)} | Select-Object Name, MACAddress | Sort-Object MACAddress

    теперь мне надо как-то этот запрос прогнать через сеть. раньше был скрипт, на нахождение инфомации на компах в локалке

                    

    $net = (13,14,15,16,17 | %{"192.168.$_"}) + (13,14,15,16 | %{"10.1.$_"})
    foreach($nc in $net){
        for($i=2; $i -lt 254; $i++){
            $ip = $nc+"."+$i

            if(-Not (Test-Connection -ComputerName $ip -BufferSize 16 -Count 1 -quiet)){ continue }

            #подавлять сообщение о невозможности определить имя по IP
            $ErrorActionPreference = "silentlycontinue"

    Мне надо как-то скрестить эти эти 2 скрипта в один и вывести в файл, в любой. 

    Нужны мак-адреса, можно еще и Ip.

    Подскажите кто, что может.

    Спасибо!

    3 августа 2016 г. 13:32

Ответы

  • Да,я пропустил ip не поглядел, конечный результат, касаемо моего скрипта:

    (13,14,15,16,17 | %{"192.168.$_"}) + (13,14,15,16 | %{"10.1.$_"}) | Foreach {
    	$net = $_
    	2..254 | Foreach {
    		$ip = "$net.$_"
    		if((Test-Connection -ComputerName $ip -BufferSize 16 -Count 1 -quiet)){
    			Get-WmiObject Win32_NetworkAdapter -ComputerName $ip -Filter "PNPDeviceID like 'PCI%' or PNPDeviceID like 'USB%' or PNPDeviceID IS Null" | Where {$_.MACAddress} | Select-Object @{n="ComputerName";e={$_.__SERVER}},@{n="IP";e={$ip}},Name, MACAddress | Sort-Object MACAddress
    		}
    	}
    } | Out-File result.txt

    • Предложено в качестве ответа Guznin KA 3 августа 2016 г. 14:36
    • Помечено в качестве ответа Pelev1n 3 августа 2016 г. 14:43
    3 августа 2016 г. 14:28
    Отвечающий

Все ответы

  • (13,14,15,16,17 | %{"192.168.$_"}) + (13,14,15,16 | %{"10.1.$_"}) | Foreach {
    	$ip = $_
    	if((Test-Connection -ComputerName $ip -BufferSize 16 -Count 1 -quiet)){
    		Get-WmiObject Win32_NetworkAdapter -ComputerName $ip -Filter "PNPDeviceID like 'PCI%' or PNPDeviceID like 'USB%' or PNPDeviceID IS Null" | Where {$_.MACAddress} | Select-Object @{n="ComputerName";e={$_.__SERVER}},@{n="IP";e={$ip}},Name, MACAddress | Sort-Object MACAddress
    	}
    } | Out-File result.txt


    • Изменено KazunEditor 3 августа 2016 г. 13:50
    3 августа 2016 г. 13:38
    Отвечающий
  • очень быстро отрабатывает, и результата не вижу.

    вместо result.txt указал конкретный файл,  точнее пусть к файлу Out-File "C:\Info\Info.txt"

    может где еще забыл что-то добавить или поменять?

    3 августа 2016 г. 13:46
  • Была опечатка в Foreach, скопируйте правленый скрипт и запустите заново.
    3 августа 2016 г. 13:51
    Отвечающий
  • в какую сторону копать, файл пустой, скрипт чуть дольше отрабатывается, но без результатов.

    может сам перебор ip адресов не работает? 

    есть ли другие варианты написания данного скрипта?

    3 августа 2016 г. 14:06
  • Скрин из консоли:

    (13,14,15,16,17 | %{"192.168.$_"}) + (13,14,15,16 | %{"10.1.$_"}) | Foreach {
    	$ip = $_
    	Write-Host $ip -Fore Yellow
    	Get-WmiObject Win32_NetworkAdapter -ComputerName $ip -Filter "PNPDeviceID like 'PCI%' or PNPDeviceID like 'USB%' or PNPDeviceID IS Null" | Where {$_.MACAddress} | Select-Object @{n="ComputerName";e={$_.__SERVER}},@{n="IP";e={$ip}},Name, MACAddress | Sort-Object MACAddress
    } 

    3 августа 2016 г. 14:14
    Отвечающий
  • Заработал в таком варианте

    $net = (10,11,12,13 | %{"192.168.$_"}) + (0,1,2,3,4 | %{"10.1.$_"}) 
    Foreach($nc in $net) {
        for($i=2; $i -lt 254; $i++){
    $ip = $nc+"."+$i
       if((Test-Connection -ComputerName $ip -BufferSize 16 -Count 1 -quiet)){
    Get-WmiObject Win32_NetworkAdapter -ComputerName $ip -Filter "PNPDeviceID like 'PCI%' or PNPDeviceID like 'USB%' or PNPDeviceID IS Null" | Where {$_.MACAddress} | Select-Object @{n="ComputerName";e={$_.__SERVER}},@{n="IP";e={$ip}},Name, MACAddress | Sort-Object MACAddress | Out-File -Append "C:\Info.txt"
       }
        }
    }

    Попробую еще Ваш вариант выше.

    Спасибо большое за помощь!

    3 августа 2016 г. 14:24
  • Да,я пропустил ip не поглядел, конечный результат, касаемо моего скрипта:

    (13,14,15,16,17 | %{"192.168.$_"}) + (13,14,15,16 | %{"10.1.$_"}) | Foreach {
    	$net = $_
    	2..254 | Foreach {
    		$ip = "$net.$_"
    		if((Test-Connection -ComputerName $ip -BufferSize 16 -Count 1 -quiet)){
    			Get-WmiObject Win32_NetworkAdapter -ComputerName $ip -Filter "PNPDeviceID like 'PCI%' or PNPDeviceID like 'USB%' or PNPDeviceID IS Null" | Where {$_.MACAddress} | Select-Object @{n="ComputerName";e={$_.__SERVER}},@{n="IP";e={$ip}},Name, MACAddress | Sort-Object MACAddress
    		}
    	}
    } | Out-File result.txt

    • Предложено в качестве ответа Guznin KA 3 августа 2016 г. 14:36
    • Помечено в качестве ответа Pelev1n 3 августа 2016 г. 14:43
    3 августа 2016 г. 14:28
    Отвечающий