-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Список ПК из сетевого окружения
Добрый день всем.
Искал поиском, но ничего интересного не нашел...
Подскажите плиз может ли AutoIT подхватить инфу о всех ПК, которые находятся в сетевом окружении домена/рабочей группы - соответственно с подхватом имени ПК ???
|
Ну как я понял там подхват ПК из сети идет через "CheckLAN.exe"... а хорошо бы было, чтобы имена компов хватались без различного рода програмулек. В том же примере подключается библиотека "<WinAPIEx.au3>" - тока благодаря тебе о ее существовании я и узнал =) найти бы что-нить в виде библиотеки, но только для работы с сетью.
|
---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. Там еще много чего полезного найти можно.
|
Спасибки огромное... теперь надо это все перевести под себя =)
Удобная штука + очень много всего в ней - спасибки еще раз. Пойду теперь голову ломать =)
|
Самое что странное, то это в этих классах есть только вывод пользователей и групп, а вот имен ПК - в упор не нашел =( Может она по другому называется ?
madmasles, Win32_UserInDomain - это все же все пользователи домена, но не имена ПК =) заметил, когда пинговал ПК, а их нет... но все равно спс - уже вытащил от туда много что интересное
|
madmasles,
Ну там просто выводится "локальное подключение 2" в строке...
ДА ладно - я решил сделать сервер-клиент для обработки всей этой штуки и буду так передавать айпишники и имена ПК.
Просто интересно существует ли такая функция уже готовая.
Я просто форму хочу сделать на которой будут кнопки с именами ПК, которые в оффе или он-лайне, но без всяких дополнительных программ.
|
Цитата:
Цитата ---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: перебор компьютеров в лок. сети через "Сетевое окружение".
|
Спасибки огромное... то что надо =)
|
amel27, пасиб - просто когда в одном топике много сообщений искать не удобно.
|
Время: 20:27.
© OSzone.net 2001-