Сценарий виндовс что это

Сценарии Windows и управление системой
Составление сценариев и их использование в процессе управления 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, что позволит ограничить число ошибок из-за случайно или неверно набранных переменных;
  • пишите сценарии в текстовом редакторе. Не применяйте для этих целей текстовый процессор с последующим сохранением данных в редакторе.

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

From Wikipedia, the free encyclopedia

Windows Script File

Filename extension

.wsf

Internet media type text/xml
Developed by Microsoft
Type of format Scripting
Container for Scripts

A Windows Script File (WSF) is a file type used by the Microsoft Windows Script Host. It allows mixing the scripting languages JScript and VBScript within a single file, or other scripting languages such as Perl, Object REXX, Python, or Kixtart if installed by the user. These types of scripts may also be used to link many other external scripts together using a src parameter on the <script> tag in a manner similar to HTML. Windows Script Files have the extension ".WSF". A WSF makes reference to each script module in a very basic XML hierarchy as shown below, adhering to those standards outside the <script> tags. Literal use of «</script>» or «<script>» inside your <script> tags and similar challenges can be handled by the use of CDATA, as shown within the examples.

Error isolation[edit]

A WSF may be useful for isolating errors. Its modular nature prevents one script reference from interfering with another. Here is a WSF example with one module that produces an error and one that does not:

<?xml version="1.0" ?>
 <job id="Partially works">
   <!-- This will not work -->
   <script language="VBScript">
'    <![CDATA[
         WScript.echo 4/0 ' Oh, boy! You cannot divide by zero...
     ]]>
   </script>
   <!-- This will work... definitely... -->
   <script language="VBScript">
     <![CDATA[
         WScript.echo "Hello, Scripters!" & vbNewline & _
                      "Fantastic! It worked!"
'    ]]>
   </script>
 </job>

The first script module will produce a «divide by zero» error. Typically this would cause the script to end in the Windows Script Host but this modular method allows the script to continue and execute the second script module.

Mixed language support[edit]

A Windows Script File supports multiple languages, as described on the Windows Script Host reference. One of the features of this file format is that you may use more than one at once. This means you can have one scripting language use code from another scripting language. The most memorable example for long-time VBScript users is the use of Microsoft JScript to service a sort request for VBScript since it does not have a built-in sort function for an array of values. VBScript users may write their own sort method or borrow one from an existing object like an ADO (ActiveX Data Objects) Recordset or a .NET (.NET Framework) ArrayList, but the fastest way to sort an array is to use the method built into JScript. Here is a basic example of how that works:

<?xml version="1.0" ?>
<!-- Mixing JScript and VBScript -->
 <job id="SORT-VBScriptWithJScript">
   <script language="JScript">
     function SortVBArray(arrVBArray) {return arrVBArray.toArray().sort();}
   </script>
   <script language="VBScript">
'    <![CDATA[
     '** Fastest sort: call the Jscript sort from VBScript
     myData = "a,b,c,1,2,3,X,Y,Z,p,d,q"
     wscript.echo "Original List of values: " & vbTab & myData
     starttime = timer()
     sortedArray = SortVBArray(split(myData,","))
     endtime=timer()
     jscriptTime = round(endtime-starttime,2)
     wscript.echo "JScript sorted in " & jscriptTime & " seconds: "  & vbTab & sortedArray
'    ]]>
   </script>
 </job>

The output looks like this, sorted by ASCII code sequence:

Original List of values:        a,b,c,1,2,3,X,Y,Z,p,d,q
JScript sorted in 0 seconds:    1,2,3,X,Y,Z,a,b,c,d,p,q

Exposing constants[edit]

Another very useful feature of a WSF is that the XML wrapper can be bound to an object reference or control so you can use that object’s constants instead of having to declare them. In regular VBScript and JScript files, you would be forced to declare a constant’s value (outside those that are internal to the Windows Script Host) in order to use the constant. An example of this is shown below:

const adLockBatchOptimistic = 4
MsgBox "The value of ""adLockBatchOptimistic"" is " & _
       adLockBatchOptimistic & ".", vbInformation,"adLockBatchOptimistic"

If your object documentation only refers to the constant’s name and not the constant’s value, you would have no way of knowing the value without the help of an Integrated development environment to tell you what they equate to. By using the WSF reference declaration, you can use the constants without declaring their values. The example below enumerates the values of several common constants in the ADO (ActiveX Data Objects) Recordset.

<?xml version="1.0" ?>
<!-- WSF Example with Object Reference
Notes for this very formal example:
 CDATA is used to help the XML parser ignore 
 special characters in the content of the script.  
 The CDATA open and close must be masked 
 from VBScript by making them comments.
-->
<package>
 <job id="EnumerateConstantsADO">
  <reference object="ADODB.Recordset" />
  <script language="VBScript">
'  <![CDATA[
    dim title, str, i
    ctecArray = Array("adOpenUnspecified","adOpenForwardOnly", _
                      "adOpenKeyset","adOpenDynamic","adOpenStatic")
    title = "ADO Recordset Values for Constants"
    str = title & vbNewLine & vbNewLine
    str = str & "*CursorTypeEnum Constants*" & vbNewLine
    For i = 0 to ubound(ctecArray)
      str = str & Eval(ctecArray(i)) & vbTab & ctecArray(i) & vbNewLine
    Next
    str = str & vbNewLine
    str = str & "*LockTypeEnum Constants*" & vbNewLine
    ltecArray = Array("adLockUnspecified","adLockReadOnly", _
                      "adLockPessimistic","adLockOptimistic", _
                      "adLockBatchOptimistic")
    For i = 0 to ubound(ltecArray)
      str = str & Eval(ltecArray(i)) & vbTab & ltecArray(i) & vbNewLine
    Next
    MsgBox str, vbInformation, Title
'  ]]>
  </script>
 </job>
</package>

Running the above script from a file with a ".WSF" extension, such as one named "EnumerateConstantsADO.wsf", will produce the result shown below:

ADO Recordset Values for Constants

*CursorTypeEnum Constants*
-1      adOpenUnspecified
0       adOpenForwardOnly
1       adOpenKeyset
2       adOpenDynamic
3       adOpenStatic

*LockTypeEnum Constants*
-1      adLockUnspecified
1       adLockReadOnly
2       adLockPessimistic
3       adLockOptimistic
4       adLockBatchOptimistic

In addition, using the object reference to expose the constants makes writing the script more like writing in a standard programming language. In fact, the contents of the sample script, written in VBScript, will actually compile into a Visual Basic program and run the same way as long as that program uses the same reference to ADODB.

See also[edit]

  • Active Scripting
  • Shell script
  • HTML Application
  • Windows PowerShell

External links[edit]

  • Using Windows Script Files — From Microsoft’s website
  • Scripting Languages Available in the Script Center — From The WayBack Machine’s archive of a page from Microsoft’s website

From Wikipedia, the free encyclopedia

Windows Script File

Filename extension

.wsf

Internet media type text/xml
Developed by Microsoft
Type of format Scripting
Container for Scripts

A Windows Script File (WSF) is a file type used by the Microsoft Windows Script Host. It allows mixing the scripting languages JScript and VBScript within a single file, or other scripting languages such as Perl, Object REXX, Python, or Kixtart if installed by the user. These types of scripts may also be used to link many other external scripts together using a src parameter on the <script> tag in a manner similar to HTML. Windows Script Files have the extension ".WSF". A WSF makes reference to each script module in a very basic XML hierarchy as shown below, adhering to those standards outside the <script> tags. Literal use of «</script>» or «<script>» inside your <script> tags and similar challenges can be handled by the use of CDATA, as shown within the examples.

Error isolation[edit]

A WSF may be useful for isolating errors. Its modular nature prevents one script reference from interfering with another. Here is a WSF example with one module that produces an error and one that does not:

<?xml version="1.0" ?>
 <job id="Partially works">
   <!-- This will not work -->
   <script language="VBScript">
'    <![CDATA[
         WScript.echo 4/0 ' Oh, boy! You cannot divide by zero...
     ]]>
   </script>
   <!-- This will work... definitely... -->
   <script language="VBScript">
     <![CDATA[
         WScript.echo "Hello, Scripters!" & vbNewline & _
                      "Fantastic! It worked!"
'    ]]>
   </script>
 </job>

The first script module will produce a «divide by zero» error. Typically this would cause the script to end in the Windows Script Host but this modular method allows the script to continue and execute the second script module.

Mixed language support[edit]

A Windows Script File supports multiple languages, as described on the Windows Script Host reference. One of the features of this file format is that you may use more than one at once. This means you can have one scripting language use code from another scripting language. The most memorable example for long-time VBScript users is the use of Microsoft JScript to service a sort request for VBScript since it does not have a built-in sort function for an array of values. VBScript users may write their own sort method or borrow one from an existing object like an ADO (ActiveX Data Objects) Recordset or a .NET (.NET Framework) ArrayList, but the fastest way to sort an array is to use the method built into JScript. Here is a basic example of how that works:

<?xml version="1.0" ?>
<!-- Mixing JScript and VBScript -->
 <job id="SORT-VBScriptWithJScript">
   <script language="JScript">
     function SortVBArray(arrVBArray) {return arrVBArray.toArray().sort();}
   </script>
   <script language="VBScript">
'    <![CDATA[
     '** Fastest sort: call the Jscript sort from VBScript
     myData = "a,b,c,1,2,3,X,Y,Z,p,d,q"
     wscript.echo "Original List of values: " & vbTab & myData
     starttime = timer()
     sortedArray = SortVBArray(split(myData,","))
     endtime=timer()
     jscriptTime = round(endtime-starttime,2)
     wscript.echo "JScript sorted in " & jscriptTime & " seconds: "  & vbTab & sortedArray
'    ]]>
   </script>
 </job>

The output looks like this, sorted by ASCII code sequence:

Original List of values:        a,b,c,1,2,3,X,Y,Z,p,d,q
JScript sorted in 0 seconds:    1,2,3,X,Y,Z,a,b,c,d,p,q

Exposing constants[edit]

Another very useful feature of a WSF is that the XML wrapper can be bound to an object reference or control so you can use that object’s constants instead of having to declare them. In regular VBScript and JScript files, you would be forced to declare a constant’s value (outside those that are internal to the Windows Script Host) in order to use the constant. An example of this is shown below:

const adLockBatchOptimistic = 4
MsgBox "The value of ""adLockBatchOptimistic"" is " & _
       adLockBatchOptimistic & ".", vbInformation,"adLockBatchOptimistic"

If your object documentation only refers to the constant’s name and not the constant’s value, you would have no way of knowing the value without the help of an Integrated development environment to tell you what they equate to. By using the WSF reference declaration, you can use the constants without declaring their values. The example below enumerates the values of several common constants in the ADO (ActiveX Data Objects) Recordset.

<?xml version="1.0" ?>
<!-- WSF Example with Object Reference
Notes for this very formal example:
 CDATA is used to help the XML parser ignore 
 special characters in the content of the script.  
 The CDATA open and close must be masked 
 from VBScript by making them comments.
-->
<package>
 <job id="EnumerateConstantsADO">
  <reference object="ADODB.Recordset" />
  <script language="VBScript">
'  <![CDATA[
    dim title, str, i
    ctecArray = Array("adOpenUnspecified","adOpenForwardOnly", _
                      "adOpenKeyset","adOpenDynamic","adOpenStatic")
    title = "ADO Recordset Values for Constants"
    str = title & vbNewLine & vbNewLine
    str = str & "*CursorTypeEnum Constants*" & vbNewLine
    For i = 0 to ubound(ctecArray)
      str = str & Eval(ctecArray(i)) & vbTab & ctecArray(i) & vbNewLine
    Next
    str = str & vbNewLine
    str = str & "*LockTypeEnum Constants*" & vbNewLine
    ltecArray = Array("adLockUnspecified","adLockReadOnly", _
                      "adLockPessimistic","adLockOptimistic", _
                      "adLockBatchOptimistic")
    For i = 0 to ubound(ltecArray)
      str = str & Eval(ltecArray(i)) & vbTab & ltecArray(i) & vbNewLine
    Next
    MsgBox str, vbInformation, Title
'  ]]>
  </script>
 </job>
</package>

Running the above script from a file with a ".WSF" extension, such as one named "EnumerateConstantsADO.wsf", will produce the result shown below:

ADO Recordset Values for Constants

*CursorTypeEnum Constants*
-1      adOpenUnspecified
0       adOpenForwardOnly
1       adOpenKeyset
2       adOpenDynamic
3       adOpenStatic

*LockTypeEnum Constants*
-1      adLockUnspecified
1       adLockReadOnly
2       adLockPessimistic
3       adLockOptimistic
4       adLockBatchOptimistic

In addition, using the object reference to expose the constants makes writing the script more like writing in a standard programming language. In fact, the contents of the sample script, written in VBScript, will actually compile into a Visual Basic program and run the same way as long as that program uses the same reference to ADODB.

See also[edit]

  • Active Scripting
  • Shell script
  • HTML Application
  • Windows PowerShell

External links[edit]

  • Using Windows Script Files — From Microsoft’s website
  • Scripting Languages Available in the Script Center — From The WayBack Machine’s archive of a page from Microsoft’s website

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

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

Откройте окно PowerShell от имени администратора и используйте эту команду для удаления определенного приложения:

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

 get-appxpackage -name *BingFinance* | remove-appxpackage get-appxpackage -name *BingNews* | remove-appxpackage get-appxpackage -name *BingSports* | remove-appxpackage 

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

3. Переименуйте пакет файлов

Итак, вы только что загрузили альбом фотографий на свой компьютер? И все они помечены по какому-либо соглашению об именах, которое ваша камера использует по умолчанию? Не было бы удобно, если бы вы могли прикрепить ключевое слово, которое вы можете искать позже?

Простой скрипт PowerShell может сделать именно это. Введите следующее для массового переименования файлов:

 $path = "$homedesktopmake use ofholidaysnaps" $filter = '*.jpg' get-childitem -path $path -filter $filter | rename-item -newname {$_.name -replace 'IMG','HOLIDAY2016'} 

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

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

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

Написание сценариев с помощью AutoHotKey

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

Прежде чем мы начнем собирать любые удобные скрипты AutoHotKey, вам необходимо скачать программное обеспечение здесь . Установите пакет, а затем откройте программу. Чтобы начать работу над новым сценарием, просто щелкните правой кнопкой мыши на рабочем столе и выберите « Создать» > « AutoHotKey Script» . Переименуйте файл, затем откройте его с помощью Блокнота или аналогичного текстового редактора.

4. Откройте папку в одно мгновение

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

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

 #^d::Run "C://Users/Brad/Downloads" return 

Чтобы этот код работал, вам нужно заменить «Брэд» своим именем пользователя Windows. Если вы новичок в AutoHotKey и этот скрипт выглядит как бред, не беспокойтесь - он более простой, чем вы думаете.

В первой части текста указывается комбинация кнопок, которую пользователь должен будет использовать для выполнения скрипта, в нашем случае клавиша Windows ( # ), клавиша Shift ( ^ ) и клавиша D. Этот ярлык связан с командой Run, которую мы пытаемся выполнить парой двоеточий.

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

В Windows 10 представлены виртуальные рабочие столы виртуальные рабочие виртуальные рабочие Виртуальные рабочие , полезный способ настройки различных сред для различных задач. Эта функциональность облегчает организацию вашего рабочего пространства. Однако переключение между различными рабочими столами может быть немного более громоздким, чем простая Alt-Tab.

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

6. Получите общесистемную функцию автозамены

Автозамена не идеальна, но она может быть очень полезна, если вы склонны к случайной орфографической ошибке. Некоторые мобильные операционные системы, такие как iOS, предоставляют функцию автозамены независимо от того, какое приложение вы используете. Вы можете получить такую ​​же помощь на ПК, внедрив скрипт AutoHotKey.

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

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

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

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

Следующие шаги в сценарии

Интернет дает нам доступ к целому ряду сценариев. создать разработанные другими, что мы можем выбирать. Это здорово, но наиболее полезные сценарии - это те, которые вы сами создаете.

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

Сценарии, которые вы найдете в Интернете, безусловно, сэкономят ваше время и усилия. Однако, если вы потратите время на то, чтобы по-настоящему освоить такие инструменты, как PowerShell и AutoHotKey, вы можете быть удивлены тем, что вы можете придумать.

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

Составление сценариев и их использование в процессе управления 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<x+1 = TRUE (они необязательно должны быть написаны заглавными буквами, просто так легче читать сценарий). Булевы данные часто бывают нужны при тестировании сценария.

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

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

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

Манипулировать данными можно с помощью операторов (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, что позволит ограничить число ошибок из-за случайно или неверно набранных переменных;
  • пишите сценарии в текстовом редакторе. Не применяйте для этих целей текстовый процессор с последующим сохранением данных в редакторе.

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

В Windows 10 PowerShell — это инструмент, предназначенный для запуска команд и сценариев для изменения настроек, автоматизации задач и других действий. В некотором смысле это похоже на командную строку. Однако PowerShell — это более функциональный интерфейс командной строки (CLI), который предлагает более обширный набор инструментов, а также большую гибкость и контроль. Кроме того, в отличие от командной строки, PowerShell доступен на разных платформах, включая Windows, macOS и Linux.

Сценарий — это набор инструкций, сохраненных в текстовом файле (со специальным расширением «.ps1»), которые PowerShell понимает и последовательно выполняет для выполнения различных действий.

Единственное предостережение заключается в том, что протокол безопасности по умолчанию всегда блокирует запуск скриптов на вашем компьютере. Это означает, что при двойном щелчке по файлу «.ps1» в Windows 10 ничего не произойдет, и если вы попытаетесь запустить скрипт в PowerShell, вы увидите «невозможно загрузить, потому что запуск скриптов отключен в этой системе». сообщение об ошибке. Однако запуск скриптов на ноутбуке или настольном компьютере невозможен. Вам нужно только включить правильную политику выполнения.

В этом руководстве по Windows 10 мы покажем вам, как успешно написать и запустить ваш первый файл сценария в PowerShell с помощью Visual Studio Code, Блокнота и консоли интегрированной среды сценариев PowerShell (ISE).

Вы можете создавать файлы сценариев PowerShell, используя практически любой текстовый редактор или устаревшую консоль ISE. Однако предпочтительным вариантом (спасибо, @JotaKa, за совет) для написания скриптов является использование редактора кода Visual Studio с расширением PowerShell.

Создайте скрипт с помощью Visual Studio Code

Visual Studio Code (VS Code) — это бесплатный и расширяемый кроссплатформенный редактор кода, позволяющий редактировать практически любой язык программирования. А при добавлении расширения PowerShell вы получаете возможность интерактивного редактирования сценариев даже с поддержкой IntelliSense (дополнение кода).

Приложение PowerShell ISE по-прежнему будет доступно, но Visual Studio Code с расширением PowerShell станет новым интерфейсом по умолчанию. Кроме того, учтите, что устаревший опыт не получит никаких новых функций и не поддерживает выпуски PowerShell 7 или более поздних версий.

Установите код Visual Studio

Чтобы установить Visual Basic Code в Windows 10, выполните следующие действия:

  1. Открыть страницу загрузки Visual Studio.
  2. Нажмите кнопку Windows, чтобы загрузить программу установки.

    Загрузка кода Visual Studio

  3. Дважды щелкните программу установки, чтобы начать процесс установки.
  4. Подтвердите условия соглашения.
  5. Нажмите кнопку «Далее».

    Настройка VS-кода

  6. Нажмите кнопку Далее еще раз.
  7. Нажмите кнопку Далее еще раз.
  8. При необходимости подтвердите дополнительные задачи.

    Дополнительные настройки кода Visual Studio

  9. Нажмите кнопку «Далее».
  10. Нажмите кнопку Установить.
  11. Нажмите кнопку Готово.

Выполнив эти шаги, вы можете продолжить установку расширения PowerShell.

Установите расширение PowerShell

Чтобы установить расширение PowerShell в VS Code, выполните следующие действия:

  1. Откройте код VS.
  2. Перейдите на вкладку «Расширения» (Ctrl + Shift + X) на левой панели.
  3. Найдите PowerShell и выберите лучший результат.
  4. Нажмите кнопку Установить.

    VS Code устанавливает PowerShell

  5. Нажмите кнопку «Доверять рабочей области и установить».

После выполнения этих шагов вы можете приступить к написанию сценариев PowerShell с помощью Visual Studio Code в Windows 10.

Создайте сценарий PowerShell с помощью кода Visual Studio.

Чтобы создать сценарий с помощью кода Visual Basic, выполните следующие действия.

  1. Откройте код VS.
  2. Щелкните меню «Файл» и выберите параметр «Новый файл».
  3. Щелкните меню «Файл» и выберите параметр «Сохранить как».

    VS Code создает новый файл ps1

  4. В поле «Имя файла» укажите имя файла с расширением .ps1 — например: first_script.ps1.
  5. Нажмите кнопку Сохранить.
  6. Напишите новый или вставьте скрипт, который хотите запустить, например:

    Write-Host «Поздравляем! Ваш первый скрипт успешно выполнен»

    Краткое примечание: приведенный выше скрипт выведет на экран фразу «Поздравляем! Ваш первый скрипт успешно выполнен».

  7. (Необязательно) Нажмите кнопку «Выполнить» в правом верхнем углу (или нажмите клавишу F5), чтобы запустить скрипт.

    Запустите скрипт PowerShell в коде Visual Studio.

  8. Щелкните меню «Файл».
  9. Нажмите «Сохранить».

Создайте сценарий PowerShell с помощью Блокнота

Чтобы создать сценарий PowerShell с помощью редактора «Блокнот» в Windows 10, выполните следующие действия:

  1. Откройте Пуск.
  2. Найдите Блокнот и щелкните верхний результат, чтобы открыть приложение.
  3. Напишите новый или вставьте свой скрипт в текстовый файл — например:

    Write-Host «Поздравляем! Ваш первый скрипт успешно выполнен»

    Скрипт блокнота PowerShell

  4. Щелкните меню «Файл».
  5. Выберите параметр «Сохранить как».
  6. Подтвердите описательное имя сценария, например, first_script.ps1.

    Файл сценария Notepad ps1 Powershell

  7. Нажмите кнопку Сохранить.

Создание сценария PowerShell с интегрированной средой сценариев

Кроме того, вы можете использовать встроенную консоль PowerShell ISE для кодирования сценариев в Windows 10.

Интегрированная среда сценариев — это расширенный инструмент, но вы можете начать работу, выполнив следующие действия:

  1. Откройте Пуск.
  2. Найдите Windows PowerShell ISE, щелкните правой кнопкой мыши верхний результат и выберите параметр «Запуск от имени администратора».
  3. Щелкните меню «Файл».
  4. Выберите параметр «Создать», чтобы создать новый пустой файл .ps1.

    PowerShell создает файл PS1 с помощью ISE

  5. Напишите новый или вставьте скрипт, который хотите запустить, например:

    Write-Host «Поздравляем! Ваш первый скрипт успешно выполнен»

    Скрипт PowerShell ISE

  6. Щелкните меню «Файл».
  7. Нажмите «Сохранить».
  8. Введите имя сценария, например, first_script.ps1.

    Сценарий PowerShell ISE Ps1 Сохранить

  9. Выберите папку для хранения файла сценария.
  10. Нажмите кнопку Сохранить.
  11. (Необязательно) Нажмите кнопку «Выполнить» в правом верхнем углу (или нажмите клавишу F5), чтобы запустить скрипт.

После выполнения этих шагов с помощью Блокнота, Visual Studio Code или PowerShell ISE сценарий будет готов к запуску, но с системными настройками по умолчанию произойдет сбой. Причина в том, что параметры PowerShell по умолчанию настроены на блокировку выполнения любого скрипта. (Единственным исключением является запуск содержимого скрипта в Visual Studio Code или PowerShell ISE.)

Как запустить файл сценария PowerShell в Windows 10

В Windows 10 для запуска файла сценария с помощью консоли PowerShell необходимо изменить политику выполнения.

Чтобы изменить политику выполнения для запуска сценариев PowerShell в Windows 10, выполните следующие действия:

  1. Откройте Пуск.
  2. Найдите PowerShell, щелкните правой кнопкой мыши верхний результат и выберите параметр «Запуск от имени администратора».
  3. Введите следующую команду, чтобы разрешить запуск скриптов, и нажмите Enter:

    Set-ExecutionPolicy RemoteSigned

  4. Введите A и нажмите Enter (если применимо).
  5. Введите следующую команду для запуска скрипта и нажмите Enter:

    & «C:PATHTOSCRIPTfirst_script.ps1»

    В приведенной выше команде измените «PATHTOSCRIPT» на расположение вашего скрипта.

    Например, эта команда запускает скрипт, хранящийся в папке «Загрузки»:

    & «C:Пользователиимя пользователяЗагрузкиfirst_script.ps1»

    Запустите скрипт PowerShell в Windows 10

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

В Windows 10 PowerShell включает четыре политики выполнения:

  • Restricted — останавливает запуск любого скрипта.
  • RemoteSigned — разрешает сценарии, созданные на устройстве, но сценарии, созданные на другом компьютере, не будут выполняться, если они не содержат подпись доверенного издателя.
  • AllSigned — будут выполняться все сценарии, но только в том случае, если их подписал доверенный издатель.
  • Unrestricted — Запускает любой скрипт без каких-либо ограничений.

Вы должны разрешать локальные сценарии только тогда, когда вам нужно запустить сценарий из надежного источника. Если вы не планируете запускать сценарии регулярно, рекомендуется восстановить настройки по умолчанию, чтобы заблокировать ненадежные сценарии, используя те же инструкции, описанные выше, но на шаге 4 используйте команду Set-ExecutionPolicy Restricted.

Дополнительные ресурсы Windows

Для получения дополнительных полезных статей, обзоров и ответов на распространенные вопросы о Windows 10 и Windows 11 посетите следующие ресурсы:

Windows 11 с поддержкой двух экранов теперь работает на Surface Duo

Становимся ближе

Windows 11 с поддержкой двух экранов теперь работает на Surface Duo

Совершив значительный прорыв, разработчик Гюстав Монс сумел заставить оба экрана работать в Windows 11 на оригинальном Surface Duo. Хотя сенсорные экраны в настоящее время не работают, они, вероятно, будут решены в ближайшие недели. Вот все, что нового появилось в этом забавном проекте GitHub.

Файл сценария Windows

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

.wsf

Разработан Microsoft
Тип формата Сценарии
Контейнер для Скрипты

А Файл сценария Windows (WSF) — это тип файла, используемый Microsoft Хост сценариев Windows. Это позволяет смешивать языки сценариев JScript и VBScript в одном файле или на других языках сценариев, таких как Perl, Объект REXX, Python, или Kixtart если установлено пользователем. Эти типы скриптов также могут использоваться для связывания многих других внешних скриптов вместе с помощью src параметр на <script> тег аналогично HTML. Файлы сценариев Windows имеют расширение ".WSF". WSF ссылается на каждый модуль сценария в очень простой XML иерархии, как показано ниже, придерживаясь этих стандартов за пределами <script> теги. Буквальное использование «</script>» или «<script>«внутри твоего <script> теги и аналогичные проблемы могут быть решены с помощью CDATA, как показано в примерах.

Изоляция ошибок

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

<?xml version="1.0" ?> <работа id =«Частично работает»>   <!-- This will not work -->   <сценарий язык =«VBScript»>'         WScript.эхо 4/0 ' О, парень! На ноль делить нельзя ...     ]]>   </script>   <!-- This will work... definitely... -->   <сценарий язык ="VBScript">     <![CDATA[         WScript.эхо "Привет, сценаристы!" & vbNewline & _                      "Фантастика! Это сработало!"'    ]]>   </script> </job>

Первый модуль сценария выдаст ошибку «делить на ноль». Обычно это приводит к тому, что сценарий заканчивается на Хост сценариев Windows но этот модульный метод позволяет сценарию продолжить и выполнить второй модуль сценария.

Поддержка смешанного языка

Файл сценария Windows поддерживает несколько языков, как описано на Хост сценариев Windows Справка. Одна из особенностей этого формата файла заключается в том, что вы можете использовать сразу несколько файлов. Это означает, что один язык сценариев может использовать код другого языка сценариев. Самый запоминающийся пример за долгие годы VBScript пользователей — использование Microsoft JScript для обслуживания запроса на сортировку для VBScript поскольку в нем нет встроенной функции сортировки для массива значений. VBScript пользователи могут написать свой собственный метод сортировки или заимствовать его из существующего объекта, такого как ADO (Объекты данных ActiveX ) Набор записей или .NET (.NET Framework ) ArrayList, но самый быстрый способ отсортировать массив — использовать метод, встроенный в JScript. Вот простой пример того, как это работает:

<?xml version="1.0" ?><!-- Mixing JScript and VBScript --> <работа id ="SORT-VBScriptWithJScript">   <сценарий язык ="JScript">     функция СортVBArray(arrVBArray) {вернуть arrVBArray.toArray().Сортировать();}   </script>   <сценарий язык =«VBScript»>'     '** Самая быстрая сортировка: вызовите сортировку Jscript из VBScript     мои данные = "a, b, c, 1,2,3, X, Y, Z, p, d, q"     wscript.эхо «Исходный список ценностей:» & vbTab & мои данные     время начала = таймер()     sortedArray = СортVBArray(Трещина(мои данные,","))     время окончания=таймер()     jscriptTime = круглый(время окончания-время начала,2)     wscript.эхо "JScript отсортирован" & jscriptTime & "секунды:"  & vbTab & sortedArray'    ]]>   </script> </job>

Результат выглядит так, отсортированный по ASCII кодовая последовательность:

Исходный список значений: a, b, c, 1,2,3, X, Y, Z, p, d, q JScript отсортирован за 0 секунд: 1,2,3, X, Y, Z, a, b, c , d, p, q

Отображение констант

Еще одна очень полезная функция WSF — это то, что оболочка XML может быть привязана к ссылке на объект или элементу управления, чтобы вы могли использовать константы этого объекта вместо того, чтобы объявлять их. В обычном VBScript и JScript файлов, вам придется объявить значение константы (за пределами тех, которые являются внутренними для Хост сценариев Windows ), чтобы использовать константу. Пример этого показан ниже:

constadLockBatchOptimistic=4MsgBox"Значение" adLockBatchOptimistic "" равно "&_adLockBatchOptimistic&".",vbInformation,"adLockBatchOptimistic"

Если ваша документация по объекту ссылается только на имя константы, а не на значение константы, у вас не будет возможности узнать значение без помощи Интегрированная среда разработки чтобы сказать вам, к чему они приравниваются. Используя объявление ссылки WSF, вы можете использовать константы без объявления их значений. В приведенном ниже примере перечислены значения нескольких общих констант в ADO (Объекты данных ActiveX ) Набор записей.

<?xml version="1.0" ?>Примечания к этому очень формальному примеру: CDATA используется, чтобы помочь синтаксическому анализатору XML игнорировать  специальные символы в содержании скрипта.  Открытие и закрытие CDATA должны быть замаскированы  из VBScript, сделав к ним комментарии.--><package> <работа id ="EnumerateConstantsADO">  <ссылка объект ="ADODB.Recordset" />  <сценарий язык =«VBScript»>'    тусклый заглавие, ул, я    ctecArray = Массив("adOpenUnspecified","adOpenForwardOnly", _                      "adOpenKeyset","adOpenDynamic","adOpenStatic")    заглавие = «Значения набора записей ADO для констант»    ул = заглавие & vbNewLine & vbNewLine    ул. = ул. & "* Константы CursorTypeEnum *" & vbNewLine    Для я = 0 к ubound(ctecArray)      ул. = ул & Eval(ctecArray(я)) & vbTab & ctecArray(я) & vbNewLine    Следующий    ул = ул. & vbNewLine    ул = ул & "* Константы LockTypeEnum *" & vbNewLine    ltecArray = Массив("adLockUnspecified","adLockReadOnly", _                      "adLockPessimistic","adLockOptimistic", _                      "adLockBatchOptimistic")    Для я = 0 к ubound(ltecArray)      ул. = ул & Eval(ltecArray(я)) & vbTab & ltecArray(я) & vbNewLine    Следующий    MsgBox ул, vbInformation, заглавие'  ]]>  </script> </job></package>

Запуск приведенного выше сценария из файла с ".WSF" расширение, например, с именем "EnumerateConstantsADO.wsf", даст результат, показанный ниже:

Значения набора записей ADO для констант * Константы CursorTypeEnum * -1 adOpenUnspecified0 adOpenForwardOnly1 adOpenKeyset2 adOpenDynamic3 adOpenStatic * Константы LockTypeEnum * -1 adLockUnspecified1 adLockReadOnly2 adOpenForwardLockPessimistic

Кроме того, использование ссылки на объект для отображения констант делает написание сценария более похожим на написание на стандартном языке программирования. Фактически, содержимое примера сценария, написанного на VBScript, фактически компилируется в Visual Basic программу и запускать таким же образом, пока эта программа использует ту же ссылку на ADODB.

Смотрите также

  • Активные сценарии
  • Сценарий оболочки
  • HTML-приложение
  • Windows PowerShell

внешние ссылки

  • Использование файлов сценариев Windows — От Microsoft интернет сайт
  • Языки сценариев, доступные в Центре сценариев — От The WayBack Machine’s архив страницы из Microsoft интернет сайт

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

Написание пакетного скрипта в Windows 10

Основы пакетного сценария

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

Есть много команд, которые вы можете использовать в своих пакетных сценариях для различных целей, однако некоторые основные команды перечислены ниже:

  • ECHO — отображает текст на экране в командной строке.
  • @ECHO OFF — скрывает отображаемый текст команды и показывает сообщение только в чистой строке.
  • TITLE — изменяет заголовок окна командной строки.
  • PAUSE — останавливает автоматическое закрытие окна командной строки после выполнения команды.

Примечание. Имя файла должно отличаться от системных файлов по умолчанию, чтобы оно не конфликтовало между собой и не создавало беспорядка. Вы также можете использовать расширение «.cmd», более ранние версии Windows не будут его запускать.

Написание простых пакетных скриптов

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

  1. Удерживая клавишу Windows, нажмите S, чтобы открыть функцию поиска. Теперь введите «Блокнот» и нажмите Enter, чтобы открыть блокнот.Открытие блокнота через функцию поиска
  2. Следуя приведенным выше основным командам, вы можете написать простой пакетный скрипт, как показано ниже: @ECHO OFF

    :: Это комментарий, который вы можете написать в пакетном скрипте.

    Название ОЧЕРЕДИ

    :: Title — это имя окна cmd.

    ECHO Hello Appuals Пользователи, это простой пакетный скрипт.

    ПАУЗА

  3. Нажмите «Файл» в верхней строке меню и нажмите «Сохранить как». Переименуйте файл и измените расширение на «.bat» и нажмите кнопку «Сохранить».Сохранение файла с расширением «.bat».
  4. Дважды щелкните файл, чтобы запустить файл пакетного сценария.

Написание разных пакетных сценариев для разных целей

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

1. Копирование / перемещение файлов с помощью пакетного скрипта

Пакетный скрипт для копирования файлов из источника в место назначения. Этот пример можно использовать для копирования или перемещения фотографий с SD-карты телефона или камеры в системную папку. Этот пакетный файл можно использовать, если вы в основном используете один и тот же источник (USB / SD-карта) для перемещения файлов. Пользователям не нужно выбирать новые файлы на USB каждый раз, когда они хотят переместить / скопировать их на ПК. Определив исходное и целевое местоположение, вы можете копировать / перемещать файлы, просто щелкнув этот пакетный скрипт.

  1. Создайте текстовый файл и добавьте в него следующий код: xcopy «E: New Folder *. Apk» «D: My Folder «Написание кода для копирования файлов.

    Примечание. Первый путь — к источнику, а второй — к месту назначения. Чтобы скопировать все файлы из исходного пути, просто удалите расширение ap .apk and, и оно скопирует все.

  2. Сохраните файл с расширением ‘.bat‘ и запустите файл.Файл скопирован с помощью пакетного скрипта.

Примечание. Вы также можете переместить файлы, изменив ‘xcopy‘ на ‘move‘ в приведенном выше коде.

2. Изменение расширения файлов в папке

Вы также можете создать командный файл для изменения расширения всех файлов в папке. Расширения могут быть изменены на аналогичный формат файла, например JPG на PNG, или это может полностью изменить работу файла. Если в текстовом файле есть код для пакетного сценария, пользователь может изменить расширение файла с .txt на .bat, как показано ниже:

  1. Сделайте текстовый файл и откройте его в блокноте. Напишите следующий код, как показано ниже: @ECHO OFF

    ren * .txt * .png

  2. Сохраните его с расширением «.bat» и дважды щелкните файл, чтобы он заработал.Изменение расширения файлов.

3. Проверка Ping для двух разных сайтов с помощью однострочной команды в пакетном скрипте

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

  1. Создав новый текстовый файл, напишите в нем следующий код: @ECHO OFF

    НАЗВАНИЕ ПРОВЕРКИ НАЗВАНИЯ

    пинг www.google.com && пинг www.appuals.com

    ПАУЗА

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

  2. Сохраните его с расширением ‘.bat and и откройте его.Проверка ping с помощью командного файла.

    Примечание. Вы можете добавить любой URL-адрес, для которого вы хотите проверить ping.

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

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

Основы Windows PowerShell для начинающих

Содержание

  1. Что способствовало появлению Windows PowerShell?
  2. Что такое Windows PowerShell?
  3. Версии Windows PowerShell
  4. Язык PowerShell
  5. Оболочка Windows PowerShell
  6. Командлеты в PowerShell
  7. Конвейер в PowerShell
  8. Фоновое исполнение заданий
  9. Удаленное управление на PowerShell
  10. Сценарии, функции и модули в Windows PowerShell
  11. Интегрированная среда сценариев Windows PowerShell (ISE)

До появления PowerShell существовали (и существуют) следующие инструменты для автоматизации и администрирования сервисов: командная строка Windows и Windows Script Host. Но у этих технологий есть недостатки.

У командной строки Windows есть и возможность выполнять какие-то административные задачи и возможность записать алгоритм действий, сохранив его в виде скрипта (bat-файла), при этом можно использовать некие элементы программирования, например, использовать переменные, условные конструкции и даже что-то вроде циклов.

Большинство программных продуктов имеет консольный интерфейс, т.е. мы можем управлять программой, используя командную строку, при этом экономя ресурсы за счет отсутствия затрат на работу графического интерфейса. Компания Microsoft для серверной операционной системы Windows Server даже выпускает редакции без графического интерфейса (Server Core, в Windows Server 2019), но всего этого недостаточно, так как возможности командной строки ограничены, т.е. написать какую-то сложную логику для автоматизации чего-либо мы не сможем, а если и сможем, то на это нам потребуется время и знания.

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

Технология Windows Script Host позволяет выполнять все административные задачи, что и командная строка, включая их автоматизацию путем написания WSH скриптов, но здесь мы уже можем использовать полноценные языки программирования (VBScript и JScript), т.е. можно реализовывать сложную логику и алгоритмы. К тому же с помощью WSH мы управляем программными продуктами через объектный интерфейс, другими словами Windows Script Host намного «круче» чем командная строка. Но данная технология также не стала тем идеальным инструментом администрирования и автоматизации этого администрирования для системных администраторов, так как Windows Script Host требовал знаний вышеперечисленных языков программирования, что для системных администраторов на самом деле лишнее. Администраторам нужно всего лишь простой инструмент администрирования с возможностью запрограммировать какие-то действия, а углубляться в объектные модели программных продуктов на языках программирования VBScript и JScript им не хочется.

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

Заметка! Курсы по SQL для начинающих на примере Microsoft SQL Server.

Что такое Windows PowerShell?

Скриншот 1

Windows PowerShell – это язык сценариев и командная оболочка Windows, которые разработаны для администрирования и конфигурирования операционных систем Windows.

PowerShell разработан на основе среды CRL и платформы .NET Framework и в отличие от командной строки, которая принимает и возвращает текст, Windows PowerShell работает с объектами. У каждого объекта в PowerShell есть свойства и методы, которые можно использовать для управления этими объектами.

В Windows PowerShell Microsoft разработала концепцию командлетов (cmdlets), которая представляет собой систему именования команд «Глагол-Существительное». Данная система позволяет системным администраторам быстрей освоить и упростить работу с PowerShell.

С помощью Windows PowerShell можно:

  • Получать доступ к файловой системе;
  • Управлять реестром;
  • Управлять службами;
  • Управлять процессами;
  • Настраивать операционную систему;
  • Устанавливать программное обеспечение;
  • Устанавливать роли и компоненты сервера;
  • Осуществлять администрирование и конфигурирование ролей и компонентов сервера;
  • Писать и использовать сценарии для автоматизации управления и администрирования;
  • Выполнять другие задачи системных администраторов.

Windows PowerShell содержит многие часто используемые утилиты и команды, запускаемые из командной строки, например ipconfig, ping и другие. Сделано это для того, чтобы облегчить переход системных администраторов с командной строки на PowerShell.

Также для удобства многие часто используемые команды и утилиты в PowerShell имеют синонимы (Alias), например cls — это синоним командлета Clear-Host, dir синоним Get-ChildItem (полный список синонимов можно посмотреть путем запуска командлета Get-Alias).

Для упрощения поиска нужной команды в PowerShell есть специальный командлет Get-Command, с помощью которого можно осуществлять поиск, как по глаголу, так и по существительному. Все команды в Windows PowerShell сгруппированы в модули (например, Hyper-V, NetTCPIP), что также упрощает поиск нужной команды.

После того как нужная команда найдена, можно посмотреть инструкцию по работе с этой командой, т.е. справку, для этих целей есть специальный командлет Get-Help, например следующая команда покажет справку по командлету Get-Command:

  
   Get-Help Get-Command

Справка в Windows PowerShell может быть краткой, детальной (параметр -Detailed), полной (параметр -Full), а также можно выводить только примеры (параметр — Examples). Следующая команда покажет только примеры использования командлета Get-Command:

  
   Get-Help Get-Command -Examples

Справка PowerShell обновляемая, т.е. ее можно обновить командой Update-Help.

Заметка! Бесплатная система мониторинга IT инфраструктуры.

Версии Windows PowerShell

Первая версия PowerShell 1.0 появилась 14 ноября 2006 года и выпускалась в виде отдельного дистрибутива, который можно было установить на следующие версии операционных систем Windows: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1 и Windows Vista.

В Windows Server 2008 PowerShell 1.0 поставлялся в виде компонента, который также нужно было устанавливать.

Начиная с Windows 7 и Windows Server 2008 R2, PowerShell поставляется как неотъемлемый компонент системы (т.е. предустановленный, устанавливать его не надо). Ниже представлена таблица соответствия версии PowerShell и версии операционной системы Windows (т.е. какая версия PowerShell по умолчанию установлена в той или иной версии Windows):

Версия PowerShell Версии Windows
PowerShell 2.0 Windows 7, Windows Server 2008 R2
PowerShell 3.0 Windows 8, Windows Server 2012
PowerShell 4.0 Windows 8.1, Windows Server 2012 R2
PowerShell 5.0 Windows 10, Windows Server 2016

С каждой новой версией PowerShell становится все более мощным инструментом администрирования, для сравнения в первой PowerShell было около 130 командлетов, а в PowerShell 5.0 их уже более 600!

Узнать текущую версию PowerShell можно с помощью свойства PSVersion встроенной переменной $PSVersionTable, например, выполните следующую команду:

  
   $PSVersionTable.PSVersion

Или запустите командлет

  
   Get-Variable -Name PSVersionTable –ValueOnly

где, значение PSVersion и будет версией PowerShell.

Язык PowerShell

PowerShell – это объектно-ориентированный скриптовой язык программирования.

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

Язык PowerShell имеет единый синтаксис написания команд и структуру именования этих команд по принципу «Глагол-Существительное», что делает данный язык интуитивно понятным как для программистов, так и для системных администраторов.

Более подробно о программировании на данном языке можете посмотреть в материале — Программирование на языке PowerShell.

Оболочка Windows PowerShell

Оболочка Windows PowerShell – это среда выполнения команд и сценариев на языке PowerShell.

Данная оболочка имеет те же возможности что и командная строка такие как: хранение истории выполнения команд, настройка внешнего вида оболочки, завершение выполнения команд сочетанием клавиш Ctrl+C, а также много других возможностей, которых нет в оболочке командной строки, например такая замечательная возможность как «подсветка синтаксиса» (появилась в PowerShell 5.0).

Запустить оболочку PowerShell можно несколькими способами, например:

  • Из командной строки, набрав PowerShell;
  • Через диалоговое окно «Выполнить» (сочетание клавиш Win+R), также набрав PowerShell;
  • В Windows 7 — Пуск->Все программы ->Стандартные ->Windows PowerShell -> Windows PowerShell;
  • В Windows 8.1 или Windows Server 2012 R2 — Пуск->Все программы ->Служебные ->Windows PowerShell;
  • В Windows 10 или Windows Server 2016 — Пуск->Все программы -> Каталог Windows PowerShell (в группе W) -> Windows PowerShell.

Пример запуска PowerShell в Windows Server 2016

Скриншот 2

Заметка! ТОП 7 популярных языков программирования.

Скриншот оболочки PowerShell в Windows Server 2016

Скриншот 3

Командлеты в PowerShell

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

Данные команды являются частью языка PowerShell. Командлеты построены по принципу «Глагол-Существительное», разделенные дефисом (-); другими словами, мы сначала указываем, что делать, а через дефис — над чем. Например, командлет Get-Help, где Get — это глагол, означающий «Получить», а Help — существительное «Помощь» в контексте PowerShell «Показать – Справку». Командлеты PowerShell возвращают результаты в виде объектов, что является одним из главных отличий от командной строки Windows, в которой команды возвращают только текст на экран.

Кроме командлетов на получение данных (Get), существуют и такие типы командлетов как:

  • Add – добавление данных;
  • Clear – очистить;
  • Enable – включить;
  • Disable – выключить;
  • New – создать;
  • Remove – удалить;
  • Set – задать;
  • Start — запустить;
  • Stop – остановить;
  • Export – экспортировать;
  • Import – импортировать;
  • И еще много других.

Полный список командлетов в Windows PowerShell можно посмотреть с помощью специального командлета Get-Command. Например, запустите его с параметром -CommandType cmdlet, в итоге на экране у Вас отобразится список командлетов.

  
   Get-Command -CommandType cmdlet

Как Вы уже поняли, у командлетов есть параметры, с помощью которых мы можем конкретизировать действия командлета. Параметры бывают обязательные и необязательные, например, у командлета Get-Command обязательных параметров нет.

Ниже на картинке представлен способ поиска командлета по глаголу (параметр Verb). В данном случае у нас отобразился список командлетов, которые умеют что-то перезапускать.

Скриншот 4

Команда

Курс по SQL для начинающих

  
   Get-Command -Verb Restart

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

Скриншот 5

Команда

  
   Get-Command -Noun Service

Если Вы не нашли нужный командлет по полному названию можете использовать маску в формате *Текст*.

Конвейер в PowerShell

Одной из главных возможностей Windows PowerShell является возможность использования конвейера при выполнении команд.

Конвейер – это передача результата работы командлета через вертикальную черту (|) другому командлету.

При этом, как Вы помните, в PowerShell командлеты работают с объектами и возвращают объекты, соответственно по конвейеру передаются также объекты.

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

Например, давайте узнаем название самого большого файла в каталоге «C:WindowsSystem32» (простой пример конвейера).

Скриншот 6

Команда

  
   Get-ChildItem -Path "C:WindowsSystem32" -File | Sort-Object length -Descending | Select-Object -First 1

Где,

  • Get-ChildItem – командлет получения объектов в указанном каталоге;
  • Sort-Object – командлет для сортировки объектов, в нашем случае мы сортируем по размеру файла (length -Descending);
  • Select-Object – командлет выбора нужных свойств объекта, в нашем случае мы выводим стандартные поля и только самый первый объект, т.е. большой файл (параметр -First 1).

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

Фоновое исполнение заданий

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

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

В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:

  • Start-Job – запустить фоновую задачу;
  • Stop-Job – остановить фоновую задачу
  • Get-Job – посмотреть список фоновых задач;
  • Receive-Job – посмотреть результат выполнения фоновой задачи;
  • Remove-Job – удалить фоновую задачу;
  • Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.

Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.

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

Запуск задачи в фоновом режиме

  
   Start-Job {Get-Service}

Смотрим на список задач запущенных в фоновом режиме

  
   Get-Job

Отображаем результат работы задания Job1

  
   Receive-Job Job1

Скриншот 7

Как видим, у нас появилась задача со статусом «Completed», т.е. она уже выполнилась (просто Get-Service отрабатывает быстро).

Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора). В результате у нас отобразился список служб.

Заметка! Рейтинг популярности антивирусов для домашних компьютеров.

Удаленное управление на PowerShell

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

Существует несколько способов удаленного управления:

  • С помощью параметра –ComputerName (есть у многих команд). Другими словами Вы передаете имя компьютера, на котором необходимо выполнить команду, в качестве параметра. Способ обладает недостатком, так как ограничивается выполнением одной команды;
  • С помощью сессий. Командлет Enter-PSSession (интерактивный сеанс). Таким способом Вы подключаетесь к удаленному компьютеру и все команды, которые Вы будете набирать в оболочке PowerShell, будут выполняться на удаленном компьютере так же, как если бы Вы набирали команды непосредственно на удаленном компьютере. Способ также обладает недостатком, так как сеанс ограничивается одним компьютером;
  • С помощью командлета Invoke-Command. С помощью данного способа можно выполнять команды или сценарии как на одном компьютере, так и на нескольких.

Например, чтобы подключиться к удаленному компьютеру (в примере ниже ServerName) интерактивным сеансом выполните следующую команду:

  
   Enter-PSSession ServerName

Сценарии, функции и модули в Windows PowerShell

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

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

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

Важно!

По умолчанию выполнение сценариев в Windows запрещено! Для того чтобы посмотреть политику выполнения сценариев выполните командлет Get-ExecutionPolicy. В результате он вернет действующую политику, например:

  • Restricted – блокируется выполнение любых сценариев (значение по умолчанию);
  • AllSigned – разрешено выполнение сценариев, которые имеют цифровую подпись;
  • RemoteSigned – разрешено выполнение локальных сценариев, все скачанные сценарии должны иметь цифровую подпись;
  • Unrestricted — разрешено выполнение любых сценариев (не рекомендуется, так как небезопасно!).

Для разрешения выполнения сценариев необходимо использовать командлет Set-ExecutionPolicy с одним из вышеперечисленных параметров.

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

  
   Set-ExecutionPolicy RemoteSigned

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

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

Для этого необходимо указать ключевое слово Function и затем в фигурных скобках {} написать алгоритм работы этой функции, т.е. набор команд (например, какая-нибудь часто используемая процедура: создать пользователя с определенными правами, очистить определенные каталоги и так далее). Потом необходимо сохранить все это в сценарий, но только уже с расширением .psm1, так как этот файл будет являться уже модулем.

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

  
   Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

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

Интегрированная среда сценариев Windows PowerShell (ISE)

Для того чтобы было удобно писать сценарии, функции и соответственно модули, компания Microsoft разработала специальную графическую программу Integrated Scripting Environment.

Integrated Scripting Environment (ISE) – интегрированная среда сценариев.

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

Запустить ее можно следующим образом:

  • В Windows 7 — Пуск->Все программы ->Стандартные ->Windows PowerShell -> Windows PowerShell ISE;
  • В Windows 10 или Windows Server 2016 — Пуск->Все программы -> Каталог Windows PowerShell (в группе W) -> Windows PowerShell ISE.

Примечание! ISE не будет работать на системе Windows Server, установленной в варианте Server Core.

Скриншот интегрированной среды сценариев PowerShell (ISE) в Windows Server 2016

Скриншот 8

Заметка! ТОП 5 популярных систем управления базами данных (СУБД).

На этом у меня все, надеюсь, материал был Вам полезен! Удачи!

Понравилась статья? Поделить с друзьями:
  • Сценарий викторины осенний калейдоскоп
  • Сценарий виндовс тихая установка
  • Сценарий викторины народы россии
  • Сценарий виндовс расширение
  • Сценарий викторины моя беларусь