Есть ли какой-нибудь скрипт, который может искать по всей локальной сети устройства UPnP?

Итак, я нашел несколько программ, которые могут искать устройства UPnP в локальной сети, но я не могу найти такую ​​​​же реализацию в Powershell. Может кто подскажет, как написать скрипт Powershell с помощью UPnP для поиска устройств?


person Vertigo    schedule 17.07.2012    source источник
comment
Прочтите мой комментарий, вы не получаете устройства 2-го уровня плюс с вашим кодом. Уровень означает более глубокий, чем 2-й уровень вложенности.   -  person Erx_VB.NExT.Coder    schedule 04.09.2012


Ответы (3)


По этому вопросу мне помогли. Так что есть ответ на мой вопрос, если он кому-то нужен. Код в PS должен быть таким:

$finder = New-Object -ComObject UPnP.UPnPDeviceFinder;
$devices = $finder.FindByType("upnp:rootdevice", 0)
foreach($device in $devices)
{
    Write-Host -ForegroundColor Red ---------------------------------------------
    Write-Host -ForegroundColor Green Device Name: $device.FriendlyName
    Write-Host -ForegroundColor Green Unique Device Name: $device.UniqueDeviceName
    Write-Host -ForegroundColor Green Description: $device.Description
    Write-Host -ForegroundColor Green Model Name: $device.ModelName
    Write-Host -ForegroundColor Green Model Number: $device.ModelNumber
    Write-Host -ForegroundColor Green Serial Number: $device.SerialNumber
    Write-Host -ForegroundColor Green Manufacturer Name: $device.ManufacturerName
    Write-Host -ForegroundColor Green Manufacturer URL: $device.ManufacturerURL
    Write-Host -ForegroundColor Green Type: $device.Type
}
person Vertigo    schedule 24.07.2012
comment
Вы понимаете, что это не даст вам устройства, расположенные под устройствами, через которые вы проходите? Вы получаете устройства только на один уровень глубины. Вам нужно сделать то же самое (как указано выше) для каждого устройства, добавить их в свою коллекцию устройств, пока ни у одного другого устройства не будет дочернего устройства, которое не было добавлено. Я уже сделал это в vb6, если вам нужен код. - person Erx_VB.NExT.Coder; 04.09.2012

Вас может заинтересовать Microsoft UPnP API, в частности IUPnPDeviceFinder. Я недостаточно знаю Powershell, чтобы сказать, можете ли вы использовать API-интерфейсы напрямую или вам понадобится какая-то связующая библиотека .NET, например, например, этот.

person Pavel Zdenek    schedule 17.07.2012

person    schedule
comment
Хотя этот код может дать ответ на вопрос, предоставление дополнительного контекста относительно того, как и/или почему он решает проблему, улучшит долгосрочную ценность ответа. - person Donald Duck; 30.12.2020