Работа со сценариями PowerShell может оказаться захватывающим приключением. Ведь он предоставляет вам чистый интерфейс для того, чтобы вы могли создать свои сценарии и автоматизировать с их помощью шаблонные задачи.
Если вы разработчик, то вполне можете создавать полноценные сценарии автоматизации. PowerShell отлично справляется с этой задачей, особенно если вы используете его для того, чтобы создавать, тестировать и развертывать решения в средах CI/CD.
В этой статье мы поближе посмотри на то, как создаются и запускаются сценарии PowerShell. Здесь мы пробежимся по пошаговому руководству, как сделать это с помощью VS Code, Notepad и ISE (Integrated Scripting Environment – интегрированная среда разработки сценариев).
Давайте начнем!
Что такое PowerShell?
PowerShell – это кросс-платформенное инструментальное средство автоматизации и конфигурирования. Он предоставляет полный пакет для администраторов, разработчиков и прочих пользователей, который позволяет запускать командлеты (небольшие и легкие команды) для управления различными задачами.
Под пакетом понимается следующее:
- Оболочка командной строки
- Соответствующий язык программирования
- Фреймворк для выполнения командлетов
В отличие от командной строки, его можно использовать на всех основных платформах, в том числе Windows, Linux и macOS.
Если смотреть с технической точки зрения, в основе PowerShell лежит платформа .NET. За счет своего принципа работы он поддерживает объекты и структурированные данные, например, JSON, CSV и XML. Кроме того, разработчики могут вместе с PowerShell использовать REST API. Увы, но стандартная командная строка всего этого не поддерживает, так как она текстовая.
Все сценарии PowerShell имеют расширение .ps1.
Если вы собираетесь писать сценарии PowerShell, то вам нужно знать три ключевых понятия:
- Командлеты: это элементарный исполняемый сценарий, который предлагает предварительно настроенный функционал. Например, для того, чтобы скопировать какой-то элемент, вы можете воспользоваться командлетом Copy-Item, для того, чтобы получить справку, — Get-Help, для того, чтобы вывести что-либо на экран, — Write-Host.
- Псевдонимы: псевдонимы позволяют легко обращаться к командлетам. Они обеспечивают более быстрый доступ к ним. Однако желательно использовать их с подсказками с точки зрения интерактивности и не стоит их использовать при непосредственном написании сценариев PowerShell.
- Функции: функция – это набор операторов PowerShell. Инициировать работу функции можно, вызвав ее.
PowerShell и написание сценариев
Написание сценариев – это основополагающий метод автоматизации некоторой вашей работы. Неважно кто вы, программист, администратор или фрилансер, сценарии могут автоматизировать какие-то стандартные рабочие процессы.
Если уж на то пошло, то у написания сценариев есть большое количество преимуществ, например,
- Автоматизация экономит ваше драгоценное время
- Переносимая база знаний
- Позволяет поддерживать согласованность между системами
- Повышает уровень ваших навыков и шансы на трудоустройство
Вы можете писать сценарии PowerShell, Bash, Ruby или Python.
В общем-то, PowerShell – это отличный инструмент для написания сценариев. Между тем, Windows не позволяет запускать сценарии в силу настроек безопасности. Их запуск может привести к таким ошибкам, как «Running scripts is disabled on this system.» («Запуск сценариев в этой системе запрещен.»). Для того, чтобы обойти этот момент и все же выполнить сценарий, вам необходимо установить правильную политику исполнения (рассмотрено далее).
Почему для написания сценариев нужно использовать PowerShell?
Одна из основных причин, почему для написания сценариев стоит выбрать именно PowerShell, заключается в том, что он может работать на разных платформах. Он поддерживает Windows, Linux и MacOS, чего нельзя сказать о стандартной командой строке Windows.
PowerShell можно использовать для того, чтобы создавать простые задания с помощью простых построителей задач. Например, вы можете воспользоваться PowerShell для того, чтобы перезагрузить компьютер, периодически очищать кэш или даже выполнить аутентификацию сеансов.
Кроме всего прочего, сценарии PowerShell преимущественно используются для того, чтобы автоматизировать процесс управления системой. И тем не менее, вы, как разработчик, можете использовать его для тестирования, сборки и развертывания сборок в среде CI/CD.
Как создавать сценарии PowerShell?
Для того, чтобы создавать сценарии PowerShell, вам нужен текстовый редактор. В большинстве случаев вы будете довольны и самым простым текстовым редактором, но, если вы решите попробовать современный редактор текста/кода, то можете обнаружить, что весь процесс стал лучше поддаваться управлению.
Именно поэтому мы начнем с того, что продемонстрируем то, как можно создавать сценарии PowerShell с помощью Visual Studio Code (также известного как VS Code). Помимо этого, мы рассмотрим, как можно создавать сценарии PowerShell в Блокноте и прочих интегрированных средах, которые отлично подходят для написания сценариев, например, PowerShell Integrated Scripting Environment (PowerShell ISE).
1. С помощью VS Code
VS Code – это надежный кросс-платформенный редактор кода, и, к тому же, бесплатный. Его разработкой занимается компания Microsoft. Она предоставляет пользователям дополнительные преимущества отличной поддержки PowerShell.
Вы получаете чистый готовый интерфейс и можете выбрать для работы чуть ли не любой язык программирования.
VS Code – это полноценный редактор кода, а значит, он поддерживает расширения. И для того, чтобы писать сценарии PowerShell было еще более удобно, мы воспользуемся расширением PowerShell.
Установка Visual Studio Code
Для начала вам нужно установить VS Code.
Для того, чтобы сделать это, перейдите на страницу скачивания Visual Studio Code. Выберите подходящую версию VS Code в зависимости от вашей операционной системы. Мы используем Windows 11, поэтому мы выбрали версию для Windows.
После того, как загрузка завершится, дважды щелкните по установщику и для того, чтобы установить программу на свой компьютер, следуйте указаниям мастера установки.
Установка расширения PowerShell
Установить расширение PowerShell можно двумя способами. Для начала создайте новый файл с расширением .ps1.
VS Code довольно продуманный и понимает, что вы собираетесь работать с PowerShell, поэтому автоматически рекомендует вам установить расширение PowerShell от Microsoft.
Чтобы установить расширение, нажмите кнопку «Install» («Установить»). Или же, если вы хотите узнать больше, нажмите кнопку «Show Recommendations» («Показать рекомендации»).
Если по той или иной причине Visual Studio Code не выдал вам никаких рекомендаций, вы можете попробовать найти плагин вручную.
Для того, чтобы открыть окно с расширениями, нажмите на символ с четырьмя квадратиками (с одним вылетающим квадратиком) или нажмите Ctrl+Shift+X. Теперь введите в строке поиска «PowerShell» и нажмите на первый результат. После этого переходите к его установке (нажмите кнопку «Install»).
В конце он спросит вас, доверяете ли вы авторам файлов, находящихся в рабочей среде. Для того, чтобы завершить установку, нажмите «Trust Workspace&Install» («Доверять рабочей среде и установить»).
Создание сценария PowerShell с помощью VS Code
Теперь, когда вы по всем правилам установили VS Code и расширение PowerShell, вы можете создать свой первый сценарий PowerShell.
Если вы еще не создали новый файл, то вы можете это сделать следующим образом:
- Откройте VS Code
- Откройте главное меню, нажмите «File» («Файл»), а затем «New Text File» («Новый текстовый файл»).
- Теперь сохраните файл, выбрав «File» -> «Save As» («Файл» -> «Сохранить как»).
- Введите название файла и не забудьте указать расширение .ps1.
- В конце нажмите «Save file» («Сохранить файл»).
Вот и все! Теперь вы можете создать свой сценарий. Я добавил командлет Write-Host со значением «This is a VS Code Script written for Geekflare.» («Это сценарий VS Code, написанный для Geekflare.»).
Чуть позже мы посмотрим, как выполнить этот сценарий, так что читайте дальше!
2. С помощью Блокнота
Нет ничего проще, чем создавать сценарии PowerShell в Блокноте.
Все, что вам для этого нужно, выполнить следующее:
- Откройте Пуск и найдите там Блокнот (Notepad).
- Теперь щелкните по нему правой кнопкой мыши и выберите «Открыть от имени администратора» («Open as an administrator»).
- Напишите свой сценарий.
- В качестве примера напишем «This is a PowerShell Script written in Notepad.» («Это сценарий PowerShell, написанный в Блокноте.»).
- Перейдите в главное меню, выберите «File» и нажмите «Save As».
- Введите название вашего сценария PowerShell и нажмите «Save».
Вот и все! Вы успешно создали сценарий PowerShell в Блокноте.
3. С помощью PowerShell ISE
Кроме того, PowerShell в Windows предлагает нам свою собственную интегрированную среду разработки сценариев. С ее помощью вы можете писать свои сценарии, не прибегая к помощи сторонних редакторов кода и текста.
Для того, чтобы использовать его с толком, вам нужно выполнить следующее:
- Откройте Пуск.
- Найдите Windows PowerShell ISE, введя в строку поиска «PowerShell».
- Выберите первый результат, щелкните по нему правой кнопкой мыши и выберите «Открыть от имени администратора». Откроется окно Windows PowerShell ISE.
- Теперь нажмите «File» и выберите «New» («Новый»). Откроется окошко с новым файлом (как показано ниже).
- Напишите сценарий. В качестве примера напишем «This is a PowerShell Script written with the help of PowerShell ISE.» («Это сценарий PowerShell, написанный с помощью PowerShell ISE.»).
- После чего, нажмите «File» и выберите «Save As».
- Введите название файла и нажмите «Save».
Помимо всего прочего, PowerShell ISE может помочь вам запустить сценарий. Для этого найдите сверху кнопку «RUN» («ЗАПУСТИТЬ») и нажмите ее. Если она выдает ошибку безопасности, то ниже вы можете прочитать, как ее исправить.
Как исправить ошибку безопасности сценария PowerShell и запустить его?
Как мы уже говорили ранее, у Windows есть строгая политика безопасности в отношении запуска сценариев. Для того, чтобы решить этот вопрос, вам нужно разрешить выполнение сценариев на вашем компьютере под управлением Windows.
Для этого выполните следующее:
- Откройте Пуск.
- Найдите PowerShell.
- Теперь щелкните на приложение PowerShell правой кнопкой мыши.
- Выберите «Открыть от имени администратора».
- Когда PowerShell откроется, введите команду Set-ExecutionPolicy RemoteSigned.
- Нажмите Enter. После этого приложение запросит подтверждение. Чтобы разрешить запуск сценариев, нажмите А.
Вот и все! Теперь вы наконец-то можете запускать свои сценарии!
Ниже мы показали, как это выглядит в случае с PowerShell ISE.
А вот так это выглядит в случае с Visual Studio Code.
А в случае с Блокнотом вам придется запустить сценарий непосредственно из командной строки PowerShell.
Рекомендации по написанию и запуску сценариев PowerShell
Когда вы работаете со сценариями PowerShell, необходимо следовать рекомендациям, а именно:
- Используйте полную форму командлета, а не псевдоним. Псевдоним удобно использовать, когда вы работаете с консолью. Да, он может улучшить интерактивность, но может испортить сценарий.
- Желательно не использовать командлет Write-Host, поскольку его функциональные возможности довольно ограничены. Да, он может вывести какой-то текст на экран, но вы не можете настроить то, каким цветом будет печататься этот текст. Вместо этого лучше используйте командлет Write-Output.
- Всегда используйте существительное внутри командлета только в единственном числе, не во множественном.
- Используйте для командлета только утвержденные глаголы.
- Если возможно, указывайте расширение приложения. Это поможет устранить путаницу и повысит уровень читаемости.
- Используйте специальные редакторы кода PowerShell, например, VS Code или PowerShell ISE. У них есть отличные функции, которые помогут вам в написании и запуске сценариев PowerShell. Конечно, вы можете использовать Блокнот (Notepad или Notepad++), но в таком случае вы сузите границы своих возможностей.
- Старайтесь комментировать код, но не переборщите, поскольку это может плохо повлиять на читаемость кода и удобство его сопровождения.
- Убедитесь в том, что вы установили правильный параметр безопасности для запуска сценариев PowerShell.
Заключение
Вот и все! Теперь вы знаете, как создавать и запускать сценарии PowerShell с помощью Блокнота, VS Code и PowerShell ISE. Кроме того, вы можете использовать любой из упомянутых выше инструментов для того, чтобы писать и выполнять сценарии PowerShell.
И тем не менее, как уже было сказано в рекомендациях, писать сценарии PowerShell в Блокноте – не самая лучшая идея. В таком случае вы упускаете возможность воспользоваться многими функциями, которые есть у специальных редакторов кода VS Code и PowerShell ISE.
Навигация по странице
- Как сделать и запустить скрипт PowerShell?
- Как запустить скрипт в PowerShell?
- Как разрешить выполнение неподписанного скрипта PowerShell?
- Как запустить скрипт PowerShell в фоновом режиме?
- Как запустить скрипт через PowerShell с параметрами?
- Как запустить скрипт PowerShell с помощью ярлыка?
- Полезные сценарии для Windows
- Что такое командные скрипты Windows?
- Что такое Bat-скрипты Windows?
- Что такое исполняемые скрипты Windows?
- Какое расширение имеют файлы скриптов PowerShell?
- Какие скрипты PowerShell используются администраторами?
Выполнение скриптов в PowerShell
PowerShell представляет собой новую командную оболочку для операционной системы Windows, созданную Microsoft с целью полного замещения и улучшения cmd. Эта оболочка уже включена в состав операционных систем Windows 7 и выше. Если у вас старая версия операционной системы или вы хотите загрузить более новую версию PowerShell. Windows — операционная система, пользующаяся огромной популярностью среди миллионов пользователей по всему миру. В ее арсенале множество функций и возможностей, однако некоторые из них остаются недостаточно известными обычным пользователям. В данной статье мы расскажем о нескольких полезных сценариях, способных сделать вашу работу с Windows более эффективной и удобной.
Политика исполнения PowerShell-скриптов представляет собой механизм безопасности, управляющий условиями загрузки конфигурационных файлов и запуска сценариев в данной среде. Её основное предназначение — предотвращение выполнения потенциально вредоносных сценариев.
Как сделать и запустить скрипт PowerShell
Создать скрипт PowerShell довольно просто. Вот шаги, которые вы можете выполнить, чтобы создать свой первый скрипт:
1. Откройте редактор PowerShell ISE:
PowerShell ISE (Integrated Scripting Environment) предоставляет удобную среду для написания и отладки скриптов. Вы можете его найти в меню «Пуск» (Start) под разделом «Стандартные» (Standard) или выполнить команду `PowerShell_ise` в командной строке.
2. Напишите свой скрипт:
В окне редактора PowerShell ISE напишите свой скрипт. Ниже приведен пример простого скрипта, который выводит «Hello, World!» в консоль:
Write-Host «Hello, World!»
3. Сохраните скрипт:
- Нажмите `Ctrl + S` или выберите «Файл» (File) -> «Сохранить» (Save).
- Укажите имя файла и добавьте расширение `.ps1` (например, `MyScript.ps1`).
4. Запустите скрипт:
- Выберите весь текст скрипта.
- Нажмите `F5` или выберите «Запустить сценарий» (Run Script) в PowerShell ISE.
Примеры более сложных скриптов:
#Скрипт, создающий новую папку:
$folderPath = «C:\Path\To\NewFolder»
New-Item -ItemType Directory -Path $folderPath
#Скрипт, удаляющий все файлы старше 7 дней в папке:
$folderPath = «C:\Path\To\Folder»
$limitDate = (Get-Date).AddDays(-7)
Get-ChildItem $folderPath | Where-Object { $_.LastWriteTime -lt $limitDate } | Remove-Item
#Скрипт, проверяющий статус службы:
$serviceName = «wuauserv»
$serviceStatus = Get-Service -Name $serviceName | Select-Object Status
Write-Host «The status of service $serviceName is: $($serviceStatus.Status)»
Ваши скрипты могут включать более сложные команды, использовать условия, циклы и вызывать функции. Как только вы освоите основы, вы сможете создавать более мощные и гибкие скрипты PowerShell.
Скрипты для Windows — не просто строки кода, а волшебные ключи, открывающие дверь в мир автоматизации. В руках умелого пользователя они становятся инструментом, способным не только сэкономить время, но и превратить рутинные задачи в захватывающее путешествие по потокам байтов и командам.
Как запустить скрипт в PowerShell?
Существует несколько способов запуска скрипта, вот основные из них:
- Запустить оболочку PowerShell и выполнить в ней скрипт, указав путь к файлу и его имя (например, C:\Scripts\test.ps1) или перейдя в каталог скрипта командой cd C:\Scripts и выполнить его с помощью команды .\test.ps1.
- Оболочку можно найти и запустить разными способами. Один из них — через меню «Пуск». Для Windows 7 пройдите по следующему пути: «Все программы» — «Стандартные» — «Windows PowerShell» и запустите оболочку «Windows PowerShell». Для Windows 10 найдите группу по букве «W» и в ней выберите «Windows PowerShell».
- Запустить «Интегрированную среду сценариев Windows PowerShell ISE», которая представляет собой среду разработки, позволяющую редактировать и отлаживать скрипты PowerShell. Откройте программу, выберите «Открыть» или в меню Файл выберите «Открыть» и укажите нужный скрипт, затем нажмите F5 или кнопку «Выполнить скрипт». Поиск Windows PowerShell ISE можно осуществить так же, как и оболочки PowerShell, через меню «Пуск».
- Запустить стандартный командный интерфейс и ввести следующую команду:
PowerShell -file <имя_скрипта> (например: PowerShell -file myscript.ps1)
Если вы ранее не запускали скрипты PowerShell, возможно, вы получите сообщение о том, что файл <имя_скрипта> не может быть загружен, так как выполнение скриптов запрещено для данной системы. В этом случае введите «get-help about_signing» для получения дополнительной информации. Это связано с безопасностью и предотвращением случайного выполнения вредоносного кода, поэтому все скрипты должны быть подписаны цифровой подписью.
Как разрешить выполнение неподписанного скрипта PowerShell?
- В оболочке PowerShell перед запуском скрипта выполните следующую команду для разрешения выполнения неподписанных скриптов в текущем сеансе оболочки:
Set-ExecutionPolicy RemoteSigned -Scope Process
- При запуске из стандартного командного интерфейса используйте параметр -executionpolicy, например:
PowerShell -executionpolicy RemoteSigned -file <имя_скрипта>
Оба способа устанавливают политику только для текущего сеанса, при этом политика безопасности выполнения скриптов PowerShell, установленная в реестре, остается неизменной. Если вы хотите изменить политику безопасности выполнения скриптов «навсегда», используйте следующий способ:
- Разрешить выполнение навсегда: запустите оболочку PowerShell от имени «Администратора» и выполните команду:
Set-ExecutionPolicy RemoteSigned
Однако рекомендуется избегать этого способа, чтобы не подвергать ваш компьютер возможным угрозам, поскольку это разрешает выполнение всех скриптов всегда.
Примечание: Если скрипт был загружен из интернета, чтобы избежать запроса на подтверждение выполнения, используйте параметр Bypass вместо RemoteSigned — это полное отключение любых запросов и предупреждений.
Как запустить скрипт PowerShell в фоновом режиме?
Для этого используйте параметр -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Чтобы запустить неподписанный скрипт в фоновом режиме, выполните команду:
PowerShell -executionpolicy RemoteSigned -WindowStyle Hidden -file <имя_скрипта>
Также при желании вы можете добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Однако будьте внимательны, используя этот способ.
Как запустить скрипт через PowerShell с параметрами?
Запуск осуществляется аналогично запуску обычной программы или bat-файла с параметрами. Например, чтобы запустить скрипт с параметрами из командной строки, используйте следующую команду:
PowerShell -executionpolicy RemoteSigned -file <имя_скрипта> param1 param2 «еще один текстовый параметр«
В самом скрипте параметры могут быть получены так:
param ($var1, $var2, $var3)
echo $var1, $var2, $var3
В интегрированной среде PowerShell ISE скрипт с параметрами можно запустить аналогично, используя область команд.
Как запустить скрипт PowerShell с помощью ярлыка?
Это можно сделать двумя способами:
- Создать файл bat/cmd, в котором прописать команду для запуска скрипта (с параметрами, как описано выше).
- Создать ярлык на PowerShell, который находится в папке c:\Windows\System32\WindowsPowerShell\v<версия>\. В свойствах ярлыка в поле «Объект» добавьте необходимые параметры.
Таким образом, например, чтобы запустить скрипт PowerShell при входе пользователя, просто создайте ярлык, как описано во втором пункте, и поместите его в автозагрузку. Также создание ярлыка с использованием одного из вышеописанных методов позволяет легко запускать скрипт от имени администратора или от имени любого другого пользователя, как обычную программу.
Скриптовый язык PowerShell — мощный инструмент для решения различных задач. Однако следует использовать его с осторожностью, поскольку он может быть использован не только для полезных, но и для вредоносных целей. Будьте внимательны при работе с ним.
Полезные сценарии для Windows
1. Скрипт выключения Windows (или перезагрузки):
Простейшая операция выключения компьютера. Откройте блокнот и введите:
shutdown -s -t 0
Сохраните файл с расширением *.cmd* (например, *shutdown.cmd*). При запуске этого файла компьютер выключится. Замените «-s» на «-r» для перезагрузки. Параметр «-t» устанавливает таймер; в данном случае, он равен 0 секунд, но можно установить, например, на 60 для выключения через 60 секунд.
2. Удаление ненужных приложений:
С помощью следующего скрипта можно удалить предустановленные приложения:
get-appxpackage -name *APPNAME* | remove-appxpackage
Замените *APPNAME* на название ненужного приложения. Хотя удаление можно выполнить стандартным способом или через программы, этот скрипт делает процесс более удобным.
3. Управление процессами:
Воспользуйтесь PowerShell для борьбы с медленными процессами. Выведите все службы:
Get-Service
Или получите информацию о конкретной службе с кодовым именем *NAME*:
Get-Service *NAME*
Создайте файл, который закрывает процессы с повышенным потреблением ресурсов:
Stop-Service -Name *ANTIVIRUS*
Stop-Service -Name *BROWSER*
Замените *ANTIVIRUS* и *BROWSER* на соответствующие названия.
4. Переименование группы файлов:
Решите проблему однотипных файлов с помощью скрипта группового переименования:
$path = «$comp\desktop\journey\russia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter | rename-item -newname {$_.name -replace ‘HGNMD’,’RUSSIA’}
Укажите путь, расширение и выполните замены в строке.
5. Поиск файлов:
Используйте PowerShell для поиска файлов в директории:
Get-Childitem C:\Windows\*.log
Для более сложного поиска в подпапках:
Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force
6. Справка:
Пользуйтесь командой *Get-Help* для получения информации:
Get-Help Services
Для более подробной справки по конкретной команде:
Get-Help —Name *CMDLET*
7. Получение информации о системе:
Используйте PowerShell для получения данных о системе, например, уровне заряда аккумулятора:
Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)
Информация об архитектуре процессора удаленного компьютера:
[PSObject].Assembly.GetType(‘System.Management.Automation.PsUtils’).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40).Invoke($null, @())
Проверка прав администратора текущего пользователя:
[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())
Эти простые и полезные сценарии помогут вам эффективнее управлять вашей системой Windows.
Командные скрипты Windows
Это общий термин, который включает в себя различные типы скриптов и командных файлов, используемых в операционной системе Windows для автоматизации задач. Включают в себя как скрипты на языке командной строки (например, скрипты CMD), так и на более современных языках, таких как PowerShell. Например, Bat-скрипты (*.bat), PowerShell-скрипты (*.ps1), а также другие сценарии, созданные для автоматизации определенных задач.
Bat-скрипты Windows
Bat-скрипты, или файлы пакетных команд (Batch-файлы), представляют собой текстовые файлы, содержащие команды и инструкции для выполнения в командной строке Windows. Основаны на языке пакетных команд (Batch scripting language). Расширение файла: *.bat* (например, *myscript.bat*).
Пример простого bat-скрипта:
«`batch
@echo off
echo Hello, World!
pause
Выполняемые скрипты Windows
Это скрипты, которые могут быть выполнены в среде операционной системы Windows и обычно предназначены для автоматизации различных задач. Включают в себя bat-скрипты (командные файлы), PowerShell-скрипты, а также другие типы скриптов, которые можно выполнять в Windows. Общее отличие между bat-скриптами и PowerShell-скриптами заключается в языке программирования, используемом для написания команд и инструкций. Bat-скрипты используют язык пакетных команд, который является устаревшим и имеет ограниченные возможности по сравнению с PowerShell, который представляет более современный и мощный язык с разнообразными функциональными возможностями для автоматизации задач в Windows.
Какое расширение имеют файлы скриптов PowerShell
PowerShell-скрипты имеют расширение *.ps1*, и для их выполнения часто требуется предварительная настройка политики выполнения скриптов (Execution Policy), чтобы разрешить запуск скрипта через PowerShell в системе.
Скрипты PowerShell для администратора
PowerShell — мощный инструмент для сисадминов Windows, предоставляя широкий набор команд и сценариев для автоматизации и управления системой. Ниже приведены несколько примеров PowerShell-скриптов, которые могут быть полезны администраторам:
1. Создание резервной копии файлов:
$sourcePath = «C:\Path\To\Source»
$destinationPath = «D:\Backup»
$timestamp = Get-Date -Format «yyyyMMddHHmmss»
$backupFolder = «$destinationPath\Backup_$timestamp»
Copy-Item -Path $sourcePath -Destination $backupFolder -Recurse
2. Мониторинг дискового пространства:
$threshold = 80
$disks = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3 }
foreach ($disk in $disks) {
$freeSpacePercentage = [math]::Round(($disk.FreeSpace / $disk.Size) * 100, 2)
$diskLetter = $disk.DeviceID
if ($freeSpacePercentage -lt $threshold) {
Write-Host «Warning: Disk $diskLetter is running low on free space ($freeSpacePercentage%)»
# Можно добавить уведомление администратора
}
}
3. Создание нового пользователя:
$username = «NewUser»
$password = ConvertTo-SecureString «SecurePassword123» -AsPlainText -Force
$fullname = «New User»
$description = «Description of the new user»
$ou = «OU=Users,DC=Domain,DC=com»
New-ADUser -SamAccountName $username -UserPrincipalName «$username@domain.com» -Name $fullname -GivenName $fullname -Surname $username -Description $description -AccountPassword $password -Enabled $true -PassThru -Path $ou
4. Мониторинг событий в журнале событий:
$logName = «System»
$events = Get-WinEvent -LogName $logName -MaxEvents 10
foreach ($event in $events) {
Write-Host «Event ID $($event.Id): $($event.Message)»
}
5. Обновление всех установленных модулей PowerShell:
Get-Module -ListAvailable | ForEach-Object {
Update-Module -Name $_.Name -Force
}
6. Удаление временных файлов в системной директории:
$tempPath = [System.IO.Path]::GetTempPath()
Remove-Item «$tempPath\*» -Force
7. Создание отчета о состоянии служб:
$services = Get-Service | Select-Object DisplayName, Status, StartType
$services | Export-Csv -Path «C:\Path\To\ServiceReport.csv» -NoTypeInformation
8. Настройка правил брандмауэра:
New-NetFirewallRule -DisplayName «Allow-SSH» -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow
9. Удаление неиспользуемых профилей пользователей:
$inactiveDays = 90
$userProfiles = Get-WmiObject Win32_UserProfile | Where-Object { $_.Special -eq $false }
foreach ($profile in $userProfiles) {
$lastUseDate = $profile.LastUseTime
$difference = (Get-Date) — $lastUseDate
if ($difference.Days -ge $inactiveDays) {
Remove-WmiObject -InputObject $profile -Confirm:$false
Write-Host «User profile $($profile.LocalPath) deleted.»
}
}
Эти примеры предоставляют общее представление о том, как PowerShell может использоваться администраторами для автоматизации различных задач в Windows-среде. Помните, что некоторые команды могут потребовать выполнения от имени администратора.
Для вызова скриптов PowerShell, вы можете использовать команду `Invoke-Expression` или просто указать путь к файлу скрипта. Предположим, у вас есть следующие скрипты: `ClearDisk.ps1`, `InstallPrograms.ps1`, `BackupScript.ps1`, и `UpdateSystem.ps1`.
1. Скрипт очистки диска (ClearDisk.ps1):
# ClearDisk.ps1
# Ваш код для очистки диска
# Пример: удаление временных файлов
Remove-Item -Path «$env:TEMP\*» -Recurse -Force
Как вызвать:
# Используйте Invoke-Expression
Invoke-Expression -Command «.\ClearDisk.ps1»
# Или просто указывайте путь к файлу скрипта
.\ClearDisk.ps1
2. Скрипт автоматической установки программ (InstallPrograms.ps1):
# InstallPrograms.ps1
# Ваш код для автоматической установки программ
# Пример: установка программы Chocolatey и установка пакетов
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))
choco install packageName -y
Как вызвать:
# Используйте Invoke-Expression
Invoke-Expression -Command «.\InstallPrograms.ps1»
# Или просто указывайте путь к файлу скрипта
.\InstallPrograms.ps1
3. Скрипт резервного копирования (BackupScript.ps1):
# BackupScript.ps1
# Ваш код для создания резервной копии
# Пример: копирование файлов в другую директорию
$sourcePath = «C:\Path\To\Source»
$destinationPath = «D:\Backup»
Copy-Item -Path $sourcePath -Destination $destinationPath -Recurse
Как вызвать:
# Используйте Invoke-Expression
Invoke-Expression -Command «.\BackupScript.ps1»
# Или просто указывайте путь к файлу скрипта
.\BackupScript.ps1
4. Скрипт автоматического обновления системы (UpdateSystem.ps1):
# UpdateSystem.ps1
# Ваш код для автоматического обновления системы
# Пример: обновление всех установленных модулей PowerShell
Get-Module -ListAvailable | ForEach-Object {
Update-Module -Name $_.Name -Force
}
Как вызвать:
# Используйте Invoke-Expression
Invoke-Expression -Command «.\UpdateSystem.ps1»
# Или просто указывайте путь к файлу скрипта
.\UpdateSystem.ps1
Убедитесь, что вы находитесь в той же директории, что и ваши скрипты, или укажите полный путь к файлу скрипта.
В этой статье мы коснулись всех аспектов создания, запуска и использования скриптов в Windows. Надеемся, что эти советы и примеры помогут вам освоить этот увлекательный мир автоматизации и сделают вашу работу более эффективной и приятной.
В мире информационных технологий возможность автоматизации рутинных задач является мощным инструментом повышения эффективности. Один из способов достижения этой цели – использование BAT файлов, которые предоставляют пользователям удобный способ выполнения команд в терминале без вмешательства человека. Независимо от того, работаете ли вы с большими проектами или просто хотите упростить повседневные задачи, внедрение автоматизации с помощью BAT файлов может существенно сэкономить ваше время.
BAT файлы, широко используемые для автоматического выполнения команд в среде операционной системы Windows, позволяют автоматизировать процессы, упрощая взаимодействие с командной строкой. Они являются текстовыми документами, содержащими последовательность команд, которые могут быть запущены одно за другим. Понимание того, как создать и использовать такие файлы, открывает огромные возможности для их применения в различных аспектах работы с компьютером.
Создание BAT файлов включает в себя написание инструкций с использованием встроенных команд для управления системой. Это может включать в себя инициализацию системных процессов, создание резервных копий данных, управление файлами и многими другими операциями. Простой, но мощный синтаксис этих файлов позволяет комплексно подходить к выполнению задач и упрощает их повторное использование. В результате, знание о том, как их создать и использовать, становится ценным навыком в арсенале любого IT-специалиста.
Понимание CMD файлов
В операционной системе Windows используется специальный вид текстового документа, который позволяет автоматизировать выполнение задач. Это средство помогает определить последовательность команд для выполнения желаемых действий. Управление процессами через такой текстовый документ делает рабочие процессы более упорядоченными и эффективными, минимизируя количество ручных действий.
Файлы с расширением .bat представляют собой набор инструкций, которые запускаются средой командной строки. Этот документ позволяет вам составлять и исполнять различные скрипты, включая запуск приложений, управление файлами и изменением их атрибутов. Каждый текстовый документ этого типа содержит множество команд, которые выполняются одна за другой после вызова.
Среди основных преимуществ таких документов – простота использования и отсутствие необходимости в дополнительных программных инструментах. Они эффективны для выполнения рутинных задач, таких как автоматическое копирование файлов или настройка системного окружения, что крайне удобно для системных администраторов и продвинутых пользователей.
Важно также понимать, что такие текстовые файлы могут быть мощным инструментом, но при этом их использование требует осторожности. Неправильная настройка или ошибка в команде могут привести к непредвиденным последствиям, таким как потеря данных или сбои в работе системы. Используя командные инструкции, рекомендуется всегда заранее тестировать их в безопасной среде.
Основы языкового синтаксиса
Языковой синтаксис командных файлов значительно упрощает автоматизацию задач. Понимание базовых элементов синтаксиса позволяет эффективно использовать командную строку для управления операционной системой и выполнения различных операций. Знание основ помогает в создании более сложных скриптов и решении разноcложных задач.
Наиболее популярный формат таких скриптов – это .bat файлы. Они состоят из набора команд, которые выполняются последовательно. Каждая команда выполняет определенное действие, от простого копирования файлов до тонкой настройки системных параметров. Важно понимать, что строка команд в таких файлах – это единица выполнения. Главная цель заключается в том, чтобы обеспечить точное выполнение всех команд, включенных в последовательность.
Основные конструкции включают объявление переменных и контроль над потоком выполнения. Переменные позволяют хранить значения, которые могут быть изменены дальше в скрипте. К примеру, оператор SET используется для создания переменной, которая может быть использована в скрипте.
Управление потоком выполнения достигается за счет использования условных операторов и циклов. Если, например, необходимо выполнить команду только при соблюдении определенного условия, используется конструкция IF. Циклы FOR позволяют обрабатывать набор данных или выполнять определенные действия для каждого элемента коллекции. Благодаря такой структуре, автоматизация рутинных задач становится проще.
Владение основами языка даёт возможность не только создавать эффективные bat-скрипты, но и устранять ошибки, а также оптимизировать выполнение команд. Это искусство является важным навыком для IT-специалиста, желающего автоматизировать свои повседневные задачи.
Редакторы для создания CMD файлов
Самым простым вариантом является использование стандартного блокнота, который поставляется с Windows. Несмотря на свои ограниченные возможности, он обладает минималистичным интерфейсом, подходящим для внесения небольших изменений. Его главное преимущество в доступности на любой системе Windows и простоте использования.
Для более профессионального подхода стоит обратить внимание на расширенные текстовые редакторы. К примеру, Notepad++ предоставляет богатый функционал: подсветка синтаксиса облегчает восприятие командных строк, а вкладочная структура ускоряет переключение между несколькими открытыми документами. Это значительно упрощает управление сложными скриптами.
Еще один заметный инструмент – Visual Studio Code. Этот редактор, будучи кроссплатформенной средой, обеспечивает не только комфортную работу с командами, но и множество расширений для повышения функциональности. Например, помощь в автодополнении команд позволяет быстрее и точнее писать скрипты.
Выбор редактора зависит от вашего опыта и сложности выполняемых задач. Начинающим пользователям лучше сосредоточиться на простейших инструментах, тогда как опытным специалистам подойдут редакторы с продвинутыми возможностями, которые повышают продуктивность и уменьшают количество ошибок в написании команд. Независимо от выбранного инструмента, ключевой задачей остается эффективное создание корректных и функциональных командных файлов.
Практическое руководство по написанию кода
Изучение основ написания скриптов помогает автоматизировать разнообразные задачи в операционной системе. Если вы хотите научиться пользоваться скриптами формата .bat
, начните с простых командных строк, которые выполняют базовые действия. Это позволит лучше понять, как взаимосвязаны команды и как их применять в различных сценариях.
Перед началом программирования полезно знать, какие команды и их параметры существуют в командной строке. Это позволяет пользователю выстраивать последовательности команд, выполняемые в нужном порядке. Постепенное освоение более сложных скриптов открывает возможности для оптимизации рутинных процессов.
В таблице ниже представлены базовые команды, которые часто используются при написании .bat
файлов и их краткое описание:
Команда | Описание |
---|---|
echo |
|
start |
Запускает новое окно или программу. |
pause |
Останавливает выполнение скрипта до тех пор, пока пользователь не нажмёт клавишу. |
rem |
Добавляет комментарий в код, помогая его структурированию и объяснению. |
for |
Организует цикл, повторяя выполнении набора команд несколько раз. |
Знание и понимание этих элементов позволит лучше управлять и адаптировать скрипт под ваши нужды. Пробуйте экспериментировать, создавая и изменяя скрипты, чтобы развивать свои навыки в программировании и находить оптимальные способы выполнения задач.
Отладка и тестирование CMD файлов
Когда вы завершили процесс программирования вашего bat-скрипта, следующим важным шагом становится его проверка на наличие ошибок и оптимизация рабочих процессов. Эта часть разработки требует особого внимания, так как небольшие ошибки могут существенно повлиять на выполнение команды в системе. Наша цель – обеспечить стабильность и надежность вашей автоматизации, устранив возможные неполадки.
Использование командного интерфейса Windows открывает множество возможностей для детальной отладки. Начните с запуска вашего скрипта в пошаговом режиме, чтобы видеть порядок выполнения каждой команды. Для этого можно использовать команду pause
, что позволит остановить выполнение и проверить текущий статус перед продолжением.
Не забывайте об использовании эмуляторов терминалов, таких как Windows Terminal или аналогичные программы. Эти инструменты предоставляют расширенные возможности для взаимодействия с командной строкой, включая разный уровень подсветки синтаксиса и дополнительные средства мониторинга процессов.
В случае, если ваш скрипт предназначен для запуска на нескольких версиях ОС Windows, убедитесь, что он учтёт возможные различия в командных интерпретаторах и внутреннем функционале. Это позволит избежать несовместимости и обеспечить универсальную производительность вашего кода.
Регулярно выполняйте тестирование в условиях, максимально приближенных к рабочим. Это незаменимый шаг, особенно если ваш скрипт будет использоваться в производственном окружении. Помните, что от качества вашей тестовой базы зависит безопасность и надёжность выполнения вашего скрипта.
Примеры и шаблоны люстрирующие создание
Для более глубокого понимания процесса работы с командными файлами и их кода, полезно изучить примеры и готовые шаблоны. Они помогают увидеть реальное применение языкового синтаксиса и открыть для себя новые возможности. Рассмотрим наборы полезных скриптов, демонстрирующих ключевые аспекты и функции.
- Простейший пример:
Запуск калькулятора и блокнота:
- Откройте текстовый редактор и вставьте строки:
@echo off start calc.exe start notepad.exe
- Сохраните файл с расширением
.bat
.
- Откройте текстовый редактор и вставьте строки:
- Создание резервной копии:
Скрипт для автоматического архивирования папки:
- Откройте редактор и добавьте:
@echo off xcopy C:\исходная_папка D:\резервная_копия /E /I /Y
- Сохраните как
backup.bat
. - Запустите для создания резервной копии.
- Откройте редактор и добавьте:
- Проверка доступности сайтов:
Командный файл для мониторинга веб-сайтов:
- Вставьте следующий код в текстовый файл:
@echo off ping -n 1 www.example.com >nul if errorlevel 1 ( echo Website is down ) else ( echo Website is up )
- Сохраните под именем
check_website.bat
.
- Вставьте следующий код в текстовый файл:
Эти примеры показывают разнообразие задач, которые могут быть автоматизированы. Работая с командными файлами, можно существенно упростить выполнение рутинных операций, повысив эффективность и снизив количество ошибок.
Комментарии
#статьи
-
0
Автоматизируем рутину в Windows с помощью скриптов.
Иллюстрация: Оля Ежак для Skillbox Media
Филолог и технарь, пишет об IT так, что поймут даже новички. Коммерческий редактор, автор технических статей для vc.ru и «Хабра».
На Windows часто возникают рутинные задачи, которые хочется автоматизировать. Например, почистить временные файлы, забэкапить важные документы или запустить одним кликом несколько приложений. Для этого есть простой инструмент — BAT-файлы (в простонародье «батники»). В этой статье научимся разрабатывать простые скрипты и запускать их по расписанию.
Эксперт
CTO Flocktory, программный директор профессии «DevOps-инженер» в Skillbox, директор программного комитета DevOpsConf.
Содержание
- Как создать BAT-файл
- Команды и синтаксис
- Как объявить переменную
- Как комментировать строки
- Примеры BAT-файлов
- Как запустить BAT-файл через командную строку
BAT-файлы — это скрипты с набором команд, которые понимает командная строка Windows. Их можно использовать для автоматизации задач, которые часто повторяются или занимают у пользователя много времени. Такие скрипты хранятся в файлах с расширением .bat.
Для создания BAT-файла понадобится любой текстовый редактор, например стандартный «Блокнот». Давайте откроем его и напишем скрипт, который выведет в окне командной строки сообщение Hello, World!:
@echo off echo Hello, World! pause
Теперь нужно сохранить документ в формате .bat. Для этого выберем пункт Сохранить как в разделе меню Файл.
В появившемся окне можно ввести любое название файла, а конце надо обязательно добавить расширение .bat. Затем нажимаем Сохранить:
Если запустить получившийся файл, откроется командная строка с нашим сообщением:
Для разработки батников существует множество команд. Рассмотрим те, что встречаются чаще всего.
Команда | Аргумент команды | Действие |
---|---|---|
title | Желаемый заголовок | Устанавливает заголовок окна командной строки на желаемый |
cd | Путь к каталогу | Переводит пользователя в каталог, указанный в пути к файлу |
start | Команда или путь к файлу | Запускает указанный файл программы или выполнение команды в новом окне командной строки |
mkdir или md | Имя папки | Создаёт папку с указанным именем |
copy | Имена файлов и путь к папке для копирования | Копирует файлы в указанный каталог |
xcopy | Имена файлов и путь к папке для копирования | Копирует каталоги и файлы, сохраняя их структуру |
move | Путь к файлу и к конечному каталогу | Перемещает файлы из одной папки в другую |
del | Путь к папке | Удаляет файлы внутри каталога. Не трогает папки |
rd | Путь к папке | Удаляет папку |
start | Путь к файлу программы | Запускает файл программы |
color | Обозначение цвета | Меняет цвет фона и текста командной строки |
echo | Текст | Выводит текст на экран командной строки |
chcp | Обозначение кодировки | Указывает кодировку текста. Пригодится для корректного отображения кириллицы |
pause | — | По окончании выполнения команд оставляет окно командной строки запущенным |
exit | — | Завершает работу командной строки |
Переменная — виртуальная ячейка с присвоенным именем, в которой хранятся данные. Это может быть текст, числа или выражения. К переменной можно обращаться по имени, чтобы использовать её содержимое или перезаписывать его.
В BAT-файлах переменная объявляется с помощью команды set. После команды надо указать уникальное имя переменной и присвоить ей значение:
@echo off set example=Hi,user! echo %example% pause
Разберём строки скрипта:
- @echo off — эта строка отключает отображение команд. Будут показаны только строки, которые начинаются с echo.
- set example=Hi, user! — создаёт переменную с именем primer и записывает в неё строку Hi, user!.
- echo %example% — выводит содержимое переменной на экран.
- pause — эта команда не даёт окну закрыться сразу после выполнения скрипта, чтобы мы могли оценить результат.
Если запустить этот BAT-файл, то в командной строке появится содержимое переменной example:
Для записи в переменную значения выражения надо использовать флаг /a перед именем:
set /a example=5*10
В BAT-файлах бывает очень много строк кода. Настолько много, что в них можно заблудиться, а со временем забыть логику всего скрипта. В таких случаях лучше использовать комментарии, объясняющие код. Они не отображаются при запуске и не влияют на выполнение команд.
Для создания однострочных комментариев используют команду rem или двойное двоеточие (::):
rem текст_комментария :: текст_комментария
Например, следующий скрипт не выведет на экран строку Следующие команды выводят текст на экран:
@echo off rem Следующие команды выводят текст на экран set primer=Hi, user! echo %primer% pause
Для больших комментариев на несколько строк можно использовать команду goto:
goto comment === текст_комментария === :comment
Обратите внимание, что после goto следует название метки — comment, она же и закрывает комментарий в конце. На самом деле можно использовать любое название метки, главное — чтобы оно было уникальным.
Разберём примеры готовых BAT-файлов для разных задач. Их можно скопировать и использовать уже сейчас.
Допустим, необходимо время от времени создавать копию всех текстовых файлов, лежащих в каталоге Документы. Чтобы не делать это каждый раз вручную, можно создать скрипт и запускать его с рабочего стола.
Батники лучше начинать с команды @echo off, чтобы избавиться от служебных строк, которые информируют о ходе выполнении скрипта. Убрав их, мы ничего не потеряем. Если нужно будет выводить текст, написанный кириллицей, то второй строчкой BAT-файла нужно указать кодировку:
chcp 65001
При каждом запуске скрипта в папке backup на диске C: будем создавать директорию с текущей датой в названии — так будет проще искать бэкапы. Для этого используем команду md с параметром %DATE%:
md "C:/backup/%DATE%"
Теперь скопируем содержимое папки «Документ» в созданную директорию. С помощью параметра %USERNAME% можно обратиться к файлам текущего пользователя, если на компьютере их несколько:
xcopy "C:/Users/%USERNAME%/Documents" "C:/backup/%DATE%"
Для экономии места будем архивировать бэкапы с помощью 7-zip. Нужно будет предварительно скачать и установить программу по инструкции на сайте разработчика.
Далее переходим в каталог с резервными копиями с помощью команды cd и вызываем 7-zip с параметром -tzip. Появится архив бэкапа в формате .zip:
cd "C:/backup/%DATA%" "C:/Program Files/7-Zip/7z.exe" -tzip a %DATE%.zip %DATE%
Ход выполнения скрипта можно сопровождать сообщениями командной строки, чтобы пользователь узнал, когда резервное копирование завершится. Для вывода сообщений используется команда echo.
Кроме того, текст, выводящийся на экран, можно покрасить с помощью команды color, передав ей код цвета. Эту строчку лучше добавлять в начало батника.
Весь список доступных цветов приведён в таблице:
Скриншот: «Командная строка» / Skillbox Media
Скриншот: «Командная строка» / Skillbox Media
Полный текст скрипта для резервного копирования файлов:
@echo off chcp 65001 color 03 echo Начинается процесс резервного копирования md "C:/backup/%DATE%" xcopy "C:/Users/%USERNAME%/Documents" "C:/backup/%DATE%" cd "C:/backup/%DATA%" "C:/Program Files/7-Zip/7z.exe" -tzip a %DATE%.zip %DATE% echo Процесс завершен pause
Бывает, что для работы надо запустить одновременно несколько приложений — например, браузер, мессенджер, редактор кода и клиент Git. Этот процесс можно автоматизировать, чтобы все необходимые программы открывались по одному клику.
Исполняемые файлы запускаются командой start. В качестве аргумента ей надо передать путь к файлу на диске:
start "" "путь_к_исполняемому_файлу"
Так, чтобы открыть одновременно браузер Microsoft Edge, текстовый редактор WordPad и приложение «Службы», надо трижды вызвать команду start:
start "" "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" start "" "C:\Program Files\Windows NT\Accessories\wordpad.exe" start "" "C:\Windows\system32\services.msc"
Перед аргументом всегда добавляйте двойные кавычки («»), иначе откроются не программы, а новые экземпляры командной строки.
В Windows есть папка Temp, в которой система собирает временные файлы из браузера и приложений. Если её не очищать, то со временем её размеры могут увеличиться до десятков гигабайт.
Пользователи редко чистят папку с временными файлами. Для этого надо включить отображение скрытых папок, найти директорию на диске и вручную удалять мусор. Проще автоматизировать эту задачу с помощью простого BAT-файла, который будет очищать папку Temp по клику мыши или расписанию.
Сначала вызовем команду rd с параметрами /s и /q — это полностью удалит папку с диска. Затем создадим Temp заново с помощью mkdir:
rd /s /q C:\Users\%USERNAME%\AppData\Local\Temp\ mkdir C:\Users\%USERNAME%\AppData\Local\Temp\
Запускать BAT-файлы можно разными способами. Самый очевидный — двойной щелчок левой кнопкой мыши. Также можно делать это из командной строки или настроить автоматический запуск по расписанию.
- Откройте окно поиска Windows. Он находится рядом с меню «Пуск».
- Введите в строке поиска cmd и запустите инструмент «Командная строка».
- В окне командной строки укажите полный путь до файла .bat и нажмите Enter.
Батники в Windows открываются в окне командной строки, что иногда может мешать в работе. Простой скрипт на языке VBScript позволяет запускать BAT-файлы в фоновом режиме:
- Откройте любой текстовый редактор, например «Блокнот».
- Вставьте в новый документ код скрипта для скрытого запуска:
Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "Полный_путь_до_.bat_файла" & Chr(34), 0 Set WshShell = Nothing
- Сохраните файл, но вместо .bat укажите расширение .vbs.
- Запустите файл, щёлкнув по нему дважды левой кнопкой мыши.
Если у вас есть повторяющиеся задачи, то можно настроить запуск BAT-файлов по расписанию. Для этого понадобится встроенный в Windows «Планировщик заданий».
1. Нажмите сочетание клавиш Win + R, в появившемся окне введите taskschd.msc и нажмите Enter.
2. Откроется «Планировщик заданий». В правой части его окна нажмите Создать простую задачу.
3. В «Мастере создания простой задачи» введите имя новой задачи и её описание. Затем нажмите Далее.
4. Выберите периодичность запуска. Доступны опции с привязкой к конкретному времени или запуску системы.
5. Введите время, в которое нужно запускать задачу.
6. Отметьте пункт Запустить программу.
7. Укажите путь до вашего BAT-файла и нажмите Готово.
Теперь батник будет запускаться с заданной периодичностью. К примеру, так можно настроить автоматическое удаление временных файлов при каждом запуске системы или создание резервной копии раз в неделю.
BAT-файлы — мощный инструмент для автоматизации задач на компьютерах под управлением Windows. Больше о командах можно узнать из официальной документации Microsoft, а на GitHub разработчики публикуют коллекции полезных батников.
Попробуйте себя в IT бесплатно
Вы познакомитесь с основами разработки, напишете первую программу на Python и поймёте, как быстро устроиться в IT.
Учиться бесплатно →
Составление сценариев и их использование в процессе управления Windows — очень удобный метод, о котором не следует забывать. Возможно, не всегда ясно, как применять сценарии при наличии графического интерфейса. Может быть, непонятно, во что обойдется обучение написанию сценариев с точки зрения временных затрат и, как говорится, стоит ли овчинка выделки. Или, быть может, трудно разобраться в этих названиях — WSH, WMI, ADSI, в бесконечных объектах, методах, процедурах и функциях. При этом у многих администраторов возникает ощущение, что использованием сценариев можно без ущерба для себя пренебречь. Однако игнорировать возможности сценариев не следует. Быстро подготовленный сценарий значительно сэкономит и время, и силы. И чем больше подобных сценариев, тем, естественно, лучше.
В этой статье я хотела бы пояснить, когда следует использовать механизмы сценариев, рассказать о некоторых базовых концепциях их составления, а также дать ряд практических советов (см. врезку «Советы по составлению сценариев»). Кроме того, я представлю код на VBScript, с помощью которого решается некая общая задача, и прокомментирую его. Выбор пал на VBScript, поскольку Windows поддерживает этот язык. Windows поддерживает и JScript, но в предыдущих номерах журнала, как правило, использовался VBScript, так что есть смысл сохранять преемственность.
Почему именно сценарии?
Программирование сценария занимает больше времени, чем однократное выполнение задачи вручную, — даже если за дело берется опытный специалист по программированию на VBScript, который знает проблему досконально. Если же вы не профессионал, то написание и отладка сценария займет куда больше времени, чем использование графического интерфейса. Так зачем же тогда привлекать сценарий?
Основное назначение административных сценариев — автоматизация часто повторяющихся задач. Если администратор сталкивается с задачей, которую нужно выполнить более одного раза или же регулярно, как раз имеет смысл доверить ее решение сценарию. Очевидно, что в этом случае все подобные задачи будут решаться быстро и единообразно. Кроме того, написание сценариев позволит создать инструментарий администратора, не предусмотренный в графическом интерфейсе.
Если с помощью GUI решить задачу непросто, то, может быть, стоит обратиться к утилитам командной строки, которые поставляются вместе с операционной системой или в составе Resource Kit? Желательно использовать данные утилиты всегда, когда в этом есть смысл. Но в Windows 2000 набор программ с графическим интерфейсом не соответствует в точности набору утилит командной строки, и некоторые утилиты могут не удовлетворять в полном объеме решаемой задаче. Пакетные файлы не всегда хорошо справляются с ситуацией, когда входной поток данных должен быть изменен. Кроме того, утилиты командной строки и сценарии не являются взаимоисключающими методами. Можно написать сценарии, основанные на применении утилит командной строки и при этом свободные от недостатков последних.
Scripting Host
Прежде чем перейти к созданию сценария, поясню некоторые термины. Зная, что скрывается за словами scripting host, легче понять, как это может повлиять на проект сценария, допустимо ли будет использовать в сценарии выражения и т. п.
Scripting host (машина сценариев) — это операционная среда сценария. Windows не имеет понятия о VBScript: если в командной строке ввести строчку кода на VBScript, система выдаст сообщение об ошибке. Когда Windows сталкивается с файлом, расширение которого указывает на файл-сценарий, операционная система передает файл машине сценариев для интерпретации. Машина интерпретирует предложенный сценарий, а затем передает сообщения сценария (по сути — запрос на регистрацию данных) в операционную систему Windows для исполнения.
Windows поддерживает две машины сценариев: Microsoft Internet Explorer (IE) и Windows Script Host (WSH). Выбор той или иной машины влияет на используемые в сценарии возможности. Если применяется WSH, как чаще всего и бывает, то в сценарии могут использоваться объекты WSH, но не IE, и наоборот. Машина сценария не обязана понимать содержание всех мыслимых сценариев; воспринимается только сценарий, написанный на языке машины, и тот, который ею поддерживается. Для WSH и IE «понятными» являются языки VBScript и JScript.
Элементы сценария
Каждая строка сценария — это оператор, который сообщает компьютеру, что следует сделать. Исполняемые операторы обычно имеют форму типа «действие-объект»: описываются само действие и тот объект, над которым действие совершается. Сценарий может содержать условия, при наличии которых указанные операторы должны быть выполнены. Хост сценария интерпретирует строки кода слева направо и сверху вниз, так что можно, например, получив некоторые данные в строке 10, использовать их в 30-й строке. Исключение составляют процедуры. Процедуры (функции и подпрограммы) — это набор операторов, которые выполняются только при явном обращении к ним. В данном случае процедура сразу же начинает выполняться независимо от того, из какого места кода было обращение.
Исполняемые части сценария называются операторами. Неисполняемая часть сценария называется комментарием и должна предваряться апострофом (‘) или ключевым словом Rem. Например:
Rem Это комментарий
или
' Это комментарий
Комментарий может занимать всю строчку целиком или быть частью строки, содержащей исполняемый код. Сценарий следует документировать, чтобы не участвующий в его написании человек (или даже незнакомый с лексикой его языка) смог легко понять, для чего сценарий предназначен. Иногда в целях отладки программы в начале исполняемой строки ставят признак комментария.
VBScript «понимает» четыре типа данных: числа (number); строки (string); дата и время (date and time); булевы данные (boolean). Примеры чисел — скажем 2 или 9458. Строки — это любая комбинация символов, заключенная в двойные кавычки, например «рыба» и «Это строка %@#^>». Дата и время должны находиться внутри символов решетки (#) и выглядеть соответственно. Так, например, #16 January 1968# и #1/01/02 11:45 PM# — нормальные с точки зрения VBScript данные. Булевы данные — TRUE или FALSE, например x
VBScript рассматривает перечисленные четыре типа данных как подмножество другого типа данных — variant, который может содержать данные любого вида. Таким образом, VBScript можно не сообщать, с данными какого типа вы работаете, но нужно иметь в виду, что некоторые задачи выполняются в Visual Basic (VB) и VBScript с описанными типами данных по-разному (правда, подобная ситуация может никогда и не встретиться). Группы однотипных данных называются массивами (array).
Для простоты работы с данными VBScript поддерживает еще два типа данных, не имеющих никакого начального значения (null-данные), которые можно присваивать переменным (variable) и константам (constant) сценария. Значения переменных в ходе выполнения программы могут меняться, но их имена при этом остаются прежними. Константы при выполнении сценария имеют только одно значение и изменяться не могут.
Передать данные в сценарий можно двумя способами. Во-первых, их в явном виде прописывают в теле программы. Например, «»igserversharedfolder»» — обычное использование в сценарии строковых данных для обозначения пути. Другой способ — передать нужные данные во входном потоке в сценарий. Кроме того, по ходу обработки сценарий может самостоятельно генерировать данные (например, вычислить дату двумя неделями позднее текущей), а затем использовать их.
Манипулировать данными можно с помощью операторов (operator) — символов, которые обычно применяются для обозначения математических функций. Какие-то операторы имеют более высокий приоритет, какие-то — более низкий, и это влияет на порядок вычисления выражений (expression). Выражение есть некоторое вычисление, в которое могут быть включены числа, переменные, строки, константы. В выражениях могут использоваться операторы. Например, выражение dInputDate + 2 = dNewDate означает, что к значению переменной dInputDate добавляется 2, и результат вычисления вновь присваивается переменной dNewDate.
Функции и подпрограммы
VBScript имеет набор встроенных функций, которые позволяют выполнять некоторые операции без подробного описания решаемой задачи. С помощью встроенных функций можно манипулировать числами, строками, значениями даты и времени, массивами. В состав VBScript также входят функции преобразования данных одного типа в другой. Например, VBScript обычно исходит из того, что число, допустим, 45, имеет тип «число», но при необходимости его можно рассматривать как данные строкового типа.
VBScript предусматривает создание собственных функций пользователя (user-defined function, UDF) для выполнения каких-то специфических задач. Например:
Function TestFunct TestFunct = Sqr(9) + 2 End Function
Пользовательская функция TestFunct работает со встроенной функцией Sqr для извлечения квадратного корня из 9 и добавления к полученному результату 2. UDF, как и встроенная функция, может использовать аргументы.
TestFunct UDF возвращает результат в основное тело программы. Подпрограмма выполняет некоторые действия, но ничего не возвращает в основной код в качестве результата. Программист может задействовать подпрограмму несколько раз, при необходимости использовать один и тот же участок кода, а повторно писать одно и то же лень. Подпрограмма
Sub AskUserName WScript.Echo _ ''Please type a username.'' WScript.Quit End Sub
использует возможности объекта WScript для вывода на экран некоторого сообщения, после чего завершает свою работу. Функции и подпрограммы могут задействовать значения переменных, декларированных внутри основного кода сценария, или же использовать собственные переменные.
Объекты в сценарии
Объект (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, формальное имя подчиненных объектов не совпадает с именем, используемым при обращении к ним в сценарии.
В следующий раз я расскажу о том, как применять полученные знания при создании сценариев управления.
Криста Андерсон — независимый автор и консультант журнала Windows NT Magazine. Ее последняя книга — «Mastering Local Area Networks». С ней можно связаться по адресу: candersn@adelphia.net.
Советы по составлению сценариев
В следующей статье будут приведены более конкретные советы по программированию на VBScript, а сейчас ограничимся общими правилами, которых нужно придерживаться всегда:
- строки сценария должны быть короткими: они легче читаются. VBScript допускает использование знака подчеркивания для разрыва строки, а конструкция If …Then … Else поможет избавиться от нагромождения логики в одной строке;
- не скупитесь на комментарии. Сейчас вы еще помните, зачем нужна данная строка кода. Но вспомните ли вы об этом через полгода? А другой человек — разберется ли он без посторонней помощи в чужом коде? Убедитесь, что логика кода исчерпывающе объясняется в комментариях;
- смешивайте регистр написания кода. Переменная oDiskSpace читается легче, чем odiskspace или ODISKSPACE. VBScript в большинстве случаев не зависит от регистра (единственное исключение — вычисление значения ASCII-символа);
- при работе с Windows Script Host (WSH) следует использовать среду командной строки (command-line environment). WSH может исполняться в двух средах — в среде командной строки и в графической среде (по умолчанию). В первом случае вывод направляется в командное окно, если только программист не перенаправит поток данных в другое место. В графической среде вывод поступает в окна сообщений. Чаще всего используется командная среда. Некоторые операции в графической среде не работают, и если несколько строк кода генерирует вывод, то для каждой из них понадобится свое окошко сообщений. В результате работа сценария будет приостанавливаться до тех пор, пока оператор не нажмет кнопку ОК. Для исполнения сценария в командной среде следует воспользоваться одним из двух способов: предварять каждую команду сценария вызовом cscript, например:
cscript getfree.vbs
либо установить среду командной строки в виде среды по умолчанию:
wscript //h:cscript //s
- присваивайте имена переменным в соответствии с типом представляемых данных (т. е. имена строковых переменных должны начинаться с s, объектных — с o). Подобная практика поможет при отладке кода. В ряде случаев при несоответствии типов данных объявленным переменным работа сценария будет протекать не так, как ожидается. А если тип данных ассоциируется с названием переменной, ошибки из-за несоответствия типов переменных и данных будут выявляться быстрее;
- заранее и в явном виде описывайте переменные. Хотя переменные разрешено описывать неявно (просто присваивая им значения), их применение можно запретить. Для этого используйте утверждение Option Explicit в самом начале файла-сценария. С этого момента любая применяемая в коде программы переменная должна явно описываться оператором Dim, что позволит ограничить число ошибок из-за случайно или неверно набранных переменных;
- пишите сценарии в текстовом редакторе. Не применяйте для этих целей текстовый процессор с последующим сохранением данных в редакторе.
В сценариях часто используются кавычки, и, если текстовый процессор так или иначе преобразует их, сценарий просто не будет работать.