Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Список ПК из сетевого окружения (http://forum.oszone.net/showthread.php?t=186639)

---Zak--- 27-09-2010 17:58 1505692

Список ПК из сетевого окружения
 
Добрый день всем.

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

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

saavaage 28-09-2010 03:05 1506099

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

---Zak--- 28-09-2010 10:06 1506276

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

madmasles 28-09-2010 12:21 1506391

---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. Там еще много чего полезного найти можно.

---Zak--- 28-09-2010 12:43 1506406

Спасибки огромное... теперь надо это все перевести под себя =)

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

---Zak--- 28-09-2010 16:52 1506595

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

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

madmasles 28-09-2010 17:17 1506614

---Zak---,
Посмотрите еще здесь вернуть имена подключений по локальной сети.

---Zak--- 28-09-2010 17:44 1506634

madmasles,
Ну там просто выводится "локальное подключение 2" в строке...

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

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

Iska 01-10-2010 17:14 1509068

Цитата:

Цитата ---Zak---
Подскажите плиз может ли 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: перебор компьютеров в лок. сети через "Сетевое окружение".

---Zak--- 08-10-2010 15:09 1514343

Спасибки огромное... то что надо =)

amel27 09-10-2010 12:36 1514937

тут что-то было: http://forum.oszone.net/showthread.p...228#post666228

---Zak--- 11-10-2010 10:08 1516133

amel27, пасиб - просто когда в одном топике много сообщений искать не удобно.


Время: 20:27.

Время: 20:27.
© OSzone.net 2001-