Войти

Показать полную графическую версию : Список ПК из сетевого окружения


---Zak---
27-09-2010, 17:58
Добрый день всем.

Искал поиском, но ничего интересного не нашел...

Подскажите плиз может ли AutoIT подхватить инфу о всех ПК, которые находятся в сетевом окружении домена/рабочей группы - соответственно с подхватом имени ПК ???

saavaage
28-09-2010, 03:05
посмотрите здесь http://autoit-script.ru/index.php/topic,2136.0.html
Может быть поможет...

---Zak---
28-09-2010, 10:06
Ну как я понял там подхват ПК из сети идет через "CheckLAN.exe"... а хорошо бы было, чтобы имена компов хватались без различного рода програмулек. В том же примере подключается библиотека "<WinAPIEx.au3>" - тока благодаря тебе о ее существовании я и узнал =) найти бы что-нить в виде библиотеки, но только для работы с сетью.

madmasles
28-09-2010, 12:21
---Zak---,
Проверить не могу, но попробуйте так:; Generated by AutoIt ScriptOMatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$OutputTitle = ""
$Output = ""
$OutputTitle &= "Computer: " & $strComputer & @CRLF
$OutputTitle &= "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_UserInDomain", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) Then
Local $Object_Flag = 0
For $objItem In $colItems
$Object_Flag = 1
$Output &= "GroupComponent: " & $objItem.GroupComponent & @CRLF
$Output &= "PartComponent: " & $objItem.PartComponent & @CRLF
If MsgBox(1, "WMI Output", $Output) = 2 Then ExitLoop
$Output = ""
Next
If $Object_Flag = 0 Then MsgBox(1, "WMI Output", $OutputTitle)
Else
MsgBox(0, "WMI Output", "No WMI Objects Found for class: " & "Win32_UserInDomain")
EndIf

ScriptOmatic (http://www.autoitscript.com/forum/index.php?showtopic=10534&st=80&p=788892&#entry788892). Там еще много чего полезного найти можно.

---Zak---
28-09-2010, 12:43
Спасибки огромное... теперь надо это все перевести под себя =)

Удобная штука + очень много всего в ней - спасибки еще раз. Пойду теперь голову ломать =)

---Zak---
28-09-2010, 16:52
Самое что странное, то это в этих классах есть только вывод пользователей и групп, а вот имен ПК - в упор не нашел =( Может она по другому называется ?

madmasles, Win32_UserInDomain - это все же все пользователи домена, но не имена ПК =) заметил, когда пинговал ПК, а их нет... но все равно спс - уже вытащил от туда много что интересное

madmasles
28-09-2010, 17:17
---Zak---,
Посмотрите еще здесь вернуть имена подключений по локальной сети (http://autoit-script.ru/index.php/topic,2489.0.html).

---Zak---
28-09-2010, 17:44
madmasles,
Ну там просто выводится "локальное подключение 2" в строке...

ДА ладно - я решил сделать сервер-клиент для обработки всей этой штуки и буду так передавать айпишники и имена ПК.
Просто интересно существует ли такая функция уже готовая.

Я просто форму хочу сделать на которой будут кнопки с именами ПК, которые в оффе или он-лайне, но без всяких дополнительных программ.

Iska
01-10-2010, 17:14
Подскажите плиз может ли AutoIT подхватить инфу о всех ПК, которые находятся в сетевом окружении домена/рабочей группы - соответственно с подхватом имени ПК ???
Примерно так:AutoItSetOption("MustDeclareVars", 1)

Local $oShell = ObjCreate("Shell.Application")
Local $oFolder_Network
Local $oFolder_EntireNetwork

Local $objFolder_MSNetwork

Local $oFolder_Domain
Local $oFolder_MachineName

Local $oFolderItem
Local $oFolderItem_Domain
Local $oFolderItem_MachineName


; Получение папки "Сетевое окружение"
$oFolder_Network = $oShell.NameSpace("::{208D2C60-3AEA-1069-A2D7-08002B30309D}")
; Получение папки "Вся сеть"
$oFolder_EntireNetwork = $oFolder_Network.Items().Item("EntireNetwork").GetFolder

; Получение папки "Microsoft Windows Network"
For $oFolderItem In $oFolder_EntireNetwork.Items()
If $oFolderItem.Name = "Microsoft Windows Network" Then
$objFolder_MSNetwork = $oFolderItem.GetFolder

If IsObj($objFolder_MSNetwork) Then
; Перебор доменов и рабочих групп
For $oFolderItem_Domain In $objFolder_MSNetwork.Items()
If $oFolderItem_Domain.IsFolder Then
ConsoleWrite($oFolderItem_Domain.Path & " [" & $oFolderItem_Domain.Name & "]" & @CRLF)

$oFolder_Domain = $oFolderItem_Domain.GetFolder

If IsObj($oFolder_Domain) Then
; Перебор компьютеров
For $oFolderItem_MachineName In $oFolder_Domain.Items()
ConsoleWrite(@TAB & $oFolderItem_MachineName.Path & " [" & $oFolderItem_MachineName.Name & "]" & @CRLF)
Next
Else
ConsoleWriteError(@TAB & "Can't connect to [" & $oFolderItem_Domain.Name & "]" & @CRLF)
EndIf
EndIf
Next
Else
ConsoleWriteError(@TAB & "Can't find [Microsoft Windows Network]" & @CRLF)
EndIf

ExitLoop
EndIf
Next

Exit(0)

На основе: VBScript: перебор компьютеров в лок. сети через "Сетевое окружение" (http://forum.script-coding.com/viewtopic.php?id=28).

---Zak---
08-10-2010, 15:09
Спасибки огромное... то что надо =)

amel27
09-10-2010, 12:36
тут что-то было: http://forum.oszone.net/showthread.php?p=666228#post666228

---Zak---
11-10-2010, 10:08
amel27, пасиб - просто когда в одном топике много сообщений искать не удобно.




© OSzone.net 2001-2012