Windows автоматизация задач с помощью скриптов

Пожалуй, многие знают, что Windows начиная с версии 98 имеет по умолчанию в своем составе Windows Script Host (WSH), который позволяет исполнять скрипты на языках VBScript и JScript, но далеко не каждый хотя бы раз пользовался этой возможностью. В этой статье я приведу примеры полезных сниппетов и скриптов для WSH и попробую убедить вас в том, что вещь это действительно стоящая. Я также расскажу об очень занимательных и полезных возможностях WSH, о которых практически никто не знает, и информацию о которых в интернете найти весьма непросто.

Для начала немного о языках, поддерживающихся WSH. JScript — это, по сути, JavaScript с несколько измененной объектной моделью (например, в нем нет объекта window, как в браузерах, зато добавлен объект WScript, позволяющий взаимодействовать со средой, в которой исполняется скрипт). VBScript базируется на синтаксисе и возможностях Visual Basic 6 (и, возможно, более ранних версий). Оба языка имеют приблизительно одинаковые возможности. Кроме того, можно установить и другие языки для WSH, например, PerlScript, который, как вы уже догадались, базируется на Perl’е. Для этого следует воспользоваться, например, инсталлятором ActiveState Perl:

В Windows по умолчанию расширение файла .js ассоциировано с JScript-скриптами, .vbs — с VBScript. При установке PerlScript появляется ассоциация .pls — с PerlScript-скриптами. Скрипты js и vbs можно закодировать с помощью утилиты от Microsoft screnc.exe, получив на выходе файл с расширением .jse или .vbe, соответственно. К сожалению, такое кодирование защитит лишь от неопытных пользователей — множество раскодировщиков можно найти в Google. Кроме того, при закодировании бывают проблемы с русским текстом.

Еще одной замечательной особенностью WSH является то, что он позволяет комбинировать все установленные в системе скриптовые языки в одном файле с расширением .wsf. Например, VBScript предоставляет функцию, отображающую окошко для ввода текста (InputBox), и она вам очень нужна, но скрипт свой вы пишете на JScript, который такой функцией не располагает. Решается проблема очень просто — создать файл wsf со следующим содержанием:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?xml version=«1.0» encoding=«windows-1251»?>

<job id=«MyTestJob»>

    <script language=«VBScript»>

    <![CDATA[

        Function WSHInputBox(Message, Title, Value)

            WSHInputBox = InputBox(Message, Title, Value)

        End Function

    ]]>

    </script>

    <script language=«JScript»>

    <![CDATA[

      //Ваш код на JS

      var name = WSHInputBox(«Введите ваше имя:», «Запрос», «Вася Пупкин»);

      WScript.Echo(«Имя: « + name);

    ]]>

    </script>

</job>

Таким же образом можно скомбинировать, например, JScript и PerlScript, если PerlScript у вас установлен:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<?xml version=«1.0» encoding=«windows-1251»?>

<job id=«MyTestJob»>

    <script language=«PerlScript»>

    <![CDATA[

      use strict;

      our $WScript;

      use LWP::UserAgent;

      sub do_request

      {

        my $lwp = new LWP::UserAgent;

        my $response = $lwp->get($_[0]);

        if($response->is_success)

        {

          return $response->headers->as_string;

        }

        else

        {

          return $response->error_as_HTML;

        }

      }

    ]]>

    </script>

    <script language=«JScript»>

    <![CDATA[

      WScript.Echo(do_request(«http://ya.ru»));

    ]]>

    </script>

</job>

Небольшое отступление — расскажу о запуске скриптов для WSH. По двойному клику мышкой они по умолчанию запускаются с помощью программы wscript.exe. В этом случае все вызовы WScript.Echo транслируются в обычные messagebox’ы. Если вы используете скрипт для автоматизации какого-либо процесса, например, сборки какого-либо проекта, и желаете выводить множество сообщений, то следует скрипт запускать с помощью программы cscript.exe, которая обращения к WScript.Echo транслирует в выводы в консоль. Запустить скрипт в консольном варианте можно, создав bat-файл с примерно таким содержимым:

@echo off

cscript my_script.wsf [параметры]

pause

Можно также кликнуть на файле скрипта и вызвать меню «Open with command prompt».

Возможно, я кого-то удивлю, если скажу, что из скриптов для WSH можно с легкостью использовать классы .NET! Приведу пример на JScript (js-файл):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

function vote_form()

{

  //Создаем объект формы и всякие контролы

  this.form = WScript.CreateObject(«System.Windows.Forms.Form»);

  this.radioButton1 = WScript.CreateObject(«System.Windows.Forms.RadioButton»);

  this.radioButton2 = WScript.CreateObject(«System.Windows.Forms.RadioButton»);

  this.radioButton3 = WScript.CreateObject(«System.Windows.Forms.RadioButton»);

  this.radioButton4 = WScript.CreateObject(«System.Windows.Forms.RadioButton»);

  this.button1 = WScript.CreateObject(«System.Windows.Forms.Button»);

  this.button2 = WScript.CreateObject(«System.Windows.Forms.Button»);

  this.linkLabel1 = WScript.CreateObject(«System.Windows.Forms.LinkLabel»);

  //Настраиваем контролы

  with(this.radioButton1)

  {

    Parent = this.form;

    Checked = true;

    Left = 12;

    Top = 12;

    Width = 110;

    Height = 17;

    TabStop = true;

    Text = «VBScript»;

  }

  with(this.radioButton2)

  {

    Parent = this.form;

    Left = 12;

    Top = 35;

    Width = 110;

    Height = 17;

    TabStop = true;

    Text = «JScript»;

  }

  with(this.radioButton3)

  {

    Parent = this.form;

    Left = 12;

    Top = 58;

    Width = 110;

    Height = 17;

    TabStop = true;

    Text = «PerlScript»;

  }

  with(this.radioButton4)

  {

    Parent = this.form;

    Left = 12;

    Top = 81;

    Width = 110;

    Height = 17;

    TabStop = true;

    Text = «Единая Россия»;

  }

  with(this.button1)

  {

    Parent = this.form;

    Left = 12;

    Top = 112;

    Width = 85;

    Height = 23;

    Text = «Да!»;

    DialogResult = 1;

  }

  with(this.button2)

  {

    Parent = this.form;

    Left = 125;

    Top = 112;

    Width = 85;

    Height = 23;

    Text = «Идите вы!»;

    DialogResult = 0;

  }

  with(this.linkLabel1)

  {

    Parent = this.form;

    Left = 167;

    Top = 9;

    Width = 45;

    Height = 15;

    Text = «kaimi.io»;

  }

  //настраиваем форму

  with(this.form)

  {

    Width = 222;

    Height = 125;

    Text = «Какой язык вам больше по душе?»;

    AutoSize = true;

    FormBorderStyle = 5; //FixedToolWindow

    CancelButton = this.button1;

    CancelButton = this.button2;

  }

  //Отобразить форму и вернуть true, если пользователь нажал на первую кнопку

  this.show = function()

  {

    this.form.ShowDialog();

    return this.form.DialogResult == 1;

  };

  //Получить выбранный результат (см. выше, на форме 4 radio button’а)

  this.result = function()

  {

    if(this.radioButton1.Checked)

      return this.radioButton1.Text;

    else if(this.radioButton2.Checked)

      return this.radioButton2.Text;

    else if(this.radioButton3.Checked)

      return this.radioButton3.Text;

    else if(this.radioButton4.Checked)

      return this.radioButton4.Text;

  };

};

//Создаем форму

var my_form = new vote_form;

//Предлагаем пользователю сделать выбор

while(true)

{

  if(my_form.show())

  {

    WScript.Echo(«Вы выбрали: « + my_form.result());

    break;

  }

  else

  {

    WScript.Echo(«Ну как же так, надо же выбрать!»);

  }

}

Выполнив этот скрипт, увидим такую форму:

И все это создано с помощью .NET-классов! Есть, правда, в этом некоторые сложности. Во-первых, я не нашел путей для взаимодействия с делегатами, которые используются при обработке событий в .NET. Во-вторых, не существует способа вызвать через CreateObject конструктор COM-объекта, принимающий параметры (это относится не только к .NET, кстати). В-третьих, по умолчанию в скриптах доступны лишь некоторые .NET-сборки и классы:

System.Collections.Queue
System.Collections.Stack
System.Collections.ArrayList
System.Collections.SortedList
System.Collections.Hashtable
System.IO.StringWriter
System.IO.MemoryStream
System.Text.StringBuilder
System.Random

С другой стороны, опубликовать .NET-сборку, чтобы она стала доступной через COM-интерфейсы (которые и используются в WSH), совсем несложно. Если вышеприведенный скрипт с Windows Forms у вас не заработал (что, скорее всего, так и есть), наберите в консоли команду:

%WINDIR%Microsoft.NETFrameworkv2.0.50727RegAsm.exe System.Windows.Forms.dll /codebase

либо, если вы пользуетесь 64-битной операционной системой, то

%WINDIR%Microsoft.NETFramework64v2.0.50727RegAsm.exe System.Windows.Forms.dll /codebase

Эта команда опубликует сборку System.Windows.Forms и она станет доступной через COM-интерфейсы, после чего вы сможете использовать классы из нее в скриптах. К сожалению, не все сборки можно зарегистрировать, а только те, которые имеют аттрибут ComVisible=true (если такой аттрибут у сборки есть, об этом говорится на соответствующих страницах с описанием сборки в MSDN).

Для отмены регистрации сборки выполните приведенную выше команду с ключом /unregister.

Что еще следует знать при использовании .NET-сборок? Часто классы в .NET имеют перегруженные функции с одинаковыми именами и разными типами и количеством параметров. Как вызывать их? Ведь переменные в скриптах практически не типизируются! Все очень просто. Например, возьмем класс System.Random. Он уже зарегистрирован по умолчанию и доступен из WSH. Но он имеет три метода с именем Next. Как вызвать нужный? .NET маппит имена одинаковых методов следующим образом: первый с конца в таблице методов имеет имя Next (в данном случае), следующий — Next_2, далее — Next_3. Где увидеть эту таблицу с правильным порядком функций? Например, в ildasm’е:

Здесь я открыл сборку mscorlib.dll из %WINDIR%Microsoft.NETFramework64v2.0.50727, после чего зашел в неймспейс System и нашел класс Random в нем. Теперь ясно — если мы хотим воспользоваться методом Next, предоставляющим возможность указать минимальное и максимальное значение при генерации рандома, то следует вызвать Next_2 (так как этот метод второй с конца в списке методов Next, смотрите скриншот выше):

var random = WScript.CreateObject(«System.Random»);

WScript.Echo(random.Next_2(10, 20)); //выводим рандомное число в диапазоне от 10 до 20

Еще одной из интересных возможностей скриптов для WSH является поддержка drag-drop’а. На файлы .js, .vbs, .jse, .vbe, .wsf можно перетаскивать другие файлы, и их имена будут доступны через WScript.Arguments.

Итак, подведем итоги. Чем же примечательно написание скриптов на JScript, VBscript или PerlScript? Почему это лучше и проще bat-файлов или PowerShell’а?

[+] Вы сами выбираете знакомый любимый синтаксис. Предпочитаете JavaScript — пишите на нем, обожаете Visual Basic — тогда VBScript для вас!
[+] Вы можете комбинировать эти языки в одном скрипте, тем самым дополняя возможности одного языка фичами другого.
[+] Вам доступны все стандартные особенности выбранного языка. Поддержка выполнения внешних программ, работа с текстовыми и двоичными файлами, регулярные выражения и многое другое прилагается. Поддержка работы с файлами по маске, с сетевыми путями (samba, например) — тоже.
[+] Вы можете использовать множество зарегистрированных COM-классов.
[+] Вы можете использовать многие COM-Visible .NET-сборки.
[+] Вы можете работать с WMI, так как он доступен через COM.
[+] Имеется полная поддержка Unicode, достаточно сохранить файл как Unicode Little Endian.

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

Сейчас мне остается лишь привести несколько полезных сниппетов, которые пригодятся вам, если вы решите использовать WSH для написания скриптов, производящих автоматическую сборку проектов/парсинг/работу с файлами и т.д. Для примера я буду использовать свой любимый JScript, потому что он имеет наиболее привычный синтаксис и будет понятен большинству из вас. Кроме того, в JScript удобно перехватывать исключения, которые могут быть выброшены функциями COM-классов и объекта WScript, с помощью try-catch. Можно и самим бросать исключения (это штатная возможность языка JavaScript, и, разумеется, она есть в JScript).

1. Работаем с файловой системой.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

var fso = WScript.CreateObject(«Scripting.FileSystemObject»); //Создаем объект, позволяющий работать с файловой системой

fso.CopyFile(«xx.txt», «yy.txt»); //копируем xx.txt в yy.txt

fso.CopyFile(«C:\Test\*.exe», «C:\test2\»); //копируем все exe-файлы из C:Test в C:test2

fso.DeleteFile(«xx.txt»); //Удаляем xx.txt

fso.DeleteFile(«*.*»); //Удаляем все файлы из текущей папки

if(!fso.FolderExists(«C:\Temp123»))

  fso.CreateFolder(«C:\Temp123»); //Создаем папку, если она не существует

//Перечисляем имена всех подпапок на диске C:

var folder = fso.GetFolder(«C:\»);

if(folder)

{

  var it = new Enumerator(folder.SubFolders);

  for(; !it.atEnd(); it.moveNext())

    WScript.Echo(it.item().path);

}

2. Работаем с переменными окружения.

var shell = WScript.CreateObject(«WScript.Shell»);

WScript.Echo(shell.ExpandEnvironmentStrings(«Windows folder: %WINDIR%»)); //Получаем значение переменной окружения

//Проверяем, установлена ли переменная окружения

var check = «%VS100COMNTOOLS%»;

if(shell.ExpandEnvironmentStrings(check) != check)

  WScript.Echo(«У вас установлена Visual Studio 2010!»);

else

  WScript.Echo(«У вас нет Visual Studio 2010 :(«);

3. Выполнение внешних программ.

Выполнение программы с ожиданием ее завершения и получением кода возврата:

try

{

  var shell = WScript.CreateObject(«WScript.Shell»);

  var ret = shell.Run(«calc.exe», 1, true); //Выполняем calc.exe

  WScript.Echo(«Код возврата: « + ret);

}

catch(error)

{

  WScript.Echo(«Код ошибки: « + error.number + «n» + error.description);

}

Выполнение внешней программы с перехватом ее вывода:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

try

{

  var shell = WScript.CreateObject(«WScript.Shell»);

  var exec = shell.Exec(«find.exe /?»); //Выполняем find.exe с параметром

  while(exec.Status == 0) //Ждем окончания выполнения команды

    WScript.Sleep(100);

  if(exec.ExitCode != 0) //Если произошла ошибка (обычно все консольные программы в случае ошибки возвращают ненулевое значение, но не всегда)

    throw new Error(exec.ExitCode, «Cannot execute command!»);

  var output = «»;

  if(!exec.StdOut.AtEndOfStream)

    output = exec.StdOut.ReadAll(); //Перехватываем вывод выполненной программы

  WScript.Echo(«FIND.EXE help:nn» + output);

}

catch(error)

{

  WScript.Echo(«Код ошибки: « + error.number + «n» + error.description);

}

Можно также вводить какие-либо данные в программу через Exec.StdIn.

4. Работаем с реестром Windows.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

var shell = WScript.CreateObject(«WScript.Shell»);

//Создаем в ветке HKCUSoftware каталог Test123WScriptTest.

//Обратите внимание на то, что в конце пути я указал обратный слеш

//Последний параметр — тип создаваемого значения — указывать необязательно.

shell.RegWrite(«HKCU\Software\Test123\WScriptTest\», 1, «REG_BINARY»);

//Создаем в этом каталоге строковое значение

shell.RegWrite(«HKCU\Software\Test123\WScriptTest\myvalue», «xyz», «REG_SZ»);

//Меняем значение тем же вызовом

shell.RegWrite(«HKCU\Software\Test123\WScriptTest\myvalue», «12345», «REG_SZ»);

//Читаем записанное значение

WScript.Echo(«Записанное значение: « + shell.RegRead(«HKCU\Software\Test123\WScriptTest\myvalue»));

//Так как нельзя удалить каталог в реестре с вложенными каталогами,

//удаляем сначала вложенный

shell.RegDelete(«HKCU\Software\Test123\WScriptTest\»);

//А затем внешний

shell.RegDelete(«HKCU\Software\Test123\»);

5. Работаем с WMI.

Перечисляем все вложенные ключи реестра в заданной ветке:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

//Необходимые константы для доступа к реестру

var HKEY_CLASSES_ROOT = 0x80000000;

var HKEY_CURRENT_USER = 0x80000001;

var HKEY_LOCAL_MACHINE = 0x80000002;

var HKEY_USERS  = 0x80000003;

var HKEY_CURRENT_CONFIG = 0x80000005;

var locator = WScript.CreateObject(«WbemScripting.SWbemLocator»);

//Подключимся к WMI локального компьютера

var server_conn = locator.ConnectServer(null, «root\default»);

//Получим доступ к реестру

var registry = server_conn.Get(«StdRegProv»);

//Получим метод перечисления ключей

var method = registry.Methods_.Item(«EnumKey»);

//Зададим параметры для вызова метода

var input_params = method.InParameters.SpawnInstance_();

input_params.hDefKey = HKEY_CURRENT_USER;

//Будем перечислять все ключи в этой ветке реестра

input_params.sSubKeyName = «Software\Microsoft\Windows\CurrentVersion\»;

//Выполняем метод перечисления ключей

var output = registry.ExecMethod_(method.Name, input_params);

var subkeys = output.sNames.toArray();

//Выводим полученные значения

for(var key in subkeys)

  WScript.Echo(subkeys[key]);

Такую вещь на VBScript можно сделать гораздо проще, как ни странно:

const HKEY_CLASSES_ROOT = &H80000000

const HKEY_CURRENT_USER = &H80000001

const HKEY_LOCAL_MACHINE = &H80000002

const HKEY_USERS  = &H80000003

const HKEY_CURRENT_CONFIG = &H80000005

‘Получили доступ к локальному реестру через WMI

Set registry = GetObject(«winmgmts:{impersonationLevel=impersonate}!\.rootdefault:StdRegProv»)

Перечислили имена ключей

registry.EnumKey HKEY_CURRENT_USER, «SoftwareMicrosoftWindowsCurrentVersion», key_names

‘Вывели их

For i = 0 To UBound(key_names)

  WScript.Echo key_names(i)

Next

Выполнение запроса WMI (в этом примере — вывод всех аккаунтов на компьютере):

//Подключились к WMI локального компьютера («.»)

var root = GetObject(«winmgmts:\\.\root\cimv2»);

//Выполнили запрос на получение всех локальных аккаунтов на компьютере

var items = root.ExecQuery(«SELECT * FROM Win32_Account where LocalAccount = true and SIDType = 1»);

//Вывели их имена и описания

for(var it = new Enumerator(items); !it.atEnd(); it.moveNext())

  WScript.Echo(it.item().Name + » — « + it.item().Description);

На этом я закончу свое повествование. Думаю, если вы осилили эту статью до конца, вы осознали всю мощь и удобство скриптов для WSH и непременно воспользуетесь этой замечательной функциональностью Windows!

Для дальнейшего изучения могу посоветовать MSDN (там есть множество документации по WSH, и, конечно же, .NET и WMI), и Google (примеров скриптов для WSH там несчетное количество). Удачи в изучении!

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

  • В некоторых программах есть возможность записать свои действия, чтобы потом повторять их сколько угодно раз. Такие действия называются скриптами и макросами.
  • Это помогает в ежедневных ситуациях: обработать электронную таблицу, отформатировать документы, подготовить файлы и перевести их из одного формата в другой.
  • Скрипты делают двумя способами: пишут команды на встроенном языке или делают всё мышкой и клавиатурой, а компьютер это запоминает. 

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

В зависимости от возможностей такие программы делятся на автокликеры, программы поиска изображений и скриптовые автоматизаторы.

Автокликеры подойдут, если для выполнения нужных действий достаточно мышки. Работают так: включаете запись и выполняете мышкой всё, что нужно сделать. Программа запоминает координаты кликов и интервалы между ними, а потом имитирует их, как будто это делаете вы. Это самый простой и надёжный вариант, но у него есть большой минус: если поменяется интерфейс или размер окна, то программа об этом не узнает — она будет кликать по старым координатам и может что-то испортить.

Программы с поиском изображений работают иначе: вы делаете скриншот нужной области, вставляете его в программу и на внутреннем языке объясняете, что с этим делать. Например, можно нажать на найденную картинку (если это иконка сохранения), перетащить её в другое место, ввести туда текст и ещё много разного. Это более универсальное решение, чем автокликеры, но надо немного разбираться в программировании.

Автоматизаторы на скриптах. Это самый замороченный, но самый большой по возможностям способ что-то автоматизировать. Automator из macOS — это именно оно. Можно сделать что угодно в пределах того, что умеют приложения через свои API: как угодно стыковать разные приложения, передавать данные из одного в другое, работать с файловой системой и делать много других вещей. Но придётся прямо писать скрипт.

Action(s)

app.jbbres.com/actions/

Платформа: Windows, macOS.

Эту программу сделали 10 лет назад, и для macOS она уже сильно устарела, но в Windows всё отлично работает. Интерфейс создания скриптов может показаться сложным для новичков. Но если вам нужен полный контроль — она поможет.

Если нужна современная версия для macOS, посмотрите на встроенное приложение Automator. Из коробки он умеет не так много, но есть сторонние расширения. 

5 программ для автоматизации чего угодно на компьютере

AutoIT

autoitscript.com/site/autoit/

Платформа: Windows.

Если вам понравились возможности предыдущей программы, но вы хотите всё контролировать сами и писать свои скрипты, попробуйте AutoIT. В ней используется свой язык, похожий на Бейсик, но с глубоким погружением в системные команды операционной системы. При желании на ней можно запрограммировать даже имитацию работы за компьютером в течение дня — всё будет выглядеть так, как будто человек сидит перед монитором и что-то делает.

Код скрипта в AutoIT

Sikuli

sikulix.com

Гитхаб оригинального проекта

Платформа: любая, где можно запустить виртуальную машину Java.

Эта система понимает скрипты на Python, Ruby и JavaScript и поддерживает все языки программирования, связанные с Java (Jython, JRuby, Scala, Clojure и остальные).

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

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

Простой скрипт с картинками, который меняет настройки сетевого адаптера в Windows. Скриншот: 3dnews.ru

AutoClickExtreme

autoclickextreme.com/ru/

Платформа: Windows.

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

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

5 программ для автоматизации чего угодно на компьютере

Macro Scheduler

www.mjtnet.com/macro-scheduler.htm

Платформа: Windows.

Самая дорогая программа в подборке, но оно того стоит:

  • запись действий мыши и клавиатуры;
  • прямая работа с базами данных, сетевыми протоколами и парсерами данных;
  • распознавание текста на экране;
  • запись макросов для браузеров;
  • работа с любыми элементами ОС напрямую и через скриншоты;
  • свой скриптовый язык;
  • 300 готовых шаблонов автоматизации.

5 программ для автоматизации чего угодно на компьютере

Вёрстка:

Кирилл Климентьев

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

В этом руководстве рассмотрим несколько крутых по мнению автора команд и расскажем почему это круто. Начнем со снипетов.

Полезные снипеты:

Заносим компьютер в TrustedHosts

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

Set-Item WSMan:localhostClientTrustedHosts -Value '192.168.0.1'

Wildcard тоже работает, если не хотите каждый раз добавлять новый хост в TrustedHosts.

Set-Item WSMan:localhostClientTrustedHosts -Value '*'

Храним пароль в зашифрованном виде в файле:

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

Если выполнять скрипты из под зашедшего пользователя, будут использоваться креды этого пользователя.

Read-Host -AsSecureString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .Password.txt

Забираем зашифрованный пароль из файла:

$Password = Get-Content C:Password.txt | ConvertTo-SecureString

Тоже самое можно проделать и с Credentials, заменим Read-Host на Get-Credential.

Get-Credential | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .Credential.txt

Получаем дату последней загрузки ОС.

(gcim win32_operatingsystem).LastBootUpTime

Тем же самым способом получаем еще и аптайм.

Get-CimInstance Win32_operatingsystem -ComputerName $computers |
Select-Object LastBootUpTime,
@{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} 

Получаем список установленных программ:

Именно программ, а не компонентов:


Get-ItemProperty HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table –AutoSize

Получаем список дисков, в том числе сетевых и свободное место на них

Get-PSDrive -PSProvider filesystem | where-object {$_.used -gt 0} |
Select-Object -property Root,@{name="Size";expression={($_.used+$_.free)/1GB -as [int]}},
@{name="Used";expression={($_.used/1GB) -as [int]}},
@{name="Free";expression={($_.free/1GB) -as [int]}} 

Останавливаем процесс по его имени.

В этом примере останавливаем Chrome. Wildcard тоже подойдет, если хотите завершить всё.

Get-Process -Name "chrome" | Stop-Process

Копируем настройки доступа к папкам на дочерние папки

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

Копируем ACL у папки:

$Acl = Get-Acl -Path C:folder

Вставляем ACL на все файлы и подпапки:

Get-ChildItem -Path C:Folder -Recurse | Set-Acl $Acl 

Полезные скрипты:

Вот тут начинается самое страшное веселье. Если вам нужно провести инвентаризацию, будет очень полезно глянуть. Если ваши компьютеры не в AD, то скрипт станет немного сложнее, итерировать придется по заранее составленному файлу, а пароли нужно будет брать из файла или через Get-Credential. Вся разница:

C AD:

$ADComputers = (Get-ADComputer -filter *).DNSHostName

Без AD:

$Credentials = Get-Credential
$Computers = Get-Content -Path C:servers.txt

Получаем аптайм дату последней загрузки каждого из компьютеров в AD:


$ADComputers = (Get-ADComputer -filter *).DNSHostName

foreach ($i in $ADComputers) {
 
    Invoke-Command $i {
        Get-CimInstance Win32_operatingsystem |
        Select-Object LastBootUpTime,
        @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} 
    } 
 
}

Получаем все установленные программы на всех компьютерах AD:

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        gcim win32_product -computername $env:computername | Sort-Object -property Vendor,Name | Select-Object -property Vendor,Name, Caption 
    } 
 
}

Тоже самое можно будет получить и для компонентов, подставив в Invoke-Command:

Get-WindowsFeature | Where-Object -Property "Installed" -EQ "Installed"

Получаем компьютеры, где запущен нужный нам процесс:

Если вы забыли на каком компьютере запущена та или иная программа, можно получить её таким способом. Рассмотрим на примере браузера:

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        Get-Process -Name "Chrome"  -ErrorAction SilentlyContinue
    } 
 
}

Убить браузер можно будет так же легко, как и получить процесс:

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        Get-Process -Name "Chrome" | Stop-Process -ErrorAction SilentlyContinue
    } 
 
}

Получаем компьютеры, где установлена конкретная программа:

Кокретно в этом случае Java. Поможет при проведении инвентаризации можно будет посмотреть имена компьютеров где она была установлена.

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        gcim win32_product -computername $env:computername | Select-String -Pattern "Java" -AllMatches | Sort-Object -property Vendor,Name | Format-Table -ErrorAction SilentlyContinue
 
    } 
 
}

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

Предлагаем обновлённый тариф UltraLite Windows VDS за 99 рублей с установленной Windows Server 2019 Core.

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

Помимо приложений, о которых мы будем говорить ниже, есть целый ряд программ, функции которых по умолчанию могут быть автоматизированы. Это может быть одна или целая комбинация опций, которые будут применены к новым файлам – будь то поворот фотографии или сохранение текстового документа в формате PDF. Стоит самому покопаться в функционале программного обеспечения, которое вы используете, чтобы понять, есть ли возможность автоматизации определенных опций по умолчанию.

Например, в Microsoft Word следует открыть вкладку «Вид» в верхнем меню, выбрать параметр «Макросы» и нажать на кнопку «Записать макрос». Таким образом, вы сможете автоматизировать определенный процесс. В Adobe Photoshop найдите в меню параметр «Создать новое действие» (маленький значок плюса) в нижней части диалогового окна «Действия». Это также даст вам возможность настроить автоматическое выполнение определенного действия.

Windows

Windows не имеет собственного Macro Recorder (программы для записи макросов). Однако Microsoft разработала бесплатный инструмент Power Automate Desktop для всех тех, кто хочет автоматизировать выполнение определенных задач в системе. Это многофункциональное программное обеспечение, с которым придется повозиться некоторое время, чтобы полностью разобраться в его работе. Однако оно способно автоматизировать выполнение целого ряда задач в вашей операционной системе.

Хорошая новость еще заключается в том, что вам не нужно вводить различные команды — откройте инструмент и начните создавать автоматизированные процессы. Для этого следует нажать на кнопку «Создать поток». После этого вы можете перейти на экран конструктора потоков. Здесь есть возможность перетаскивать процессы из списка слева, а также записывать ваши действия, осуществленные с помощью мыши и клавиатуры.

Просмотрите весь список действий, доступных на панели слева, чтобы понять, насколько многофункционален Power Automate Desktop. Вы можете управлять файлами, папками, электронной почтой, содержимым буфера обмена, системными процессами, устройствами ввода и многим другим. Это не самый простой в использовании инструмент, но как только вы разберетесь в его функциях, то сможете автоматизировать почти любой процесс.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b530111f-cf18-4616-9f0b-5bdbb9341ab4/Untitled.png

Power Automate Desktop

Среди других вариантов, представленных на рынке, можно выделить RoboTask. Он является одним из самых продуманных инструментов для автоматизации выполнения процессов в Windows. За 150$ в год (60$ — за каждое продление подписки на следующий год) вы получите невероятную функциональность и возможность автоматизировать почти все процессы. Кроме того, в течение 30 дней можно бесплатно использовать RoboTask, чтобы в полной мере протестировать его возможности. Стоит сказать, что на рынке также есть более старая, урезанная, но бесплатная версия RoboTask, которая подойдет тем, кто не имеет возможности оформить платную подписку.

Как только программа будет запущена, нажмите на кнопку «Создать новую задачу» в левом верхнем углу, чтобы начать создавать макросы. Триггеры могут быть любыми – от сочетания клавиш до вставки информации в буфер обмена. Автоматизированные действия охватывают манипуляции с файлами и папками, редактирование реестра, отключение и включение системных функций. Примеры процессов для автоматизации представлены здесь.

Macro Recorder – это еще один инструмент, который заслуживает вашего внимания. Он более прост и удобен в использовании, чем предыдущие два варианта. И хотя вам придется разово заплатить 50$, чтобы пользоваться данным программным обеспечением, вы также можете протестировать его бесплатную версию. Macro Recorderиспользует несколько иной подход к построению макросов: он записывает действия, которые осуществил пользователь с помощью мыши и клавиатуры, и воспроизводит их.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/cffb9989-ab8c-457b-b841-a3a0fab3df2f/Untitled.png

Macro Recorder

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

Еще одна программа, на которую стоит обратить свое внимание, это Free Macro Recorder. Как уже понятно из названия инструмента, он абсолютно бесплатен. Работает примерно так же, как и Macro Recorder: вы запускаете запись, выполняете все необходимые действия с помощью клавиатуры и мыши, после чего они автоматизируются программой.

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

macOS

Если говорить о подобных встроенных инструментах на Mac OS, Automator поможет вам сделать так, чтобы определенный процесс автоматически выполнялся несколько раз. Программа может автоматизировать различные операции: начиная с редактирования файлов и заканчивая изменением параметров фото. Инструмент не прост в использовании, однако обладает богатым функционалом.

После запуска Automator вам будет предложено создать новую автоматизированную задачу, которая называется рабочим процессом. У вас есть несколько различных типов процессов на выбор:

  • рабочий (макросы, которые уже есть в программе по умолчанию);
  • приложение (макросы, которые будут созданы автономно);
  • действия с папками (макросы, которые активируются после перемещения файла в определенную папку);
  • календарный (макросы, которые активируются по расписанию).

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b71e3ef2-fe06-448f-a788-620878f2013b/Untitled.png

Automator

В целом Automator подходит для автоматизации многих задач: переименования пакетов файлов, извлечения текста из PDF-файлов, закрытия всех запущенных приложений, изменения размера целых групп изображений, превращения содержимого буфера обмена в текстовый файл. Придется уделить достаточное количество времени, чтобы разобраться в возможностях программы, но это того стоит.

Keyboard Maestro – это одна из самых популярных сторонних программ для автоматизации процессов. Она обойдется вам в 36$, однако вы можете протестировать возможности инструмента в его бесплатной пробной версии. Keyboard Maestro более прост в использовании. Инструмент также имеет опцию ручной записи макроса, так что при желании вы можете просто выполнить нужные вам действия, а программа запишет каждый ваш шаг.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4c757851-ac25-4b3b-9c13-2982edb1a74e/Untitled.png

Keyboard Maestro

Новые автоматизированные процессы могут быть созданы с помощью маленького значка «+» (плюс) на панели в нижней части интерфейса. После записи вас попросят назвать новый макрос. Используйте опцию «Новый триггер», чтобы выбрать, как и когда нужно запустить макрос (например, с помощью сочетания клавиш или в определенное время суток), а затем нажмите на кнопку «Новое действие», чтобы решить, какие именно действия нужно выполнить.

Откройте списки триггеров и действий, чтобы получить представление о том, какие процессы возможно автоматизировать с помощью Keyboard Maestro. Вы можете управлять файлами, изображениями, приложениями, системным буфером обмена; вводить текст, воспроизводить музыку, просматривать системные уведомления, пользоваться веб-браузером Safari. Вероятно, вы не найдете такого процесса, который вы не сможете автоматизировать.

Инструмент Macro Recorder, о котором мы говорили ранее в разделе программ для Windows, также можно использовать на macOS. Вы можете бесплатно протестировать программу, чтобы решить, хотите ли вы приобрести полную версию программы за 50$. Она более простая в использовании, чем Automator и Keyboard Maestro. С помощью нее вы все равно сможете создать несколько довольно сложных макросов для своего удобства и экономии времени.

По материалам Gizmodo.

Изображение на обложке: Jeremy Booth


Подписывайся на Эксплойт в Telegram, чтобы не пропустить новые компьютерные трюки, хитрости смартфонов и секреты безопасности в интернете.




В мире интеллектуальных технологий мы упускаем кучу вещей, если не делаем автоматизацию правильно. В Android есть приложение Tasker для автоматизации, которое теперь получает новую функцию «Правила».

В iOS уже есть мощное приложение «Горячие клавиши» для автоматизации множества задач и многого другого. Но это смартфоны, а ПК? Что ж, в Windows 10 есть похожий инструмент под названием Task Scheduler, который позволяет вам выполнять множество задач в зависимости от времени, событий и различных других условий.

Итак, в этой статье мы представим вам подробное руководство по автоматизации задач в Windows 10. Наряду с этим мы также поделились базовым руководством по PowerShell в следующем разделе.

Прежде чем двигаться вперед, позвольте мне кратко объяснить некоторые основные моменты этой статьи. Для автоматизации задач в Windows 10, Есть два основных метода, первый — это встроенный инструмент под названием Task Scheduler, который довольно прост и понятен. И следующий метод — это автоматизация с помощью PowerShell, которая немного сложна, но также многофункциональна.

1. Автоматизация задач в Windows 10 с помощью планировщика задач

Лучший способ чему-то научиться — это решать проблемы. Итак, здесь мы будем реализовать основную задачу. Например, скажем, каждый раз, когда мы включаем наш компьютер, он открывает браузер, а затем направляется на несколько интересных сайтов. Поэтому все, что нам нужно сделать, — это автоматизировать эту рутинную задачу, чтобы мы могли сэкономить время и количество кликов. Давайте начнем.

1. Нажмите клавишу Windows один раз и введите «Планировщик заданий», Откройте первый результат и закрепите его на панели задач, потому что он вам понадобится постоянно.

автоматизировать задачи на Windows 10

2. Поначалу интерфейс может показаться немного сложным, но просто следуйте моим инструкциям, и вы справитесь. Теперь, нажмите «Создать задачу» на правой панели.

"2

3. После этого укажите название вашей задачи и установите флажок «Запускать с наивысшими привилегиями», Он не будет запрашивать UAC или запрашивать разрешение администратора перед запуском задачи.

"3

4. Сейчас перейдите на вкладку «Триггеры» выше и нажмите на кнопку «Создать».

автоматизировать задачи на Windows 10

5. Здесь выберите опцию «При входе в систему» в раскрывающемся меню и нажмите кнопку «ОК». Вы также можете отложить задачу на несколько секунд, но давайте просто пока оставим ее. Как примечание, я всегда откладываю свои связанные с интернетом задачи на 30 секунд, чтобы компьютер мог подключиться к WiFi и быть готовым вовремя.

"5

6. Теперь перейдите на вкладку «Действия» и нажмите кнопку «Создать». Вот, выберите «Начать программу» из раскрывающегося меню, мы будем открывать Google Chrome.

"6

7. Затем нажмите кнопку «Обзор» и выберите Chrome с рабочего стола или любого места.

автоматизировать задачи на Windows 10

8. После этого введите ваш URL сайта в поле «Добавить аргумент», Например, вы можете напечатать okdk.ru и нажмите кнопку «ОК». В случае, если вы хотите открыть несколько сайтов сразу же просто вставьте пробел между ними и зайдите на другой сайт.

 okdk.ru google.com

автоматизировать задачи на Windows 10

  • Вы также можете добавить свой плейлист Spotify или что угодно. Просто сделайте пробел между сайтами. Chrome автоматически откроет эти веб-сайты, как только вы войдете в систему. Обратите внимание, что Вы можете просто написать доменное имя или предоставить целое HTTPS ссылка, Все работает!
 okdk.ru google.com https://open.spotify.com/playlist/37i9dQZF1DX2Ja6eBQeGaS

9. Сделав это, перейдите на вкладку «Условия» и снимите обе опции в разделе «Мощность», Это позволит ПК выполнять задачу независимо от состояния батареи или зарядки.

"9

10. Наконец, перейдите на вкладку «Настройки». Здесь нам не нужно ничего трогать, но убедитесь, что установлен флажок «Разрешить выполнение задачи по требованию», кроме того, просмотрите другие варианты, чтобы вы могли понять, что вы можете сделать с помощью планировщика задач. Теперь нажмите на кнопку «ОК».

"10

11. Вы успешно создали задачу, чтобы открыть ваши любимые веб-сайты после включения компьютера. Вы можете найдите свою задачу в «Библиотеке планировщика задач» на левой панели. Если задача не отображается, нажмите кнопку «Обновить» на панели действий, расположенной справа.

"17

12. Далее вы можете протестировать задачу вручную, работает ли правильно, нажав кнопку «Выполнить» на правой панели. Если все работает нормально, перезагрузите компьютер, и вы сможете автоматизировать серию задач в кратчайшие сроки. Наслаждайтесь!

автоматизировать задачи на Windows 10

Эта задача была для открытия сайтов в Chrome, но может быть несколько вариантов использования, основанных на вашей повседневной жизни. Например, вы можете выбрать автоматическое подключение к определенной точке Wi-Fi, создать задачу по очистке корзины через определенное количество дней, вы также можете запускать приложения Office или что угодно.

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

2. Автоматизация задач в Windows 10 с помощью PowerShell

В приведенном выше разделе мы узнали, как автоматизировать задачи с помощью планировщика задач. Но есть родной инструмент для создания сценариев в Windows 10 под названием PowerShell который довольно продвинут и универсален. Вы можете делать что-нибудь с помощью нескольких команд. Я знаю, что многие пользователи боятся видеть синий экран PowerShell, но, поверьте мне, это довольно легко. Позвольте мне просто сказать, что это не хардкорное программирование, так что не волнуйтесь.

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

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

Так что, если у вас есть небольшая задача под рукой, то Task Scheduler отлично подходит. Тем не мение, PowerShell очень динамичен и может взаимодействовать со многими программами сразу, но это довольно медленно при выполнении этих команд.

Таким образом, с одной стороны, вы получаете более быстрое выполнение, но ограниченные возможности, а с другой стороны, вы получаете универсальную поддержку, но более медленное выполнение. Тем не менее, здесь мы пройдем тот же пример.

  • Начало работы с синтаксисом PowerShell

Позвольте мне начать с примера. Ниже вы видите команду PowerShell для открытия нескольких сайтов в Chrome. Вот, Запуск процесса это команда для запуска программы а также chrome.exe это исполняемое имя программы. Очень похоже на планировщик заданий, верно? Очень просто.

Start-Process "chrome.exe" "okdk.ru google.com"

"11

Вы также можете добавить свой плейлист Spotify, любимые субреддиты или что угодно.

Start-Process "chrome.exe" "okdk.ru google.com https://www.reddit.com/r/Android 
https://open.spotify.com/playlist/37i9dQZF1DX2Ja6eBQeGaS"

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

  • Шаги для создания скрипта PowerShell

1. Откройте файл блокнота и вставьте приведенную ниже команду.

Start-Process "chrome.exe" "okdk.ru google.com https://www.reddit.com/r/Android 
https://open.spotify.com/playlist/37i9dQZF1DX2Ja6eBQeGaS"

"19

2. Вы можете изменить сайт в соответствии с вашими предпочтениями, И если вы хотите предоставить другой браузер, щелкните правой кнопкой мыши значок браузера и откройте «Свойства». В поле назначения скопируйте последнюю XXXX.exe часть и вставьте ее в файл блокнота. Таким образом, вы можете найти исполняемые имена и для других программ.

Примечание: Если это не работает, вы можете вставить весь адрес из целевого поля. Вот пример браузера Microsoft Edge. Вы можете сделать это для любой программы.

Start-Process "C:Program Files (x86)MicrosoftEdge BetaApplicationmsedge.exe" 
"okdk.ru google.com"

"14

3. Теперь перейдите в «Файл» в Блокноте и нажмите «Сохранить как». Здесь дайте имя вашему сценарию, а затем Добавляйте .ps1 расширение в конце, PS1 является расширением сценариев PowerShell. Кроме того, не забудьте сохранить имя файла в одном слове.

"20

4. Сделав это, откройте планировщик заданий и создайте новую задачу, выполнив шаги 1-5 упоминается в приведенном выше разделе. Перейдя на вкладку «Действие», выберите «Запустить программу» в раскрывающемся меню и введите powershell.exe в окне «Программа / скрипт».

"15

5. Теперь щелкните правой кнопкой мыши файл PS1 и откройте «Свойства». Здесь вы найдете путь к файлу в разделе местоположения. Скопируйте и добавьте filename.ps1 в конце. Вот как это должно выглядеть. Нам понадобится этот адрес на следующем шаге.

C:UsersBeebomDesktopbrowser.ps1

автоматизировать задачи на Windows 10

6. Замените ниже адрес с вашим адресом из вышеприведенного шага и вставьте его в поле «Аргумент». После этого нажмите кнопку «ОК».

-windowstyle Hidden -file C:UsersBeebomDesktopbrowser.ps1

"16

7. Наконец, вы закончили определение части Action с помощью скрипта PowerShell. В настоящее время, выполните те же шаги с 9 до 12 из раздела планировщика заданий. Вы можете протестировать скрипт, нажав кнопку «Выполнить». Как я объяснил выше, окно PowerShell может вызвать маленькое всплывающее окно, потому что выполнение сценария немного медленное.

Вот как вы можете создать простой сценарий в PowerShell и автоматизировать его с помощью планировщика задач. То, что я показал выше, является лишь верхушкой айсберга. Вы можете сделать намного больше, и возможности безграничны. Например, Вы можете добавить команды для запуска отдельной программы, удалить старые файлы из определенных папок, отключить обновление Windows 10 и другие службы уровня ОС, включить службы поддержки и многое другое, используя тот же файл PS1.

Вам больше не нужно возвращаться к планировщику заданий, чтобы что-то настроить, просто внесите изменения в файл PS1 с помощью блокнота, и он запустит все изменения. Круто, верно? В ближайшие дни мы поделимся некоторыми классными скриптами PowerShell для автоматизации задач в Windows 10, так что следите за обновлениями.

Сценарии Ace PowerShell и автоматизация рутинных задач в Windows 10

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

📲 Как автоматизировать рутинные действия под Windows ? Этот вопрос часто задают мне в реальной жизни, видя, как мой компьютер сам выполняет действия, будь то в играх, будь то на сайтах или других местах. Если вас интересует данная тема автоматизации в Windows и вы хотите научиться, как автоматически выполнять какие-либо действия в любом приложении под Windows, то вам сюда. Оговорюсь, это не полный гайд, а введение и основы. Поняв эти основы вы уже сможете автоматизировать до 80% всех действий в Windows или приложениях. А для дальнейшего развития навыков есть куча тематических форумов и мануалов, благо, язык Autoit очень легек в освоении.

Как вы уже поняли, сегодня будут основы по Autoit — бесплатный набор средств и язык для автоматизации выполнения задач в Microsoft Windows. Позволяет создавать скрипты автоматизации (иногда называемые макросами), способные имитировать действия пользователя. Я знаю, что некоторые люди скачивают всякие расширения и плагины для браузеров, дабы написать какие-то макросы, чтобы браузер делал действия за них. Зачем, когда есть Autoit ?

Скачивание и установка

Чтобы начать пользоваться и начать писать скрипты на Autoit нужно скачать программу-обработчик, ссылка на страницу скачивания: https://www.autoitscript.com/site/autoit/downloads/

На момент написания этой статьи версия Autoit была v3.3.14.5.

Дальше нам желательно скачать специальный текстовый редактор AutoIt Script, ссылка на скачивание установщика: https://www.autoitscript.com/site/autoit-script-editor/downloads/

Можно конечно пользоваться и NotePad++, он поддерживает синтаксис Autoit, но я предпочитаю оригинальный редактор.

Порядок установки такой:

  1. Скачиваем и устанавливаем сначала autoit-v3-setup.exe;
  2. Затем уже ставим редактор SciTE4AutoIt3.exe.

Если у вас 64-битная Windows, то выбираем «use native x64 tools by default», а если 32-битная, то оставляем как есть. Если же вы не знаете какая у вас Windows, также оставляем все как есть.

Также во время установки компилятора Autoit будет задан выбор, «run the script» и «edit the script», обязательно выбираем второй вариант, «edit the script, иначе каждый раз при открытия файла скрипта он будет запускаться, что нам не нужно.

После установки у нас в меню Пуск должен появиться пункт Autoit, заходим в него и выбираем Autoit Windows Info, открываем приложение.

Также после установки у вас в контекстном меню Windows (это то, что появляется по нажатию правой кнопки мыши) появится пункт «Создать -> Autoit V3 Script». Создаем такой файл, открываем его и попадаем в редактор.

Откройте этот пустой файл в оригинальном редакторе и увидите пару строк по умолчанию, это комментарии, все это можно удалить.

В утилите Autoit Windows Info, которую вы открыли до этого, жмем стрелку вправо до тех пор, пока не появится пункт «Mouse», который нам и будет нужен. Все остальное это для более серьезных вещей и не рассматривается в данном гайде.

Autoit Windows Info - Основы Autoit 3
Autoit Windows Info.

Основы Autoit

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

Sleep(время в миллисекундах), например, Sleep(30000) — останавливает исполнение кода на заданное время. В моем примере это 30.000 миллисекунд, что равно 30 секундам. Всегда ставим какую-нибудь задержку в самое начало кода, чтобы когда вы его запустили, у вас было время на переключение на нужное приложение и т.п.

MouseMove(x, y) — перемещение курсора мыши в заданные координаты Х и Y, измеряется в пикселях. Например,

MouseMove(150, 255) — переместит курсор в точку с координатами 150 пикселей по оси X (отступ слева) и 255 пикселей по оси Y (отступ сверху).

MouseClick(«какая кнопка», x, y, «сколько раз кликать, число») — как и впредыдущем случае перемещает курсор мыши в точку с координатами X и Y. Но также эта команда позволяет кликнуть по этим координатам, либо правой клавишей, либо левой, причем кликнуть нужное количество раз. Разберем на примере:

MouseClick(«left», 150, 255, 2) — команда кликнет 2 раза левой кнопкой мыши по точке с координатами 150 и 255 пикселей. Или:

MouseClick(«right», 150, 255, 1) — кликнет правой кнопкой мыши 1 раз по точке с координатами 150 и 255.

Резонный вопрос, а как мне понять какие координаты у точки, по которой надо кликнуть ? Для этого, в утилите Autoit Windows Info в разделе «Mouse» перетягиваем иконку курсора (1 на картинке) на нужное место и отпускаем. В поле «Position» (2) внизу увидим значения для X и Y, тогда как поле «Color» показывает цвет пикселя, на который наведен курсор мыши (в HEX формате):

Вкладка Mouse - Основы Autoit 3
Вкладка Mouse.

Важно ! Координаты X и Y отсчитываются конкретно под ваш монитор и ваше разрешение экрана. То есть, написав скрипт у себя дома, на работе он может кликать не туда куда нужно, обязательно нужно писать координаты под конкретное разрешение монитора.

Больше автоматизации, к примеру, как сделать, чтобы курсор гулял по какому-то сайту и периодически кликал по нужным местам, при этом не прописывая кучу строк MouseClick ? Для этого, как и в любом языке, есть понятие цикл. Приведу простые истины и углубляться в виды циклов не буду. Запомните это и пока хватит:

$i = 0

Do (делай)

...набор команд, любой код...

$i = $i + 1

Until (пока) $i = 5

Где $i — это переменная. Переменная пишется через знак доллара и может принимать как числовые, так и текстовые значения. Например, $abc = «техноблоггер» или $z = 25.54.

Do — инициирует начало цикла, а Until — его конец. Все что между ними будет исполняться столько раз, пока переменная $i не станет равной 5. В теле цикла (внутри Do…Until) мы видим запись

$i = $i + 1 — это счетчик, который прибавляет +1 к значению $i после каждой итерации цикла. Важно! Если этого не сделать, мы получим бесконечный цикл, который никогда не завершится и компьютер может зависнуть.

Пример:

$a = 0

Do

MouseClick("left", 150, 255, 1)
Sleep(1000)
MouseClick("left", 155, 269, 1)
Sleep(1500)
MouseClick("left", 120, 251, 1)
Sleep(3000)

$a = $a + 1

Until $a = 4

Этот скрипт будет кликать по одному разу по координатам и ожидать заданное количество времени между кликами. То есть, сначала будт клик по точке 150 — 255 пикселей, затем ждем секунду, далее клик по точке 155 — 269, ждем 1,5 секунды, и наконец клик по 120 — 251 и ждем уже 3 секунды. И эти действия будут повторены 5 раз, от 0 до 4. Можно написать $a = 1 и до $a = 5, в моем случае отсчет был от 0.

В самом начале цикл пробежал один раз и добавил +1 переменной $a, которая теперь стала равна 1: $a = 0 + 1, затем сравнил, выполнилось ли условие, что $a = 4 ? И так до тех пор, пока условие не выполнится и $a не станет равно 4.

Насчет Sleep, как я уже говорил, это просто задержка. Советую всегда ставить Sleep между конструкциями действий, например, перемещения мыши.

И последнее, операции условий (ветвления) или как хотите называйте.

If … Else (если … иначе).

If (в скобках пишутся условия или выражения) Then (тогда)
... набор строк или команд...
Else (иначе)
... набор строк или команд...
Endif (конец ветвления)

Причем, Else — необязательно, можно и без него. Пример:

If ($i = 4) Then

MouseClick("left", 150, 255, 1)

Else

MouseClick("right", 150, 255, 1)

Endif

Понятно, думаю. Если $i равно 4, то кликаем левой кнопкой мыши 1 раз по координатам 150, 255. Иначе (если $i не равно 4) кликаем правой кнопкой мыши 1 раз по координатам 150, 255.

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

В моем примере на картинке это 0xF0F4F9 (значение можно скопировать CTRL + C).

А как получить цвет пикселя непосредственно в программе автоматически ? Для этого есть несколько способов, самый простой это конструкция:

PixelGetcolor (x, y) — эта запись присваивает код цвета пикселя по координатам x,y в текстовом формате. Пример:

$x = 27
$y = 445
$i = "0xF0F4F9"

MouseMove($x, $y)

$color = PixelGetColor($x, $y)

if ($i = $color) Then

MouseClick("left", 150, 255, 1)

Endif

Разберем. В переменных $x и $y лежат координаты соответственно для X и Y, куда будем перемещаться. Переменной $color присвоим значение, которое отдаст PixelGetColor. Дальше условие, если переменная $i = переменной $color, то кликаем левой кнопкой мышки 1 раз по нужным координатам.

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

Send(«текст») — отправляет слово «текст» в то место, где на данный момент находится курсор мыши.

Send(«{DOWN}») — нажмет клавишу «Стелка Вниз» на клавиатуре. Полный список набора клавиш можете найти в интернете.

Ну про колесико мыши упомяну:

MouseWheel(«куда крутить», «сколько крутить») — крутит колесико мыши вверх или вниз нужное количество раз. Например,

MouseWheel(«up», 10) или MouseWheel(«down», 15) — прокрутит колесико (скролл) мыши 10 раз вверх или 15 раз вниз.

Запуск скрипта

Ну хорошо, мы все написали, сохранили и хотим проверить. Как запустить скрипт Autoit на исполнение? Есть два способа:

  • В редакторе нажимаем Tools -> Go (запуск), Tools -> Stop Executing (остановка);
  • В редакторе жмем F5 (запуск) и CTRL + Break (остановка).

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

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

Основы скриптов на PowerShell.

https://gbcdn.mrgcdn.ru/uploads/post/998/og_cover_image/136640dcd4ae5c224e8596715579ad95

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

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

Выключение и перезапуск

Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:

shutdown -s -t 0

Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” — получите перезагрузку. “-t” — таймер, у нас он установлен на 0 секунд, но если установить на 60 — получите выключение через 60 секунд.

Удаляем ненужное

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

get-appxpackage -name *APPNAME* | remove-appxpackage

Как вы понимаете, *APPNAME* — название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.

Управляем процессами

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

 Get-Service

или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):

Get-Service *NAME*

Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:

Stop-Service -Name *ANTIVIRUS*

Stop-Service -Name *BROWSER*

Названия для замены указаны в * *.

Переименовываем группу файлов

Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD — название общей директории, объединяющей файлы, например, отснятые за один день. Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:

$path = «$compdesktopjourneyrussia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter |
rename-item -newname {$_.name -replace ‘HGNMD’,’RUSSIA’}

В первой строке в кавычках укажите точный путь к файлам. Во второй строке — расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” — общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” — имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.

Ищем файлы

Ещё одна простая задача, реализуемая на PowerShell — поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:

Get-Childitem C:Windows*.log

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

Get-ChildItem C:Windows* -Include *.log -Recurse -Force

Это чуть более правильная и полная запись, где “Include” — указывает на искомую часть, “Recurse” — на поиск во вложенных каталогах, “Force” — поиск включает в себя системные и скрытые файлы.

Справка

Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно — обратитесь к справочной информации следующим образом:

Get-Help Services

Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:

Get-Help -Name *CMDLET*

Где вместо *CMDLET* вставьте любую интересующую команду.

Находим данные

Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью 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, @())

Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:

[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())

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

Начало карьеры: интенсив «Основы веб-разработки».

Понравилась статья? Поделить с друзьями:
  • Windows xp3 32 bit скачать торрент
  • Windows xp является преемником следующих операционных систем
  • Windows xp это соединение является недоверенным
  • Windows xp это прикладное программное обеспечение
  • Windows xp это 32 или 64 битная система