Командный сценарий windows nt что это

Обновлено: 07.07.2024

A командного файла - это файл сценария в DOS , OS / 2 и Microsoft Windows . Он состоит из серии команд , которые должны выполняться интерпретатором командной строки , сохраненных в текстовом файле . Пакетный файл может содержать любую команду, которую интерпретатор принимает в интерактивном режиме, и использовать конструкции, которые разрешают условное ветвление и цикл внутри пакетного файла, такие как IF , FOR и GOTO метки. . Термин «пакетный» происходит от пакетная обработка , что означает «неинтерактивное выполнение», хотя пакетный файл может не обрабатывать пакет из нескольких данных.

Расширение имени файла .bat используется в DOS и Windows. Windows NT и OS / 2 также добавили .cmd . Пакетные файлы для других сред могут иметь другие расширения, например, .btm в оболочках, связанных с 4DOS , 4OS2 и 4NT .

Детальная обработка пакетных файлов значительно изменилась между версиями. Некоторые сведения в этой статье применимы ко всем пакетным файлам, в то время как другие сведения относятся только к определенным версиям.

Содержание

Варианты

В DOS командный файл можно запустить из интерфейс командной строки , введя его имя, затем любые требуемые параметры и нажав клавишу ↵ Enter . При загрузке DOS файл AUTOEXEC.BAT , если он присутствует, выполняется автоматически, поэтому в этот файл можно поместить любые команды, которые необходимо выполнить для настройки среды DOS. Пользователи компьютеров должны иметь файл AUTOEXEC.BAT для установки системной даты и времени, инициализации среды DOS, загрузки любых резидентных программ или драйверов устройств или инициализации сетевых подключений и назначений.

Ранняя версия Windows

OS / 2

Windows NT

Microsoft выпустила версию cmd.exe для Windows 9x и ME под названием WIN95CMD, чтобы пользователи старых версий Windows могли использовать определенные командные файлы в стиле cmd.exe.

Расширения имен файлов

Параметры пакетного файла

COMMAND.COM и cmd.exe поддерживают количество специальных переменных (от %0 , %1 до % 9 ) для ссылки на путь и имя пакетного задания и первые девять параметров вызова из пакетного задания, см. также SHIFT . Несуществующие параметры заменяются строкой нулевой длины. Их можно использовать аналогично переменным среды , но они не хранятся в среде. Microsoft и IBM называют эти переменные параметрами замены или заменяемыми параметрами, тогда как Digital Research, Novell и Caldera ввели для них термин "переменные замены". JP Software называет их параметрами пакетного файла.

Примеры

Этот пример пакетного файла отображает Hello World! , запрашивает и ожидает, пока пользователь нажмет клавишу, а затем завершает работу. . (Примечание: не имеет значения, вводятся ли команды в нижнем или верхнем регистре, если не работают с переменными)

Чтобы запустить файл, он должен быть сохранен с расширением .bat (или .cmd для операционных систем типа Windows NT) в текстовом формате, обычно создаваемом с помощью текстового редактора, такого как Microsoft Notepad или текстовый процессор , работающий в текстовом режиме.

При выполнении отображается следующее:

Объяснение

Интерпретатор выполняет каждую строку по очереди, начиная с первой. Символ @ в начале любой строки предотвращает отображение этой команды в подсказке при ее выполнении. Команда ECHO OFF отключает подсказку навсегда или до тех пор, пока она не будет включена снова. Комбинированный @ECHO OFF часто, как и здесь, является первой строкой командного файла, предотвращающей отображение любых команд, включая саму себя. Затем выполняется следующая строка, и команда ECHO Hello World! выводит Hello World! . Выполняется следующая строка, и команда PAUSE отображает Нажмите любую клавишу, чтобы продолжить. . . и приостанавливает выполнение скрипта. После нажатия клавиши сценарий завершается, так как команд больше нет. В Windows, если сценарий выполняется из уже запущенного окна командной строки , окно остается открытым в командной строке, как в MS-DOS; в противном случае окно закрывается по завершении.

Ограничения и исключения

Нулевые значения в переменных

Расширения переменных подставляются в команду текстуально, и, таким образом, переменные, которые не содержат ничего, просто исчезают из синтаксиса, а переменные, содержащие пробелы превращаются в несколько токенов. Это может привести к синтаксическим ошибкам или ошибкам.

Например, если% foo% пуст, этот оператор:

анализируется как ошибочная конструкция:

Аналогично, если % foo% содержит abc def , то возникает другая синтаксическая ошибка:

Обычный способ предотвращения эта проблема заключается в заключении расширений переменных в кавычки, чтобы пустая переменная расширялась до допустимого выражения IF "" == "bar" вместо недопустимого IF == bar . Текст, который сравнивается с переменной, также должен быть заключен в кавычки, потому что кавычки не являются специальным ограничивающим синтаксисом; эти персонажи представляют себя.

Задержка! VARIABLE! Расширение, доступное в Windows 2000 и более поздних версиях, может использоваться, чтобы избежать этих синтаксических ошибок. В этом случае пустые или многословные переменные не ошибаются синтаксически, потому что значение расширяется после анализа команды IF:

Еще одно отличие в Windows 2000 или выше заключается в том, что пустая переменная (неопределенная) не заменяется. Как описано в предыдущих примерах, предыдущее поведение пакетного интерпретатора привело бы к пустой строке. Пример:

Пакетные интерпретаторы до Windows 2000 отображали результат MyVar не определен .

Кавычки и пробелы в переданных строках

В отличие от процессов Unix / POSIX, которые получают свои аргументы командной строки, уже разделенные оболочкой на массив строк, процесс Windows получает всю командную строку как одну строку через функцию API GetCommandLine . В результате каждое приложение Windows может реализовать свой собственный синтаксический анализатор для разделения всей командной строки на аргументы. Многие приложения и инструменты командной строки разработали для этого собственный синтаксис, поэтому не существует единого соглашения о заключении в кавычки или экранировании метасимволов в командной строке Windows.

  • Для некоторых команд пробелы рассматриваются как разделители, разделяющие аргументы, если эти пробелы не заключены в кавычки. Существуют различные соглашения о том, как кавычки могут быть переданы приложению:
    • Широко используемое соглашение реализуется с помощью синтаксического анализатора командной строки, встроенного в библиотеку времени выполнения Microsoft Visual C ++ в CommandLineToArgvW . Он использует соглашение, согласно которому 2 n обратной косой черты, за которыми следует кавычка ("), создают n обратную косую черту, за которой следует начало / конец кавычки, тогда как (2 n ) Обратная косая черта +1, за которой следует кавычка, снова создает n обратных косых черт, за которыми следует литерал кавычек. Такое же соглашение является частью спецификации .NET Framework .
      • Недокументированный аспект заключается в том, что "" в середине строки в кавычках создает одинарную кавычку (изменение CRT в 2008 году [msvcr90] изменило эту недокументированную обработку кавычек.) Это полезно для вставки кавычек в аргумент без повторного включения интерпретации метасимволов cmd. например,
      • |,
      • & и
      • >. (cmd не распознает обычный
      • \ "как экранирование цитаты. Он повторно включает эти специальные значения при просмотре цитаты, думая, что цитата закончилась .)

      Если строка содержит кавычки и должна быть вставлена ​​в другую строку текста, которая также должна быть заключена в кавычки, особое внимание уделяется механизму цитирования. требуется:

      В Windows 2000 и более поздних версиях решение состоит в замене каждого вхождения символа кавычки в значении серией из трех символов кавычек:

      Экранированные символы в строках

      Однако экранирование не работает должным образом при вставке экранированного символа в переменную среды. Переменная заканчивается тем, что содержит команду live pipe, когда просто отображается эхом. Необходимо экранировать как саму каретку, так и экранированный символ для отображения символа в виде текста в переменной:

      Спящий режим или задержка сценария

      До тех пор, пока команда TIMEOUT не была представлена ​​в Windows Vista, не было простого способа реализовать временную паузу, поскольку команда PAUSE приостанавливает выполнение сценария на неопределенный срок, пока не будет нажата какая-либо клавиша.

      Вывод текста с вырезанными CR / LF

      Обычно весь напечатанный текст автоматически содержит управляющие символы для возврата каретки (CR) и перевода строки (LF) добавляется в конец каждой строки.

      Не имеет значения, используют ли две команды echo одну и ту же командную строку; коды CR / LF вставляются для разбивки вывода на отдельные строки:

      Это можно использовать для вывода данных в текстовый файл без добавления CR / LF в конец:

      Однако нет способа вставить этот удаленный вывод приглашения CR / LF непосредственно в переменную среды.

      Установка рабочего каталога Uniform Naming Convention (UNC) с помощью ярлыка

      Невозможно иметь командную строку, которая использует UNC-путь в качестве текущего рабочего каталога ; например \\ server \ share \ directory \

      Командная строка требует использования букв дисков для назначения рабочего каталога, что затрудняет выполнение сложных пакетных файлов, хранящихся на общей UNC-папке сервера. Хотя командный файл может быть запущен из пути к файлу UNC, рабочий каталог по умолчанию - C: \ Windows \ System32 \ .

      . В Windows 2000 и более поздних версиях обходным путем является использование PUSHD и команда POPD с расширениями команд.

      Если они не включены по умолчанию, расширения команд можно временно включить с помощью переключателя / E: ON для интерпретатора команд.

      Итак, чтобы запустить пакетный файл на общем ресурсе UNC, назначить временную букву диска общему ресурсу UNC и использовать общий ресурс UNC в качестве рабочего каталога пакетного файла, можно создать ярлык Windows, который выглядит как это:

      • Цель: % COMSPEC% / E: ON / C "PUSHD" "" \\ SERVER \ SHARE \ DIR1 \ DIR2 \ "" "& BATCHFILE.BAT & POPD"

      Рабочий каталог атрибут этого ярлыка игнорируется.

      Это также решает проблему, связанную с контролем учетных записей пользователей (UAC) в Windows Vista и новее. Когда администратор вошел в систему и включен UAC, и они попытаются запустить командный файл от имени администратора с буквы сетевого диска, используя контекстное меню файла, щелкнув правой кнопкой мыши, операция неожиданно завершится ошибкой. Это связано с тем, что контексту привилегированной учетной записи UAC с повышенными привилегиями не назначены буквы сетевых дисков, и невозможно назначить буквы дисков для контекста с повышенными правами через оболочку Explorer или сценарии входа в систему. Однако, создав ярлык для командного файла с использованием указанной выше конструкции PUSHD / POPD и используя ярлык для запуска командного файла от имени администратора, будет создана временная буква диска и удален в контексте учетной записи с повышенными правами, и командный файл будет работать правильно.

      Следующий синтаксис правильно расширяется до пути к текущему пакетному сценарию.

      Пути по умолчанию UNC отключены по умолчанию, поскольку они использовались для аварийного завершения старых программ.

      Значение реестра Dword DisableUNCCheck в HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor позволяет использовать каталог по умолчанию в формате UNC. CD команда не будет изменять, но поместит UNC-путь в каталог по умолчанию в ярлыке для Cmd или с помощью команды Start. start "" / d \\ 127.0.0.1 \ C $ "cmd / k" ( C$ общий ресурс для администраторов).

      Набор символов

      В пакетных файлах используется набор символов OEM, определенный компьютером, например Кодовая страница 437 . Их части, не относящиеся к ASCII, несовместимы с наборами символов Unicode или Windows , которые иначе используются в Windows, поэтому необходимо соблюдать осторожность. Неанглийские имена файлов работают только при вводе через редактор, совместимый с набором символов DOS. Имена файлов с символами вне этого набора не работают в пакетных файлах.

      Чтобы получить вывод в Юникоде в файловые каналы из внутренней команды, такой как dir , можно использовать команду cmd / U . Например, cmd / U / C dir>files.txt создает файл, содержащий список каталогов с правильными символами Windows в кодировке UTF-16 LE.

      Пакетные вирусы и вредоносное ПО

      Как и любой другой язык программирования, пакетные файлы могут использоваться злонамеренно. Простые трояны и бомбы-вилки легко создаются, а пакетные файлы могут выполнять форму заражения DNS , изменяя файл hosts . Возможны пакетные вирусы, которые также могут распространяться через USB-флеш-накопители с использованием возможностей Windows Autorun.

      Следующая команда в пакетном файле удалит все данные в текущем каталоге (папке) - без предварительного запроса подтверждения:

      Эти три команды представляют собой простую fork bomb , которая будет непрерывно копировать себя, чтобы истощить доступную систему ресурсы, замедление или сбой системы:

      Другие языки сценариев Windows

      Командный процессор cmd.exe, который интерпретирует файлы .cmd, поддерживается во всех 32 - и 64-битные версии Windows как минимум до Windows 10. COMMAND.EXE, интерпретирующий файлы .BAT, поддерживался во всех 16- и 32-битных версиях как минимум до Windows 10.

      Там другие, более поздние и более мощные языки сценариев, доступные для Windows. Однако для их использования требуется установка интерпретатора языка сценариев:

      В этой статье я хотела бы пояснить, когда следует использовать механизмы сценариев, рассказать о некоторых базовых концепциях их составления, а также дать ряд практических советов (см. врезку "Советы по составлению сценариев" ). Кроме того, я представлю код на VBScript, с помощью которого решается некая общая задача, и прокомментирую его. Выбор пал на VBScript, поскольку Windows поддерживает этот язык. Windows поддерживает и JScript, но в предыдущих номерах журнала, как правило, использовался VBScript, так что есть смысл сохранять преемственность.

      Почему именно сценарии?

      Программирование сценария занимает больше времени, чем однократное выполнение задачи вручную, - даже если за дело берется опытный специалист по программированию на VBScript, который знает проблему досконально. Если же вы не профессионал, то написание и отладка сценария займет куда больше времени, чем использование графического интерфейса. Так зачем же тогда привлекать сценарий?

      Основное назначение административных сценариев - автоматизация часто повторяющихся задач. Если администратор сталкивается с задачей, которую нужно выполнить более одного раза или же регулярно, как раз имеет смысл доверить ее решение сценарию. Очевидно, что в этом случае все подобные задачи будут решаться быстро и единообразно. Кроме того, написание сценариев позволит создать инструментарий администратора, не предусмотренный в графическом интерфейсе.

      Если с помощью GUI решить задачу непросто, то, может быть, стоит обратиться к утилитам командной строки, которые поставляются вместе с операционной системой или в составе Resource Kit? Желательно использовать данные утилиты всегда, когда в этом есть смысл. Но в Windows 2000 набор программ с графическим интерфейсом не соответствует в точности набору утилит командной строки, и некоторые утилиты могут не удовлетворять в полном объеме решаемой задаче. Пакетные файлы не всегда хорошо справляются с ситуацией, когда входной поток данных должен быть изменен. Кроме того, утилиты командной строки и сценарии не являются взаимоисключающими методами. Можно написать сценарии, основанные на применении утилит командной строки и при этом свободные от недостатков последних.

      Scripting Host

      Прежде чем перейти к созданию сценария, поясню некоторые термины. Зная, что скрывается за словами scripting host, легче понять, как это может повлиять на проект сценария, допустимо ли будет использовать в сценарии выражения и т. п.

      Windows поддерживает две машины сценариев: Microsoft Internet Explorer (IE) и Windows Script Host (WSH). Выбор той или иной машины влияет на используемые в сценарии возможности. Если применяется WSH, как чаще всего и бывает, то в сценарии могут использоваться объекты WSH, но не IE, и наоборот. Машина сценария не обязана понимать содержание всех мыслимых сценариев; воспринимается только сценарий, написанный на языке машины, и тот, который ею поддерживается. Для WSH и IE "понятными" являются языки VBScript и JScript.

      Элементы сценария

      Каждая строка сценария - это оператор, который сообщает компьютеру, что следует сделать. Исполняемые операторы обычно имеют форму типа "действие-объект": описываются само действие и тот объект, над которым действие совершается. Сценарий может содержать условия, при наличии которых указанные операторы должны быть выполнены. Хост сценария интерпретирует строки кода слева направо и сверху вниз, так что можно, например, получив некоторые данные в строке 10, использовать их в 30-й строке. Исключение составляют процедуры. Процедуры (функции и подпрограммы) - это набор операторов, которые выполняются только при явном обращении к ним. В данном случае процедура сразу же начинает выполняться независимо от того, из какого места кода было обращение.

      Исполняемые части сценария называются операторами. Неисполняемая часть сценария называется комментарием и должна предваряться апострофом (') или ключевым словом Rem. Например:

      Комментарий может занимать всю строчку целиком или быть частью строки, содержащей исполняемый код. Сценарий следует документировать, чтобы не участвующий в его написании человек (или даже незнакомый с лексикой его языка) смог легко понять, для чего сценарий предназначен. Иногда в целях отладки программы в начале исполняемой строки ставят признак комментария.

      VBScript рассматривает перечисленные четыре типа данных как подмножество другого типа данных - variant, который может содержать данные любого вида. Таким образом, VBScript можно не сообщать, с данными какого типа вы работаете, но нужно иметь в виду, что некоторые задачи выполняются в Visual Basic (VB) и VBScript с описанными типами данных по-разному (правда, подобная ситуация может никогда и не встретиться). Группы однотипных данных называются массивами (array).

      Для простоты работы с данными VBScript поддерживает еще два типа данных, не имеющих никакого начального значения (null-данные), которые можно присваивать переменным (variable) и константам (constant) сценария. Значения переменных в ходе выполнения программы могут меняться, но их имена при этом остаются прежними. Константы при выполнении сценария имеют только одно значение и изменяться не могут.

      Передать данные в сценарий можно двумя способами. Во-первых, их в явном виде прописывают в теле программы. Например, ""\\bigserver\sharedfolder"" - обычное использование в сценарии строковых данных для обозначения пути. Другой способ - передать нужные данные во входном потоке в сценарий. Кроме того, по ходу обработки сценарий может самостоятельно генерировать данные (например, вычислить дату двумя неделями позднее текущей), а затем использовать их.

      Манипулировать данными можно с помощью операторов (operator) - символов, которые обычно применяются для обозначения математических функций. Какие-то операторы имеют более высокий приоритет, какие-то - более низкий, и это влияет на порядок вычисления выражений (expression). Выражение есть некоторое вычисление, в которое могут быть включены числа, переменные, строки, константы. В выражениях могут использоваться операторы. Например, выражение dInputDate + 2 = dNewDate означает, что к значению переменной dInputDate добавляется 2, и результат вычисления вновь присваивается переменной dNewDate.

      Функции и подпрограммы

      VBScript имеет набор встроенных функций, которые позволяют выполнять некоторые операции без подробного описания решаемой задачи. С помощью встроенных функций можно манипулировать числами, строками, значениями даты и времени, массивами. В состав VBScript также входят функции преобразования данных одного типа в другой. Например, VBScript обычно исходит из того, что число, допустим, 45, имеет тип "число", но при необходимости его можно рассматривать как данные строкового типа.

      VBScript предусматривает создание собственных функций пользователя (user-defined function, UDF) для выполнения каких-то специфических задач. Например:

      Пользовательская функция TestFunct работает со встроенной функцией Sqr для извлечения квадратного корня из 9 и добавления к полученному результату 2. UDF, как и встроенная функция, может использовать аргументы.

      TestFunct UDF возвращает результат в основное тело программы. Подпрограмма выполняет некоторые действия, но ничего не возвращает в основной код в качестве результата. Программист может задействовать подпрограмму несколько раз, при необходимости использовать один и тот же участок кода, а повторно писать одно и то же лень. Подпрограмма

      Объекты в сценарии

      Объект (Object) представляет собой физическую или логическую часть вычислительной среды, например дисковод или имя учетной записи. Конечно, можно программировать, не прибегая к объектам, но большинство сценариев управления работает с объектами. Если используется WSH, VBScript может обращаться к объектам, изначально присущим WSH, например, представляющим файлы, каталоги, части реестра; VBScript также поддерживает объекты Windows Management Instrumentation (WMI) и Active Directory Service Interfaces (ADSI). Объекты WMI связаны с физическими и логическими частями вычислительной системы: например, адресами IP, файловыми системами, сетевыми адаптерами. ADSI-объекты представляют ресурсы службы каталогов: в частности, Active Directory (AD) или иные поддерживаемые каталоги, скажем Windows NT 4.0 SAM. Статические группы объектов одинаковой природы называются классами, а группы, описываемые пользователем, - библиотеками.

      Объекты имеют свойства и методы. Объект определяется его свойствами (т. е. IP Address - это свойство объекта Network Card, а 12.4.21.197 - значение данного свойства). Методы - это действия, которые могут выполняться над объектом (Copy - один из методов объекта File). Не все объекты имеют методы. Свойства и методы используются при написании кода одинаково: сначала следует объект, затем ставится точка, далее название метода или свойства (например, ObjectName.PropertyName). Объекты могут содержать другие объекты. В частности, объект WSH WScript включает подчиненный объект WshArguments, который является набором аргументов, передаваемых при вызове файлу-сценарию. Для выделения первого элемента строки аргументов используется WScript.Arguments(0). Как было видно при обсуждении объектов WSH, формальное имя подчиненных объектов не совпадает с именем, используемым при обращении к ним в сценарии.

      В следующий раз я расскажу о том, как применять полученные знания при создании сценариев управления.

      Советы по составлению сценариев

      В следующей статье будут приведены более конкретные советы по программированию на VBScript, а сейчас ограничимся общими правилами, которых нужно придерживаться всегда:

      либо установить среду командной строки в виде среды по умолчанию:

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

      Следующим шагом в развитии средств и технологий автоматизации в операционной системе Windows стало появление сервера сценариев Windows Script Host (WSH). Этот инструмент разработан для всех версий Windows и позволяет непосредственно в операционной системе выполнять сценарии на полноценных языках сценариев (по умолчанию, VBScript и JScript), которые до этого были доступны только внутри HTML-страниц и работали в контексте безопасности веб-браузера (в силу этого подобные сценарии, например, могли не иметь доступа к файловой системе локального компьютера).

      По сравнению с командными файлами интерпретатора cmd.exe сценарии WSH имеют несколько преимуществ.

      Во-первых, VBScript и JScript – это полноценные алгоритмические языки, имеющие встроенные функции и методы для обработки символьных строк, выполнения математических операций, обработки исключительных ситуаций и т.д.; кроме того, для написания сценариев WSH может использоваться любой другой язык сценариев (например, широко распространенный в Unix-системах Perl), для которого установлен соответствующий модуль поддержки.

      Во-вторых, WSH поддерживает несколько собственных объектов, свойства и методы которых позволяют решать некоторые часто возникающие повседневные задачи администратора операционной системы: работа с сетевыми ресурсами, переменными среды, системным реестром, ярлыками и специальными папками Windows, запуск и управление работой других приложений.

      В-третьих, из сценариев WSH можно обращаться к службам любых приложений-серверов автоматизации (например, программ из пакета Microsoft Office), которые регистрируют в операционной системе свои объекты.

      Наконец, сценарии WSH позволяют работать с объектами информационной модели Windows Management Instrumentation (WMI), обеспечивающей программный интерфейс управления всеми компонентами операционной модели, а также с объектами службы каталогов Active Directory Service Interface (ADSI) (объектные модели WMI и ADSI будут обсуждаться подробнее в следующих лекциях).

      Следует также отметить, что технология WSH поддерживается в Windows уже довольно давно, в Интернете (в том числе на сайте Microsoft) можно найти множество готовых сценариев, выполняющих ту или иную операцию и при определенных навыках и знаниях быстро "подогнать" эти сценарии под свои конкретные задачи.

      Поговорим теперь о слабых местах WSH. Прежде всего, сам по себе WSH – это только среда выполнения сценариев, а не оболочка; WSH не интегрирован с командной строкой, то есть отсутствует режим, в котором можно было вводить команды с клавиатуры и сразу видеть результат их выполнения.

      Большим минусом является то, что в операционной системе по умолчанию нет полноценной подробной справочной информации по объектам WSH и языкам VBScript/JScript (документацию приходится искать в Интернете на сайте Microsoft). Другими словами, если вы, например, не помните синтаксис определенной команды VBScript/JScript или точное название свойства объекта WSH, под рукой у вас нет распечатанной документации, а компьютер не имеет выхода в Интернет, то написать корректный сценарий вам просто не удастся (в данном аспекте командные файлы более универсальны, так как практически у всех команд есть по крайней мере встроенное описание используемых ими ключей, а в операционной системе имеется справочный файл с информацией о всех стандартных командах).

      Наконец, сценарии WSH представляют собой довольно серьезную потенциальную угрозу с точки зрения безопасности, известно большое количество вирусов, использующих WSH для выполнения деструктивных действий.

      Таким образом, можно дать следующую общую оценку: сценарии WSH – это универсальный инструмент, который в любой версии операционной системы Windows позволяет решать задачи автоматизации практически любой степени сложности, но требует при этом большой работы по изучению самих языков сценариев и ряда смежных технологий управления операционной системой (WMI, ADSI и т.п.).

      Командная оболочка Microsoft PowerShell

      Итак, к началу XXI века ситуацию со средствами автоматизации работы в Windows нельзя было назвать совсем хорошей. С одной стороны функциональности и гибкости языка оболочки cmd.exe было явно недостаточно, а с другой стороны сценарии WSH, работающие с объектными моделями ADSI и WMI, оказались слишком сложными для пользователей среднего уровня и начинающих администраторов.

      Перед разработчиками новой оболочки, получившей название Windows PowerShell (предварительное название – Monad ), стояли следующие основные цели и задачи, которые были успешно решены:

      Вообще, самая важная идея, заложенная в PowerShell, состоит в том, что в командной строке вывод результатов команды представляет собой не текст (в смысле последовательности байтов), а объект (данные вместе со свойственными им методами). В силу этого работать в PowerShell становится проще, чем в традиционных оболочках, так как не нужно выполнять никаких манипуляций по выделению нужной информации из символьного потока.

      Кроме того, разработчики старались собрать в PowerShell все лучшие аспекты других оболочек командной строки из разных операционных систем. По их словам, сильное влияние на PowerShell оказали следующие продукты:

      • BASH, KSH (конвейеризация или композиция команд);
      • AS400/VMS (стандартные названия команд, ускоряющие изучение);
      • TCL/WSH (поддержка встраиваемости и нескольких языков);
      • PERL, PYTHON (выразительность и стиль).

      Отметим, что PowerShell одновременно является и оболочкой командной строки (пользователь работает в интерактивном режиме) и средой выполнения сценариев, которые пишутся на специальном языке PowerShell.

      Интерактивный сеанс в PowerShell похож на работу в оболочке Unix-систем: все команды в PowerShell имеют подробную встроенную справку (для большинства команд приводятся примеры их использования), поддерживается функция автоматического завершения названий команд и их параметров при вводе с клавиатуры, для многих команд имеются псевдонимы, аналогичные названиям Unix-утилит (ls, pwd, tee и т.д.).

      Язык PowerShell несложен для изучения, писать на нем сценарии, обращающиеся к внешним объектам, проще, чем на VBScript или JScript. Отдельное внимание было уделено вопросам безопасности при работе со сценариями (например, запустить сценарий можно только с указанием полного пути к нему, а по умолчанию запуск сценариев PowerShell в системе вообще запрещен).

      Человек на черном фоне


      Всем нам, приходилось сталкиваться с рутинными задачами изо дня в день на работе, и не только.

      Например:

      1. Необходимо раз в месяц удалять все файлы из папки обмен.
      2. «Добросовестные» пользователи не выключают компьютеры, и уходят домой, а вам потом по голове дают за то, что компьютер работал, и жрал электроэнергию.
      3. У вас 20 человек в кабинете, принтер один и всем нужно выводить на него печать. Можно написать батник закинуть его в обмен зайти в кабинет и всем пользователям сказать зайдите туда-туда, нажмите то-то, и можете печатать, а если у Вас есть active directory, то можно распространить с помощью неё.

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

      Давайте разберем первый пример:

      Необходимо раз в месяц удалять все файлы из папки обмен.

      1. Открываем WordPad, блокнот не подойдет, он не умеет сохранять в кодировке 866.
      2. Пишем:
      1. Дальше выбираем Файл => Сохранить как => в строке Имя файла пишем допустим, del_obmen.bat, жмем Ок, запускаем и наслаждаемся.

      Второй пример:

      «Добросовестные» пользователи не выключают компьютеры, и уходят домой, а вам потом по голове дают за то, что компьютер работал, и жрал электроэнергию.

      SHUTDOWN /s
      Пояснения я думаю ни к чему.
      3. Дальше выбираем Файл => Сохранить как => в строке Имя файла пишем допустим, shutdown.bat, жмем Ок, запускаем и наслаждаемся.
      4. Дальше открываем панель управления => планировщик заданий, создаем задание в 20 00, думаю понятно для чего.

      Третий пример:

      У вас 20 человек в кабинете, принтер один и всем нужно выводить на него печать. Можно написать батник закинуть его в обмен зайти в кабинет и всем пользователям сказать зайдите туда-туда, нажмите то-то, и можете печатать, а если у Вас есть active directory, то можно распространить с помощью неё.

      Если у вас ip адреса раздаются по DHCP, то лучше ввести не ip адрес, а имя компьютера.

      3. Дальше выбираем Файл => Сохранить как => в строке Имя файла пишем допустим, print.bat, жмем Ок, запускаем и наслаждаемся.

      Создание bat Файла своими руками

      Читайте также: