как выполнить vbs скрипт через командную строку
Запуск команд CMD из VBScript/JScript
Вводные: открыта консоль cmd, откуда я запускаю js-скрипт.
Вопрос: как мне выполнить команду(ы) cmd из скрипта, чтобы вывод эти команды выполняли в исходную консоль.
П.С. Может все элементарно просто, но я поймал тупняк.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Запуск команд cmd в JScript
Добрый вечер (утро)! Что-то не нашел нигде, не очень упорно искал, поэтому не сильно бейте.
Ищу сайты/книги по VBScript/JScript
Такой вопрос: можно ли где в инете найти сайты/скачать книги на русском по VBScript/JScript для.
Зачем Вам выполнять команды cmd из скрипта, если у Вас уже открыта консоль cmd и можно выполнять любые команды напрямую?
Добавлено через 24 секунды
Конкретизируйте, что Вы пытаетесь сделать.
Еще раз: нужно, чтобы выполнилась команда cmd, а не JScript.
Я же ясно сформулировал в названии темы.
Вообще-то не очень. Но я понял, что Вы хотите.
Если первым запускается jscript, то консоль не может быть общей и для самого скрипта, и для команд CMD, которые выполняются из под него.
Получить вывод и перенаправить в консоль можно так:
Как выполнить vbs скрипт через командную строку
Выпуск #01
«Vbs, whs, js скрипты для администратора»
22 июля 2008
Как можно запустить скрипт?
Расмотрим процесс запуска самого простого скрипта (сценария). Для этого нужно на рабочем диске выделить место для хранения скриптов, пусть это будет диск c: и папка Script. Выполняются скрипты с помощью серверов сценариев, которые переводят команды текста в исполняемый код.
Интерпретаторы в Windows представлены двумя файлами: wscript.exe и cscript.exe. Оба позволяют работать с VBScript и JScript и применять все возможности административных скриптов. Отличия:
Отличия можно увидеть наглядно на примерах выполнения команды. Создадим самый простой скрипт.
Создаем файл vbs.
Вызовите проводник (чтобы открыть проводник, нажмите кнопку Пуск и выберите команды Программы, Стандартные и Проводник ), зайдите в пункт меню «Сервис\Свойства папки» и убедитесь, что у вас отключена галочка.
Выбираем диск c:, каталог Script и вставляем текстовый файл и переименувываем его в hello.vbs.
В сам файл внесем текст:
Данный скрипт выводит сообщение Hello!.
Рассмотрим варианты запуска этого скрипта.
1. Запуск скрипта с командной строки с помощью утилиты CScript.exe
Для запуска нашего скрипта с командной строки нужно вызвать консоль командной строки. В операционной системе выполните «Пуск\Выполнить. » и наберите cmd.exe. У вас вызовется консоль командной строки.
В консоле командной строки выполните команду CScript.exe c:\script\hello.vbs
Как видно из рисунка, наше сообщение вывелось в консоле.
В приложении 1 дан список ключей, для выполнения csript.exe. Допустим нам не хочется, чтобы выводился в командную строку логотип сервера сценариев, для этого надо запустить сценарий с командной CScript.exe c:\script\hello.vbs //Nologo.
2. Запуск скрипта с командной строки с помощью утилиты WScript.exe
Воспользуемся консолью, которую мы запустили для вызова скрипта с помощью утилиты CScript.exe. Вызовем скрипт с помощью утилиты WScript.exe набрав в окне консоли команду WScript.exe c:\Script\hello.vbs. Сообщение скрипта вывелось в виде всплывающего окошка.
3. Запуск скрипта используя команду»Пуск\Выполнить. «
при помощи утилиты WScript.exe
В операционной системе нажав «Пуск» и затем «Выполнить» выполним скрипт набрав ту же команду, что и в предыдущем примере: WScript.exe c:\Script\hello.vbs. Появится такое же окошко, что и в предыдущем примере.
4. Запуск скрипта с помощью файлового менеджера.
Выполнить скрипт можно с помощью любого файлового менеджера. Запустим Explover, выбирем диск c:, зайдем в папку Script и выполним файл hello.vbs нажав на нем двойной щелчок.
Приложения
Приложение 1
Запуск скриптов с помощью сервера скриптов для командной строки csript.exe
Для выполнения сценариев с помощью сервера сценариев для командной строки предусмотрен следующий синтаксис:
cscript [имя_сценария] [параметры_сервера] [аргументы_сценария]
Все параметры являются необязательными, однако нельзя задать аргументы сценария, не задав сценарий. При отсутствии аргументов сценария или самого сценария программа Cscript.exe выведет описание синтаксиса команды и предусмотренные ключи.
Ключи сервера сценариев для командной строки (см. таблицу).
Copyright 2008 Новопашин Владимир. Все права защищены.
Полезные VBS скрипты и программы по работе с ними
В этой теме выкладываем скрипты, которые часто используются Вами
или на Ваш взгляд могут иметь большое практическое значение.
Также приветствуются скрипты высокой степени сложности, полезные с точки зрения
изучения принципа их работы.
******************* Перечень полезных скриптов: *******************
Отправка файла на FTP (Drag & Drop) и копирование ссылки в буфер обмена ссылка
Получение времени сервера ссылка
Полезные PowerShell скрипты
Здесь публикуются полезные с практической точки зрения сценарии PowerShell или те, что могут.
Полезные BAT/CMD скрипты
В этой теме выкладываем скрипты, которые часто используются Вами или на Ваш взгляд могут иметь.
VBS, метод POST, заполнение полей и иже с ними
С помощью скрипта лезу на сайт. Далее нужно заполнить поля формы. Тут ступор — как обращаться к.
1) Внести в код имя своего FTP-сервера, имя пользователя и пароль, корневую директорию.
1) Сохранить код в файл «FTP and ClipBoard.VBS»
2) Перетащить на него любой файл.
Получаем отправку на FTP и в буфере обмена уже готовую ссылочку.
Есть баг: русские имена файлов отправляются нормально, но ссылку получаем нерабочую.
Пока не знаю как исправить. Если есть идеи, прошу в тему.
Вложения
FTP and ClipBoard.zip (1.3 Кб, 539 просмотров) |
VRENN.vbs: Переименование файлов с использование регулярных выражений.
Основные способы применения:
vrenn pattern
— вывод списка
vrenn [mask|@list] pattern /C:folder [options]
— копирование в папку
vrenn [mask|@list] pattern /M:folder [options]
— пемещение в папку
vrenn [mask|@list] pattern replace [/P:text] [/S:text]
— переименование
vrenn [mask|@list] pattern /P:text /S:text
— только добавление текста
Вложения
vrenn.4.00.zip (5.9 Кб, 452 просмотров) |
Получение ErrorLevel из команды CMD в переменную VBS-скрипта
(на примере команды сравнения файлов)
Добавлено через 18 часов 41 минуту
И да, последняя функция (Circle) несколько ошибочна. Скрипт работает, но в теории может все-таки вызвать баги. Надо так:
Добавлено через 1 минуту
Очистка пароля заданной учётной записи пользователя домена.
Добавлено через 1 минуту
Управление настройками пароля для всех членов заданной группы пользователей домена.
Добавлено через 1 минуту
Определение даты последней регистрации сеанса пользователя в многоконтроллерном домене.
Добавлено через 3 минуты
Поиск учётных записей пользователей домена, имеющих ограничения в списке станций, на которые им разрешён интерактивный вход.
Добавлено через 1 минуту
Получение списка всех контроллеров домена с указанием формального уровня их иерархии (основной|дополнительный), наличием роли глобального каталога и распределением FSMO между ними.
Добавлено через 1 час 22 минуты
Сопоставление логических томов, назначенных НЖМД и съёмным накопителям, с физическими устройствами.
Алгоритм работы сценария таков:
1. Выбор из списка логических дисков компьютера тех томов, которые размещены на НЖМД и съёмных накопителях (кроме внешних НГМД и НОД).
То есть из всех экземпляров класса Win32_LogicalDisk выбираются те экземпляры, значение свойства DriveType для которых равно 2 (Removable Disk) или 3 (Local Disk).
Добавлено через 3 минуты
Сценарий для показа членам заданной группы пользователей домена текста какого-либо уведомления (например, поздравления по случаю праздника).
Для целей переименовавания музыкальных файлов для воспроизведения в случайном порядке.
Данный скрипт переименовывает все файлы в выбранной папке, присоединяя слева к старому имени файла случайный порядковый номер. Если у файла в имени был слева номер, то старый номер удаляется.
Папка выбирается через файловый диалог Word.
Добавлено через 2 часа 32 минуты
Определение типа сеанса (интерактивный/удалённый) текущего пользователя на текущем узле и внесение данных об интерактивном сеансе в заданном регистрационном каталоге.
Будет полезно для быстрого детекта bitcoin-майнеров или других «непослушных» процессов.
Дельта времени KernelModeTime + UserModeTime процесса
/
Дельта времени KernelModeTime + UserModeTime системы в целом
* 100
Информация берется из объекта WMI (Win32_Process, Win32_Service)
Если произошла ошибка, вышлите мне ее скриншот.
Если логи не появились, нажмите левой клавишей мыши по заголовку папки и затем клавишу F5.
v.1.1.
Добавлен Parent Process Path.
v.1.2.
Сортировка по % CPU в убывающем порядке
Первым столбцом теперь идет % CPU
Убрал отчет о CPU Time
Вывод ошибки, если отчет заблокирован другой программой
Вложения
GetCPUUsage.zip (2.9 Кб, 299 просмотров) |
Батник для регистрации DynamicWrapperX 2.0 (x32, x64) и вызова функций из 32/64-битных библиотек.
В комплект уже включена DynamicWrapperX ver.2.0.0.1,
а также демо-VBS, показывающий как свернуть и развернуть «Калькулятор Windows» с помощью API-функций.
Скрипт сам запрашивает права Администратора, если понадобится.
Если Вы хотите вызывать функции из своей 32-битной библиотеки (независимо от битности ОС), раскомментируйте участок кода FindWindow.vbs в строках №№ 16-24.
Если появится новая версия библиотеки DynamicWrapperX, ее папки «32» и «64» нужно скопировать в папку «dynwrapx», заменив оригинал.
О библиотеке DynamicWrapperX
Автор: Юрий Попов (YMP).
Условия распространения библиотеки: freeware.
Запуск Wscript.Shell и Shell.Application. Заметки
Общих обзоров и материалов на эту тему уже достаточно, данная заметка не претендует на полноценную публикацию или исследование нюансов. Рассматривается только ОС Windows и только с точки зрения разработчика 1С, без подробностей системного администрирования и погружения в API винды. Переход по навигационным ссылкам (открытие страниц, запуск программ по протоколам) и открытие/запуск приложений по ассоциированным файлам не рассматриваем.
В общем случае разработчику доступны два командных процессора, cmd или powershell. Это именно исполнители команд, передающие далее ядру ОС более низкоуровневые команды; они доступны из консолей, пункта меню «Выполнить», они лежат в основе многих действий графических оболочек и системных менеджеров.
При этом, cmd не имеет «надстройки», и обращение к ней это всегда консольная команда. А вот powershell предоставляет оболочку над утилитой, что упрощает некоторые действия, но создаёт путаницу между собственно процессором и его «управляющим» объектом в памяти некоего процесса. Причём, эта оболочка позволяет вызвать выполнение cmd. Сложно сказать, в каких терминологических отношениях, например, находятся API-функции и процессоры, поэтому фиксируем лишь практически важные, прикладные моменты.
Важно не путать, что мы запускаем (какой процессор) и чем запускаем (какая оболочка). Под оболочкой рассматриваем СОМ-объект, созданный динамически в ходе исполнения кода на языке 1С, безотносительно, на сервере 1С это или на клиенте.
WScript.Shell
Каждый экземпляр объекта WScript автоматически создаётся сервером сценариев (CScript.exe или WScript.exe) в момент вызова конструктора. Регистрация в СОМ+ и DCOM не требуется.
Создание:
Оболочка = Новый COMОбъект(«WScript.Shell»); // во времена 8.2 это не всегда работало, требовалось «подружить» 1С и WSH
Из свойств объекта Оболочка можно выяснить путь, имя, версию сервера сценариев, что полезно при расследовании нетипичного поведения.
В некоторых случаях в передаваемой командной строке надёжнее писать путь вызова в формате 8х3, т.е. «C:\Progra
По завершении работы с Оболочка её надо принудительно приравнять Неопределено. Если объект был создан на управляемой форме, то, за исключением общеизвестного «удержания», контекст и занимаемая память по закрытии формы будут сброшены, а вот если создан из общего модуля, и сложился ещё ряд факторов, то может остаться в памяти, в т.ч. по завершении создавшего сеанса.
Оболочка, в свою очередь, позволяет создавать процессы ОС, как объекты типа WshScriptExec (некоторые источники утверждают, что может потребоваться доступ ко всем зарегистрированным классам, на практике не сталкивался).
Опять же, можно запускать консольно: cscript.exe ПутьВКавычкахКФайлуСценария (запуск сценариев пакетно). Такой подход позволяет указать, какой сервер сценариев применять (CScript.exe или используемый по умолчанию WScript.exe), можно подавить вывод диалогов и сообщений сценария.
С возможностью управления
Запуск с порождением отдельного дочернего управляемого процесса, без ожидания завершения.
Некоторые свойства:
* ProcessID – идентификатор процесса, позволяет манипулировать им в различных методах Оболочки. В диспетчере задач виден на серверных ОС.
* Status – число: если процесс выполняется, то 0, если прекратил свою работу то 1 (неважно, по какой причине прекратил).
* Arguments содержит коллекцию, позволяющую обращаться к именным и безымянным параметрам скрипта по отдельности, и многое другое. Например:
* ExitCode возвращает результат (именно и только для уже завершённого), обычно это некое число.
Во многих примерах фигурирует свойство, которое крайне нестабильно работает в 1С: Оболочка.Timeout, якобы позволяющее до запуска указать, через какое заданное в секундах время остановить процесс. Не рекомендую с ним связываться, т.к. по аналогии с обработчиком ожидания, таймер, похоже, тикает лишь при некоторых условиях, и тупит при большой нагрузке. По умолчанию время исполнения сценария не ограничено.
Процесс, запущенный Exec, разумно мониторить в цикле с задержкой, и при необходимости насильственно прерывать. Для этого используют:
* Процесс.Terminate(); // показал себя как наиболее надёжный, но, если процесс уже завершился (например, рухнул по ошибке), вызов этого метода тоже вызовет ошибку; метод позволяет завершить дочерний процесс. Процессу будет послана команда WM_CLOSE, если это не сработает, то процесс будет завершен принудительно;
Метод позволяет контролировать ход работы запущенного процесса, и запущенный сценарий является дочерним для запускающего, ему присущи те же переменные среды Windows, что и у процесса-родителя, и те же ограничения доступа. Использование метода разумно для консольных приложений, которые выполняются в консольном окне, особенно с диалогами запросов пользователю. Видимость диалога определяется запуском на клиенте 1С и совокупностью свойств сервера сценариев. Метод работает более адекватно и прозрачно при возможных ограничениях UAC.
Концепция: запустили и управляем сами: можем подождать (Sleep), можем сразу опросить, можем прервать из 1С.
Без возможности управления
Запуск внешних приложений с ожиданием завершения.
КодВозврата = Оболочка.Run(СтрокаЗапуска, СостояниеОкна, ЖдатьЗавершения);
Никаких свойств или объектов не предусмотрено.
Метод работает строго аналогично команде ОС Windows «Пуск/Выполнить», и при запуске приложения сперва идет его поиск в переменных среды, поэтому имена наиболее употребительных приложений можно указывать без пути. Метод не позволяет контролировать ход работы запущенного процесса, и дочерним для запускающего запущенный сценарий не является, а идёт как независимый. При наличии неочевидных UAC работа метода превращается в чёрный ящик.
Диалоги могут быть видны, но «живут своей жизнью», а разумнее всего применять метод к приложениям, не выводящим никакие диалоги. Замечено, что в некоторых скриптах своеобразно игнорирует «@echo off», выводя пустое окно консоли на пару секунд.
Концепция: запустили и ждём, пока сама ОС не разберётся и не вернёт управление 1С.
Shell.Application
Оболочка = Новый COMОбъект(«Shell.Application»); // если проблема с совместимостью, разрядностью или правами, то уже это действие завершится ошибкой
ShellExecute
КодВозврата = Оболочка.ShellExecute(КомандныйПроцессор, АргументыДляДействия, КаталогВыполнения, ДействиеГлагол, СостояниеОкна); // все параметры, кроме первого, необязательны
* Состояние окна интересно только на клиенте, это рекомендуемое состояние окна при выполнении, многие приложения это игнорируют, нотация аналогична вышеприведённой по vbs);
Надеюсь, очевидно, что PowerShell RunAs небезопасна, т.к. SaveCred добавляет удостоверение администратора и пароль в кэш учетных данных, и этот кэш, в принципе, можно перехватить. При этом, в ряде случаев поведение Windows Credential Manager может не удовлетворять требованиям безопасности, и тогда никакое повышение не сработает, и далеко не всегда это ловится кодом возврата, возможно, придётся смотреть журнал событий винды. За возможность запуска программ от имени другого пользователя в Windows отвечает служба вторичного входа в систему (Secondary Log-on). Если эта служба остановлена, все описанные методы с RunAs работать не будут (проверить, запущена ли служба, можно командой PowerShell вида «Get-Service seclogon»).
Общие моменты
* Всегда учитывать, что VBScript разрешает пропускать необязательные параметры методов, а JScript нет! Особенно при заимствовании кода и копи-пасте с примеров в сети)))
* Следует быть аккуратнее с расшаренными ресурсами, и с теми, запись в которые виртуализируется. У виртуальных дисков в консольных запусках порой запаздывает отклик ОС по доступу, в т.ч.отказ.
* Если прав по UAC недостаточно, то при запуске на клиенте может вылезти consent.exe с диалогом запроса подтверждения, а на сервере просто втихую не запустится. До потоков вывода и ошибок. До каких-то объектных действий. В таких случаях команду лучше обёртывать запускаемым файлом-скриптом (как делает БСП), а на сервере только смотреть журнал ОС насчёт ошибок, смотреть настройки безопасности IE (при нужде добавлять server-ivc в доверенную зону, с которой разрешён запуск исполняемых).
* Создание сом-объекта, естественно, оборачиваем в попытку-исключение и, естественно, нам доступно только позднее связывание, т.к. такие вещи как Active-Х и тем более OLE статично в объекты 1С не впихнуть. И не забываем про деструктор и уборку мусора за собой.
* Если надо содержимое консольного окна успеть посмотреть, а оно закрывается, используем (например, последней командой в скрипте) команду PAUSE, но тогда помним про особенности чтения потока вывода.
По мнению «1С»
На ИТС сравнительно мало конкретики, посвящённой особенностям работы СОМ-объектов с оболочками ОС, и она разрозненна.
Процитирую наиболее полезное: «При запуске внешней программы из кода требуется составлять строку запуска таким образом, чтобы она собиралась только из проверенных частей. если одна из частей, из которых собирается строка запуска, содержит данные, полученные из базы данных, из поля ввода на форме или прочитаны из хранилища настроек, то перед запуском программы требуется проверить, являются ли запуск безопасным. Безопасными считаются такие строковые данные, которые не содержат в себе следующие символы: «$», «`», «|», «||» «;», «&», «&&». Данное требование распространяется на все способы запуска программ.»
Разработчику доступны методы:
ФайловаяСистемаКлиент.ЗапуститьПрограмму (в клиентском коде);
ФайловаяСистема.ЗапуститьПрограмму (в серверном коде)
Как работают оба метода:
Если нужно получение потока вывода и/или потока ошибок, то объявляются временные файлы stdout.tmp и stderr.tmp, и к самой строке команды дописывается перенаправление потока в них (перезаписью). Создаётся отдельный текстовый документ с именем run.bat, и в него пишется следующее:
Файл run.bat и на сервере, и на клиенте сохраняется просто как временный файл.
Если указана необходимость дождаться завершения, то файл удаляется принудительно после запуска, не дожидаясь конца сеанса. Если ждать завершения не надо, тут может возникнуть потенциальная утечка памяти, т.к. сеанс 1С, натыкаясь на невозможность удалить порождённый им временный файл, просто игнорирует его и закрывается без лишних жалоб.
При необходимости (если дождались завершения), читаются файлы потоков (с помощью ЧтениеТекста, сразу целиком и в той же кодировке, что скрипт), и также принудительно удаляются. Опять-таки, если завершения не ждать, то и работать с файлами потоков разработчику придётся самостоятельно.
На практике подобный подход, обёртывание в bat, показал меньшую стабильность при работе в фоновых заданиях, чем прямое указание команды. Ну и, если дело на клиенте, и фокус «уплыл», и пользователь случайно нажал Ctrl+Break, то ведь оно и остановиться может.
Запуск bat с через VBS с правами администратора
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Запуск BAT в «тихом» режиме c правами администратора через GPO
Доброго времени суток, товарищи. В сети есть AD, есть групповые политики и задача : очистить.
Запуск bat файла с правами администратора из программы
Здравствуйте! Нужно при нажатии на кнопку создать bat файл с некоторыми строками и выполнить его.
Запуск приложения с правами администратора в windows через QProcess
Собственно, вопрос в заголовке темы. Такое возможно? Мне требуется из моего приложения запустить.
C:\Users\Bazinga\Desktop\Lite_new>set /P />
C:\Users\Bazinga\Desktop\Lite_new>If «C:\Program Files» NEQ «» (nssm64 install «my_service» «my_service.exe»)
else (nssm32 install «my_service» «my_service.exe»)
Administrator access is needed to install a service.
C:\Users\Bazinga\Desktop\Lite_new>net start «my_service»
Системная ошибка 5.
Отказано в доступе.
Если делать с правами админа
CreateObject(«Shell.Application»).ShellExecute «install_service.bat», «», «», «runas», 1
C:\Windows\system32>set /P /> Не удается найти указанный файл.
C:\Windows\system32>If «C:\Program Files» NEQ «» (nssm64 install «my_service» «my_service.exe»)
else (nssm32 install «my_service» «my_service.exe»)
«nssm64» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
C:\Windows\system32>net start «my_service»
Служба «my_service» запускается.
Служба «my_service» успешно запущена.
Решение
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Запуск процесса с правами пользователя (запускающая программа работает с правами администратора)
Здравствуйте. Требуется выполнить действие, описанное в заголовке. Читал тему.
Запуск программы без прав администратора скриптом, запущенным с правами администратора
Добрый день. Запускаю скрипт с правами администратора. Тот в свою очередь запускает программу, как.
Запуск программы от имени администратора через bat-файл
Добрый вечер! Необходимо запустить программу от имени администратора, находясь под учётной записью.