|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Загрузка/выгрузка из/в *.txt файл |
|
VBS/WSH/JS - [решено] Загрузка/выгрузка из/в *.txt файл
|
Пользователь Сообщения: 144 |
Профиль | Отправить PM | Цитировать Добрый день!
Народ помогите, есть вот такой скрипт: Computer = InputBox("Имя компьютера") Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2") Set colComputer = objWMIService.ExecQuery _ ("Select * from Win32_ComputerSystem") For Each objComputer in colComputer Wscript.Echo "Logged-on user: " & objComputer.UserName Next Как сделать так, чтобы запрашивал не имя, а name.txt файл со списком ПК и соответственно выгружал в name_log.txt ввиде: NamePC1 = Domain\User1 NamePC2 = Domain\User2 NamePC3 = Domain\User3 ... |
|
Отправлено: 13:42, 20-01-2012 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Укажите версии ОС:
- на компьютере, где будет запускаться сценарий; - на компьютерах, которые он будет опрашивать. |
Отправлено: 13:49, 20-01-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Цитата DmitriiV:
2. Windows XP (Pro), 7 (Enterprise, Pro, Ultimate) |
|
Отправлено: 14:22, 20-01-2012 | #3 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Простой, но некрасивый (с точки зрения организации диалога по выбору файла с именами компьютеров) вариант:
strLog = "name_log.txt" Set objFS = CreateObject("Scripting.FileSystemObject") strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog) strFile = Trim(InputBox("Полный путь к файлу:")) If objFS.FileExists(strFile) Then Set objFile = objFS.OpenTextFile(strFile, 1) arrComputers = Split(objFile.ReadAll, vbNewLine) objFile.Close On Error Resume Next For i = 0 To UBound(arrComputers) If Len(arrComputers(i)) > 0 Then Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & arrComputers(i) & "\root\cimv2") If Err.Number = 0 Then Set colComputer = objWMIService.ExecQuery("Select UserName from Win32_ComputerSystem") If Err.Number = 0 Then For Each objComputer In colComputer If IsNull(objComputer.UserName) Then strUsers = strUsers & arrComputers(i) & " = сеанс не обнаружен" & vbNewLine Else strUsers = strUsers & arrComputers(i) & " = " & objComputer.UserName & vbNewLine End If Next Else Err.Clear End If Set colComputer = Nothing Else Err.Clear End If End If Next On Error GoTo 0 Set objFile = objFS.OpenTextFile(strLog, 2, True) objFile.Write strUsers objFile.Close Set objFile = Nothing Else WScript.Echo "Файл не найден." End If Set objFS = Nothing WScript.Quit 0 VBS диалог открытия файла не работает на Windows 7 |
Отправлено: 15:37, 20-01-2012 | #4 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Супер!
Только есть проблема, если ПК не пингуется, то скрипт висит, можно его доделать так?: NamePC1 = domain\NameUser1 NamePC2 = domain\NameUser2 NamePC3 = недоступен NamePC4 = domain\NameUser4 ... |
|
Отправлено: 16:10, 20-01-2012 | #5 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать strLog = "name_log.txt" Set objFS = CreateObject("Scripting.FileSystemObject") strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog) strFile = Trim(InputBox("Полный путь к файлу:")) If objFS.FileExists(strFile) Then Set objFile = objFS.OpenTextFile(strFile, 1) arrComputers = Split(objFile.ReadAll, vbNewLine) objFile.Close On Error Resume Next For i = 0 To UBound(arrComputers) If Len(arrComputers(i)) > 0 Then If Ping_GUI(arrComputers(i)) Then Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & arrComputers(i) & "\root\cimv2") If Err.Number = 0 Then Set colComputer = objWMIService.ExecQuery("Select UserName from Win32_ComputerSystem") If Err.Number = 0 Then For Each objComputer In colComputer If IsNull(objComputer.UserName) Then strUsers = strUsers & arrComputers(i) & " = сеанс не обнаружен" & vbNewLine Else strUsers = strUsers & arrComputers(i) & " = " & objComputer.UserName & vbNewLine End If Next Else Err.Clear End If Set colComputer = Nothing Else Err.Clear End If Else strUsers = strUsers & arrComputers(i) & " = недоступен" & vbNewLine End If End If Next On Error GoTo 0 Set objFile = objFS.OpenTextFile(strLog, 2, True) objFile.Write strUsers objFile.Close Set objFile = Nothing WScript.Echo "Готово." Else WScript.Echo "Файл не найден." End If Set objFS = Nothing WScript.Quit 0 '=== Function Ping_GUI(strName) Dim objWMI, objItem Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _ ("SELECT * FROM Win32_PingStatus WHERE Address='" & strName & "'") For Each objItem In objWMI If IsNull(objItem.StatusCode) Or objItem.StatusCode <> 0 Then Ping_GUI = False Else Ping_GUI = True End If Next Set objItem = Nothing Set objWMI = Nothing End Function |
Отправлено: 16:56, 20-01-2012 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MSFT SQL Server - Выгрузка базы в текстовый файл и загрузка обратно | xoxmodav | Программирование и базы данных | 4 | 17-11-2010 01:11 | |
нужно переделать файл doc в файл txt | гала | Тест-форум | 1 | 15-01-2010 18:53 | |
Разное - файл trace.txt | snoogens | Microsoft Windows 2000/XP | 2 | 10-03-2009 00:45 | |
Выборочная загрузка и выгрузка данных из формы в таблицу MySQL | dima1981 | Вебмастеру | 8 | 25-08-2008 18:02 | |
Драйвер - Загрузка и выгрузка dll через CMDline | borison | Microsoft Windows 2000/XP | 2 | 29-02-2008 17:50 |
|