Написание и запуск сценариев в интегрированной среде сценариев Windows PowerShell — PowerShell
- Чтение занимает 4 мин
В этой статье
В этой статье описано как создавать, редактировать, выполнять и сохранять скрипты в области скриптов.
Создание и выполнение сценариев
В области скриптов можно открывать и редактировать файлы Windows PowerShell. Сейчас нас интересуют следующие типы файлов Windows PowerShell: файлы скриптов (.ps1
), файлы данных скриптов (.psd1
) и файлы модулей скриптов (.psm1
). Эти типы файлов имеют цветовую подсветку синтаксиса в редакторе области сценариев. Другие стандартные файлы, которые можно открыть в области сценариев, — это файлы конфигурации (.
), XML-файлы и текстовые файлы.
Примечание
Политика выполнения Windows PowerShell определяет, можно ли выполнять сценарии, загружать профили Windows PowerShell и файлы конфигурации. Политика выполнения по умолчанию, Restricted, запрещает выполнение сценариев и блокирует загрузку профилей. Чтобы изменить эту политику выполнения и разрешить загрузку и использование профилей, см. описание Set-ExecutionPolicy и about_Signing.
Создание файла сценария
Нажмите кнопку Создать на панели инструментов или откройте меню Файл и выберите Создать . Созданный файл появится в новой вкладке, расположенной под текущей вкладкой PowerShell. Помните, что вкладки PowerShell отображаются, только если их несколько. По умолчанию создается файл сценария (
), но его можно сохранить с новым именем и расширением. На одной вкладке PowerShell может быть создано несколько файлов сценариев.
Открытие существующего сценария
Нажмите кнопку Открыть. .. на панели инструментов или откройте меню Файл и выберите пункт Открыть . В диалоговом окне Открыть выберите файл, который требуется открыть. Открытый файл появится в новой вкладке.
Закрытие вкладки сценария
Если файл был изменен с момента последнего сохранения, будет предложено сохранить или отменить изменения.
Отображение пути к файлу
На вкладке файла наведите курсор на его имя. Появится подсказка с полным путем к файлу сценария.
Запуск сценария
Нажмите кнопку Выполнить сценарий на панели инструментов или откройте меню Файл и выберите пункт Выполнить .
Выполнение части сценария
- Выберите часть сценария в области сценариев.
- Нажмите кнопку Выполнить выделенный фрагмент на панели инструментов или откройте меню Файл и выберите пункт Выполнить выделенный фрагмент .
Остановка выполняемого сценария
Есть несколько способов остановить выполняемый скрипт.
- На панели инструментов щелкните Остановить операцию .
- Нажмите CTRL+BREAK.
- В меню Файл выберите Остановить операцию .
Нажатие клавиш CTRL+C также сработает, если нет выделенного текста. В противном случае нажатие клавиш
Написание и редактирование текста в области сценариев
В области скриптов текст можно копировать, вырезать, вставлять, искать и заменять. Также можно отменить и повторить последнее выполненное действие. Для этого используются те же клавиши, как и во всех других приложениях Windows.
Ввод текста в области сценариев
- Установите курсор в область сценариев, щелкнув кнопкой мыши любую ее часть или выбрав пункт Перейти в область сценариев в меню Вид .
- Создайте сценарий. Цветовая подсветка синтаксиса и заполнение нажатием клавиши TAB обеспечивают более широкие возможности для редактирования в интегрированной среде скриптов Windows PowerShell.
- Подробную информацию о заполнении нажатием клавиши TAB, помогающем при вводе кода, см. в статье How to Use Tab Completion in the Script Pane and Console Pane (Использование заполнения нажатием клавиши TAB в областях сценариев и консоли).
Поиск текста в области сценариев
- Чтобы найти текст в любой части скрипта, нажмите клавиши CTRL+F или выберите Find in Script (Найти в сценарии) в меню Edit (Правка).
- Чтобы найти текст после курсора, нажмите клавишу F3 или выберите Найти следующее в сценарии в меню Правка .
- Чтобы найти текст до курсора, нажмите клавиши SHIFT+F3 или выберите Find Previous in Script (Найти предыдущее в сценарии) в меню Edit (Правка).
Поиск и замена текста в области сценариев
Нажмите клавиши CRTL+H или в меню Edit (Правка) выберите Replace in Script (Заменить в сценарии). Введите текст, который нужно найти, и замещающий текст, затем нажмите клавишу ВВОД.
Переход к определенной строке текста в области сценариев
В области сценариев нажмите клавиши CTRL+G или выберите Go to Line
Введите номер строки.
Копирование текста в области сценариев
В области сценариев выделите текст, который требуется скопировать.
Нажмите клавиши CTRL+C, щелкните значок Copy (Копировать) на панели инструментов или выберите Copy (Копировать) в меню Edit (Правка).
Вырезание текста в области сценариев
- В области сценариев выделите текст, который требуется вырезать.
- Нажмите клавиши CTRL+X, щелкните значок
Вставка текста в области сценариев
Нажмите клавиши CTRL+V, щелкните значок Paste (Вставить) на панели инструментов или выберите Paste (Вставить) в меню Edit (Правка).
Отмена действия в области сценариев
Нажмите клавиши CTRL+Z, щелкните значок Undo на панели инструментов или выберите Отменить в меню Правка .
Повторное выполнение действия в области сценариев
Нажмите клавиши CTRL+Y, щелкните значок Повторить на панели инструментов или выберите
Сохранение сценария
Звездочка рядом с именем скрипта обозначает, что файл не был сохранен после изменения. После сохранения звездочка исчезает.
Сохранение сценария
Нажмите клавиши CTRL+S, щелкните значок Сохранить на панели инструментов или выберите Сохранить в меню Файл .
Сохранение сценария с определенным именем
- В меню Файл выберите команду Сохранить как . Появится диалоговое окно Сохранить как .
- В поле Имя файла введите имя файла.
- В поле Тип файла выберите тип файла. Например, в поле Тип сохраняемого файла выберите «Скрипты PowerShell (
*.ps1
)». - Выберите команду Сохранить .
Сохранение сценария в кодировке ASCII
По умолчанию интегрированная среда сценариев Windows PowerShell сохраняет новые файлы сценариев (. ps1
), файлы данных сценариев (.psd1
) и файлы модулей сценариев (.psm1
) в кодировке Юникод (BigEndianUnicode). Чтобы сохранить сценарий в другой кодировке, например ASCII (ANSI), используйте методы Save или SaveAs объекта $psISE.CurrentFile.
Следующая команда сохраняет новый сценарий в кодировке ASCII и с именем MyScript.ps1:
$psISE.CurrentFile.SaveAs("MyScript.ps1", [System.Text.Encoding]::ASCII)
Следующая команда заменяет текущий файл сценария на файл с таким же именем, но в кодировке ASCII:
$psISE.CurrentFile.Save([System.Text.Encoding]::ASCII)
Следующая команда возвращает кодировку текущего файла:
$psISE.CurrentFile.encoding
Интегрированная среда скриптов Windows PowerShell поддерживает следующие параметры кодировки: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8 и Default. Значение параметра Default зависит от системы.
Интегрированная среда скриптов Windows PowerShell не изменяет кодировку файлов скриптов при использовании команд «Сохранить» или «Сохранить как».
См. также:
Первые шаги для пауэршельшиков / Хабр
Приди ко мне брате в Консоль!
— Админ Долгорукий.
Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко.
В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.
Конечно же, продвинутые пользователи найдут множество способов использования этого восхитительного синего окошка.
Задача этой статьи проста — показать вам малую долю возможностей PS и дать вам концептуальное понимание предмета. В действительности документации по предмету написано несметное количество, так что я не стремлюсь охватить всё. Я так же ознакомлю вас с набором утилит, которые позволят не вылезать из PS в принципе.
Что представляет собой PS? Это интерпретатор командной строки. Вы вводите необходимые команды, на экране отображается результат их выполнения. Всё просто. Всё было так со времён доса и старого доброго Юникса.
Есть два основных отличия от предшественников, которые качественно выделяют PS среди других интерпретаторов.
- Очень хорошая интеграция с Microsoft .NET Framework. Это даёт вам возможность вплетать мощные программистские решения в свои команды и скрипты.
- Все значения, возвращаемые вам в терминал являются объектами, с которыми можно работать как с объектами, а не просто набором строк. Это позволяет вам создавать неимоверно мощные программные скрипты.
Приступая к работе
Если вы используете Windows 7 или 2008 то PS вам уже доступен. Для пользователей других версий Windows — добро пожаловать на сайт Майкрософт.
После установки вы можете запустить консоль и настроить её по своему вкусу, нажав на иконку в заголовке окна. Вы можете выбрать шрифт и изменить сам размер окна.
После этого, предпринимайте робкие шаги по выполнению первых команд. Для начала наберите
dir
и вы получите список папок в текущем каталоге. Приятным моментом для любителей Юникса
будет тот факт, что команда
ls
работает так же хорошо, как и dir. В PS существует система назначения алиасов на различные команды. В действительности, то что вы сейчас сделали — это выполнили командлет (так в PS называются команды, встроенные в сам PS) Get-ChildItem. Вы можете попробовать просто набрать Get-ChildItem и получить тот же результат, что и в двух предыдущих командах. Для того, чтобы вы быстро ознакомились со списком всех алиасов наберите
ls Alias:\
И так, что-то произошло. Вы начали кое-что понимать. Сейчас я буду раскладывать всю магию по кусочкам.
Первое. Командлеты в оригинальной нотации PS имеют следующую систему именования — Глагол-Объект. Это позволяет вам лучше понимать, что можно ожидать в результате выполнения того или иного командлета. Например,
Get-Process # Получить список процессов
Remove-Item # Удалить что-то
Get-Help # получить справку по чему-то
Set-Alias # Создать новый алиас
New-Item # Создать новый объект (Объектом может быть всё что угодно, например, файл)
Далее, в PS достаточно много очевидных вещей находится в непривычных для виндузятника местах. В частности, вы можете посмотреть, что за диски есть в вашей системе, набрав команду
Get-PSDrive
И в ответ вы получаете намного более интересный список дисков в вашей системе, нежели тот, что вы видите в «Моём Компьютере»
Name Used (GB) Free (GB) Provider Root ---- --------- --------- -------- ---- Alias Alias C 16. 56 63.44 FileSystem C:\ cert Certificate \ D .11 53.92 FileSystem D:\ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan
На диске Alias вы можете увидеть список всех алиясов в системе. Виртуальный диск Variable: хранит в себе все переменные, которые вы можете использовать в данной сессии. На диске Env — лежат переменные операционной системы. Диски HKCU и HKLM являются обёрткой для работы с соответствующими ветками реестра.
Давайте углубимся. Набирайте
Set-Location HKLM: # Или, если вы из людей подосёвее, набирайте cd HKLM:
Ну и как вам новый и невероятный способ хождения по реестру всея машины? Вы можете сделать ls по ветке реестра или перейти в нужный «каталог», набрав cd SYSTEM.
SKC VC Name Property --- -- ---- -------- 2 0 BCD00000000 {} 4 0 HARDWARE {} 1 0 SAM {} Get-ChildItem : Requested registry access is not allowed. At line:1 char:3 + ls <<<< -force + CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACHINE\SECURITY:St ring) [Get-ChildItem], SecurityException + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.Power Shell.Commands.GetChildItemCommand 35 0 SOFTWARE {} 8 0 SYSTEM {}
(Кстати, даже из под администраторского аккаунта есть доступ не ко всем объектам, о чём мой шелл меня уведомляет красными буквами).
Не бойтесь использовать команды New-Item и Remove-Item чтобы создавать и удалять нужные вам ключи в реестре. (И по традиции, я напомню вам, что играться с ключами реестра в администраторском режиме опасно)
Ну, вот вам и небольшой экскурс вглубь. Конечно же, у вас не получится создать ключ реестра так просто. Что-то пойдёт не так, как надо. Ну что же, могу сказать, что PS — это система, которая поощряет обучение в этой системе. Поэтому
Обучение тому, как правильно чему-то научиться в PowerShell
Способность наблюдать и анализировать наблюдения отличает нормального человека от психа. Ребят в Майкрософт психами не назовёшь. Они действительно понаблюдали за пользователями других командных интерпретаторов и выяснили, какая команда чаще всего используется в интерпретаторах. И той командой был великий и могучий man. (Для незнающих — попробуйте сделать — гугл man или наберите в своём баше man man)
В PS есть аналогичная команда, которая звучит как
Get-Help # хотя вы можеше использовать алиас на неё, под названием help
Насколько поразительно отвратительно ребята из Майкрософт делают документацию для пользовательских приложений, настолько хорошо они заботятся о программистах. (Неверующие могут сравнить справку системы Windows XP и 2003)
И так, выбирайте приглянувшийся вам командлет и отправляйте его в help. Если после прочтения общей справки вы ничего не поняли, то попробуйте набрать
get-help New-Item -Examples
Ключ -Examples обычно выдаёт от двух до пяти потрясающих примеров использования выбранной вами команды, с детальным их описанием.
На самом деле, одним только Гет-Хелпом, я в своё время изучил основы PS, перебирая все команды и читая к ним справку.
Если же вы захотели получить справку по какой-то функции, но не знаете, как она называется, а просто предполагаете о её существовании, то просто наберите
get-help files
В ответ на эту команду вы получите список топиков, которые содержат ключевое слово:
PS C:\> get-help Files Name Category Synopsis ---- -------- -------- FileSystem Provider Provides access to files and dire... about_profiles HelpFile Describes how to create and use a...
В нашем случая, для того, чтобы научиться работать с реестром, вы можете просто набрать
get-help Registry
В ответ вы получите длиннющее полотно, которое со всеми подробностями расскажет вам о том, как вы можете работать с реестром в PS.
К сожалению, читабельность полотна обратно пропорциональна его длине. Так что, научившись учиться, давайте обучимся тому, как сделать работу в шелле немного проще.
Маленькие, но очень полезные фишки, которые должны быть в жизни
Товарищ, смирись, ты — в командной строке. Тут безгуёво принципе. Но, если ты познаешь некоторые уловки, тебе здесь станет удобно.
И так, для тех, кто никогда не был в командной строке
- Нажатие кнопкок вверх и вниз позволяет вам прокручивать историю команд, и выбирать ранее набранные команды.
- Нажатие кнопки вправо, в конце строки, будет посимвольно перенабирать предыдущую команду.
Для тех, кто уже бывал в командных строках
- Ctrl+Home — удаляет всё, начиная с текущей позиции курсора до начала строки
- Ctrl+End — удаляет с курсора и до конца строки
- F7 — показывает окно со списком набранных команд, и позволяет выбрать одну из них.
- Для того, чтобы скопировать что-то в буфер, выделите это мышью и нажмите Enter.
- Для того, чтобы вставить строку из буфера — просто нажмите правую кнопку мыши.
Углубляемся в изучение окружения
Для того чтобы понять нижеследующие строки, нам надо будет разобраться с понятием конвейера.
Когда вы запускаете какой-либо командлет, то возвращаемые им значения преобразуются в текст и выводятся на экран. Но, это не всегда полезно. Например, если вы хотите передать возвращаемое значение одного командлета на вход другого. Для этого вам полезно будет использовать |, в народе именуемый конвейером.
Например, вы хотите отобразить на экране текст, который содержится во всех файлах формата bat в папке. Для того, чтобы выбрать файлы, выполняйте
PS C:\> ls -filter "*.bat" | Get-Content REM Dummy file for NTVDM
Команда ls -filter «*.bat» выбирает все файлы с нужным расширением, а команда Get-Content выводит их на экран (на самом деле, исходя из названия, команда просто получает содержимое объекта, а на экран он выводится по факту того, что дальше некуда)
Конвейер может сделать очень много полезного для вас. Например, решить «портянку помощи».
Get-Help Registry | Set-Content reg.txt
И весь файл помощи по реестру сохранён в текстовом файле, который вы теперь можете открыть.
Если вы действительно хотите порадоваться жизни, и понять, что PS способен на многое, то вам придётся применить свой IQ на все 100% и вообразить что-то нереальное.
ps | ls
Выглядит невероятно, а результат даёт потрясающий! Если вы хотите узнать, из какого файла появился процесс, просто пустите его конвейером на get-childitem!
В частности, я сейчас набираю текст в вордпаде:
PS C:\> ps wordpad | ls Directory: C:\Program Files\Windows NT\Accessories Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 6/28/2010 9:57 PM 4247040 wordpad.exe
Вот это меня поразило до глубины души.
Теперь можно переходить к изучению окружения
Как я уже говорил, всё что вы видите на экране не является строками, а является объектами. Например, результат выполнения команды ps возвращает нам список процессов, запущенных в системе.
Но как узнать, что же у нас в руках?
Для этого мы воспользуемся командлетом Get-Member, который откроет нам методы любого класса. Давайте узнаем, что содержится в том же самом процессе, который выдаёт нам команда ps.
ps wordpad | Get-Member
Набирайте, и смотрите на список членов класса, которые вы можете увидеть в классе System.Diagnostics.Process. Тоесть, фактически, командлет ps вернул нам массив объектов типа Process и мы можем попрограммировать их!
Давайте поглумимся над блокнотом.
PS C:\> notepad PS C:\> ps notepad Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 70 4 1148 5376 56 0. 30 3900 notepad PS C:\> ps notepad | get-member -type method TypeName: System.Diagnostics.Process Name MemberType Definition ---- ---------- ---------- BeginErrorReadLine Method System.Void BeginErrorReadLine() BeginOutputReadLine Method System.Void BeginOutputReadLine() CancelErrorRead Method System.Void CancelErrorRead() CancelOutputRead Method System.Void CancelOutputRead() Close Method System.Void Close() CloseMainWindow Method bool CloseMainWindow() CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObj... Dispose Method System.Void Dispose() Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetLifetimeService Method System. Object GetLifetimeService() GetType Method type GetType() InitializeLifetimeService Method System.Object InitializeLifetimeService() Kill Method System.Void Kill() Refresh Method System.Void Refresh() Start Method bool Start() ToString Method string ToString() WaitForExit Method bool WaitForExit(int milliseconds), Syst... WaitForInputIdle Method bool WaitForInputIdle(int milliseconds),...
Вот это неплохое количество методов, которые мы можем запустить, используя шелл. И так, как же это сделать? Просто.
(ps notepad).WaitForExit()
Если вы возьмёте результат выполнения командлета в скобки, то вы сможете обратиться к нему, как к объекту в вашей программе, прямо из командной строки.
После запуска этого метода шелл завис и ждёт у моря погоды. Нажмите пару раз Enter. Ничего не происходит. Что же, закройте открытый блокнот. Вуаля, вы снова в шелле.
Я думаю, теперь вы должны погулять свою фантазию. Попробуйте, пустите через конвейер в get-member результаты выполнения ls или других командлетов, каких только можете найти.
Если вы увидели, что в свойстве какого-то объекта лежит ещё один объект, не стесняйтесь пускать его на Get-Member
(ps notepad).StartTime | Get-Member
И так далее до бесконечности.
Задача для пытливых умов. Пролетела новость, что рефлектор станет платным. Как сделать рефлектор на чистом PS? Кстати, это не такая уж и трудная задача.
Ну, вот, мы немного разобрались с тем, как узнать, что нас окружает. Теперь, мы готовы к тому, чтобы понять ещё парочку принципов, существующих в шелле.
Переменные и объекты
И так, пару слов по поводу переменных. В PS они бывают нетипизированными:
$processList = ps
И типизированными
PS C:\> [DateTime]$x = "febbrrr" Cannot convert value "febbrrr" to type "System. DateTime". Error: "The string was not recognized as a valid DateTime. There is a unknown word starting at index 0." At line:1 char:13 + [DateTime]$x <<<< = "febbrrr" + CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException + FullyQualifiedErrorId : RuntimeException PS C:\> [DateTime]$x = "02/14/11" PS C:\> $x Monday, February 14, 2011 12:00:00 AM
И так, у нас появились переменные, и теперь мы можем присваивать им значения. В общем, всё, что вы пускали на конвейер, можно пустить и в переменную. Но, тут PS предоставляет нам одну очень интересную фитчу, которая делает его незаменимым инструментом в руках .NET разработчика.
Помните, я сказал, что в PS всё, что возвращается — это объект? Ну так вот, объект это не простой, а дотнетовый. Любой программист уже обратил внимание на тот факт, что в списке процессов мы работали с объектом из окружения CLR. Что же, мы можем запросто создать такой объект.
Давайте, попробуйте
$x = new-object System. Object
Что-же, переменную мы создали, а толку от неё — как с икспи сервака. Никакого. Давайте пофантазируем и подумаем, что мы действительно можем сделать?
C:\> $client = New-Object System.Net.WebClient C:\> $client.DownloadString("http://google.com")
А вот это уже другое дело. Только что мы из подручных средств собрали себе wget на коленке. Как вам такой поворот событий?
Что же, в этот момент можно идти в MSDN и подряд перебирать все классы, смотреть, что в них есть интересного. Всё это позволяет создавать очень гибкие скрипты.
Кстати, о скриптах
PS позволяет выполнять скрипты. Ура! Делает он это с волшебного пендаля. Неура. По умолчанию в PS запрещён запуск скриптов, которые не были подписаны цифровой подписью. Для запуска скрипта вы должны его либо подписать (для этого используйте help about_signing) либо, просто понизить уровень безопасности, и выполнить
set-executionpolicy remotesigned
обычно я делаю второе. Ибо первый вариант требует скачивания многотонных SDK и долгого колдовства. Хотя, напомню о безопасности, и скажу, что второй вариант не канает для супер-сервера-всея-руси.
После выполнения этих действий, вы будете готовы писать свой первый скрипт. Для начала, рекомендую создать для него файл:
New-Item -type file $PROFILE
Переменная $PROFILE содержит в себе адрес файла с вашим профилем в PS. Этот файл будет запускаться в тот момент, когда вы стартуете PS. Плюс заключается в том, что вы можете нашпиговать свой профиль разными мелкими и полезными скриптами, которые помогут вам автоматизировать производство.
Теперь вы можете начать редактирование своего профиля:
vim $PROFILE
(О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится текстовый редактор vim. Возможно кто-то назовёт меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращался к виму. Попробуйте и вы. Его не просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно редактировать тексты. )
Ладно, теперь повторим эту команду без того, чтобы умничать:
notepad $PROFILE
Ну, вот, например, то, что лежит у меня в профиле
$webClient = New-Object System.Net.WebClient $cred = New-Object System.Net.NetworkCredential("login", "Pass") $webClient.Proxy = New-Object System.Net.WebProxy("www.proxy.adrress", $true, $null, $cred)
Так как мы используем прокси сервер, а вэб клиент является моим любимым инструментом для работы, то я уже заготовил для себя переменную с этим клиентом, чтобы иметь возможность безболезненно подключаться к интернету и не отягощать себя вводом пароля.
Что ещё можно запихнуть в профиль?
Всё что угодно. Настройки цвета окна, ваши любимые функции и алиасы. Алиасы на ваши излюбленные программы и скрипты автоматизации…
На самом деле, я уже написал достаточно много. Вы увидели для себя кое-что новое. Я прекрасно знаю, что уровень этой статьи — для начинающих, но и продвинутые админы найдут для себя несколько интересных моментов. Моей задачей было предоставить вам возможность получить общее представление о том, что вы можете сделать.
Что же, вот, напоследок, вам задачи, над которыми можно поломать голову и решить интересные проблемы:
Написать скрипт, который сортирует изображения по папкам, исходя из их размера (для получения размера файла можно использовать дотнет объекты или ком объекты, предоставляемые эксплорером)
Для выполнения этого, вам уж точно понадобиться хорошо изучить Where-Object или Foreach-Object.
Написать простой NMAP
Что будет, если запустить команду Пинг в цикле? А теперь, возьмите выход от этой команды и пропарсите его как строку. Вам однозначно придётся прочитать мануал по -le -ge и том, как работать со строками.
Написать парсер для башорга.
Чтобы, после логина в систему, вам на выбор выдавалась цитата из лучших за последние пять лет. Тут можно использовать регэкспы, с которыми PS очень хорошо дружит.
Поиграться с переменной $host и сделать из синего экрана Матрицу!
Что ещё можно делать? Матёрые COM программисты найдут для себя отличный способ повеселиться, когда обнаружат, что new-object имеет ключ -comObject. Фактически, это открывает вам ворота к полному управлению практически любой функцией локального и удалённого компьютера.
Ещё хочу заметить, что последние версии программного обеспечения от Microsoft поддерживают работу в PowerShell. Например, есть SQL PowerShell, который поставляется с 2008 сиквелом и позволяет сделать ls по записям в любой таблице. Это даёт ещё больший простор для фантазий.
Так же, хочу заметить, что комьюнити по разработке на PS очень сильно растёт и ширится. В частности, вы можете найти скрипты, готовые для чего угодно — например, вы можете нагуглить себе способ управления ITunes через PowerShell или способ использования Google Desktop Search в PS.
Что же, мой неинтересующийся друг, надеюсь, я дал тебе что-то интересное, и ты теперь возьмёшься за покорение интерпретатора, который действительно поможет тебе упростить твою нелёгкую программерскую жизнь и даст тебе возможность автоматизировать больше и быстрее. Очень приятно, что ты прочитал мою статью. Спасибо большое, я могу продолжать конкретно описывать определённые области, если вдруг тебе станет очень интересно.
Примеры PowerShell скриптов для Windows
В админиcтрировании всегда есть место творчеству. Хочешь сделать какую-нибудь автоматизацию рутинной задачи? Пожалуйста! Нужно что-то регулярно проверять на активность? Не вопрос! Хочешь обработать какой-нибудь гигантский отчет и вывести только актуальные данные? Тоже можно. Все эти и многие другие задачи лучше всего решать при помощи скриптов, и язык PowerShell в случае с Windows — оптимальный выбор.
Что такое PowerShell и чем он хорош
Пользователи UNIX и Linux, а с какого-то мoмента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.
Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимaть и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.
Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним. PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.
[ad name=»Responbl»]
В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдaвать команды.
Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.
[ad name=»Responbl»]
Выбираем среду разработки и инструменты
Теперь давай разберемся, где удобнее всего писать код. Можно, конечно, и в «Блокноте», Notepad++ или Sublime. Но это в данном случае не самый грамотный выбор редактора. Лучше всего начинать знакомство с PowerShell, вооружившись идущим в комплекте PowerShell ISE.
PowerShell ISEЭто даже не редактор, а практически полноценная среда разработки. Здесь есть функция IntelliSense, которая позволяет просматривать перечень командлетов и их параметров, переменных, утилит и прочего. Поддерживаются сниппеты, есть возможность расширения нaбора функций за счет различных аддонов. Очень полезно и окно Commands. В нем можно составлять команды в визуальном режиме: выбираешь модуль, находишь нужный командлет и задаешь ему необходимые параметры. Получившуюся команду можно скопировать в консоль или сразу запустить на выполнение. В общем, этакий конструктор для админа. Ну и конечно, есть подсветка синтаксиса, дебаггер и многое другое.
Тем не менее у PowerShell ISE есть и достойные конкуренты. Один из них — Dell PowerGUI.
PowerGUI — это визуальное дополнение к PowerShell. Оно упрощает сборку собственных сценариев до выбора необходимых командлетов. Берешь то, что нужно для решения задачи, и перетаскиваешь части кода, пока не получишь скрипт. Одна из главных фишек PowerGUI — это Power Packs, готовые скрипты, опубликованные сообществом пользователей и выложенные в свобoдный доступ. Тут есть и простенькие команды вроде добавления пoльзователей, и сложные — к примеру, управление свитчами и виртуальными машинaми. Все их легко дополнять и модифицировать в соответствии с нуждами.
powerguiPowerShell Studio 2015 фирмы Sapien — бoлее продвинутая среда, которая рассчитана на совместную разработку одного проекта большим количеством участников. Если ты когда-нибудь имел дело с Visual Studio, то, думаю, заметишь сходство. Среди полезных фишек PowerShell Studio — панель Ribbon, поддержка удаленной отладки, а также функции компилятора, которые позволяют включить скрипты в исполняемые файлы. Есть поддержка разных версий PowerShell.
PowerShell Studio 2015Стоит упомянуть и Script Browser для Windows PowerShell ISE. Это не среда разработки, но вeсьма интересный инструмент, разработанный в Microsoft. Script Browser открывает доступ к базе готовых скриптов, которые можно использовать в качестве образцов для написания своего кода. А еще эта штука умеет анализировать код, который ты пишешь, и подсказывает, как его улучшить.
Script Browser для Windows PowerShelНесколько полезных трюков
Разобравшись с редактором, можно приступать к написанию кода. PowerShell — несложный язык, и, я думаю, ты быстро разберешься, что к чему. Команды здесь называются командлетами, и каждый из них состоит из двух частей. Сначала идeт действие, например Get, Set, Add, Invoke, Remove. Затем указывается то, на что действие направлено: Service, VM, AzureAccount, DHCPServerSetting. Каждая часть отделяется от другой дефисом. Получается, к примеру, get-process. Это, кстати, полезная команда, которая выводит список процессов. Скажем, если написать
get-process BadTh*
увидим что-то такое:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
——— ——— ——— ——— ——— ——— ——— ———
28 4 -210844 -201128 -163 25.67 2792 BadThread
Теперь можно завершить зависший процесс:
stop-process -id 2792
Хочешь посмотреть права на директорию? Сделать это помогает такой командлет:
E:>Get-Acl N:Data
Можно проcмотреть рекурсивно, правда уже чуть с более сложной логикой:
E:>Get-ChildItem N:Data -recurse | Get-Acl
Если не можешь понять, что делает какой-то командлет, напиши следующее (заменив Get-Process на название неизвестного командлета):
Get-Help -Name Get-Process
Можно также выполнить
Get-Help -Name Get-*
В этом случае будет выведен весь список возможных вариантов.
Теперь давай попробуем узнать что-нибудь о нашем домене через кoнсоль PowerShell. К примеру, давай посмотрим пользовательские аккаунты, у которых установлен неистекающий пароль:
Search-ADAccount -PasswordNeverExpires | FT Name, ObjectClass, UserPrincipalName
Кстати, к каждому полю в окошке опции учетной записи или компьютера можно обратиться и считать данные. Таким образом можно делать целые срезы. Вот, к примеру, запрос на основе данных о телефонных номерах:
Get-AdUser -Filter * -Properties OfficePhone | FT OfficePhone,UserPrincipalName
[ad name=»Responbl»]
PowerShell в сравнении с bat
Иногда задачу можно решить как старым дедовским методом, так и при помощи PowerShell. Я рекомендую не лениться и использовать PS, хотя бы просто потому, что так ты его быстрее изучишь и сможешь применять в более сложных ситуациях. К тому же ты постепeнно оценишь его синтаксис — более элегантный и консистентный. Вот несколько примеров, как вещи делались раньше и как их можно сделать при помощи PowerShell.
Следующая командная строка перезагрузит компьютер с задержкой в десять секунд:
shutdown /r /m \\SERVER1 /f /t 10
На PowerShell это будет выглядеть вот так:
Start-Sleep 10
Restart-Computer -Force -ComputerName SERVER1
Вот так через bat можно перезагрузить службу dnscache (или любую другую):
sc stop dnscache
sc start dnscache
В PowerShell это будет так:
Restart-Service dnscache
Мап диска в bat:
Net use L: \\server1\c$
И в PowerShell:
New-PSDrive -name L -psprovider FileSystem -root \\server1\c$
Да, иногда приходится печатать чуть больше букв, но читаются команды PS гораздо лучше. И это не говоря уже про разные новые возможности.
[ad name=»Responbl»]
Удаленное управление с PowerShell
В основном описанные в статье команды выполняются на том же компьютере, на котором они запущены. Проще говоря, команды для управления AD выполнять нужно на сервере, где контроллер домена и установлен, что, согласиcь, на корню рубит удобство и автоматизацию. Для выполнения команд удалeнно, что нам и требуется, надо пользоваться специальными командлетами. К пpимеру, для подключения к удаленному компьютеру и перезапуску там спулера пeчати вводи
Enter-PSSession -ComputerName SRV4
Restart-Service -Name spooler
Более подробно читай тут.
Что почитать еще
Книжек и прочих обучающих материалов по PowerShell огромное количество. Есть как справочники, так и учебные туториалы. Начать можно с сайта Microsoft, где есть неплохие видеоуроки.
В деле немало поможет и книга «Master-PowerShell» Тобиаса Велтнера. В ней автор охватывает многие понятия вроде массивов, хеш-таблиц, конвейеров, объектов, функций, обработки ошибок, регулярных выражeний и так далее. Заодно подробно рассматривается XML и разные аспекты администрирования. Увы, на русский эта книга не переведена.
Из русскоязычных мануалов по PowerShell мне попадался «Windows PowerShell 2.0. Справочник администратора» Уильяма Станека — он весьма неплох.
На «Хабрахабре» есть перевод полезной статьи Джеффери Хикса об администрировании Active Directory при помощи PowerShell.
[ad name=»Responbl»]
Итого
Как видишь, все не так сложно, как кажется на первый взгляд. Главное — четко понимать, что нужно на выходе, и на этом основании выбирать командлеты. А с удобным редактором это делaть куда легче. Доступность разнообразных заготовок может заметно упростить решение повседневных задач администрирования. Знания «пошика» прокачаешь по ходу дела, а это в работе с Windows совсем не лишнее.
Click to rate this post!
[Total: 17 Average: 3.9]7 скриптов для Windows, которые помогут сэкономить время | GeekBrains
Основы скриптов на PowerShell.
https://d2xzmw6cctk25h.cloudfront.net/post/998/og_cover_image/136640dcd4ae5c224e8596715579ad95
Если вы только недавно встали на путь программирования и ещё даже не пробовали поиграться с установленной операционной системой, то манипулирование с помощью скриптов может вызвать резонные вопросы необходимости и удобства. Однако, даже если опустить тот простой факт, что они помогают лучше понять, как функционирует ОС, в будущем при создании приложений, исполнение сценариев может оказаться крайне полезным навыком.
Для исполнения следующих скриптов мы обратимся к PowerShell. Любой системный администратор (по профессии или в душе) знает его возможности и периодически пользуется, для всех остальных это просто интерфейс командной строки или иностранное слово. На популярных ресурсах вы можете найти уйму идей, как использовать PowerShell для развлечения и дела, здесь же мы рассмотрим лишь простые скрипты, которые помогут войти в курс дела.
Выключение и перезапуск
Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:
shutdown -s -t 0
Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” — получите перезагрузку. “-t” — таймер, у нас он установлен на 0 секунд, но если установить на 60 — получите выключение через 60 секунд.
Удаляем ненужное
В различных сборках, предустановленных на компьютер или ноутбук, вы можете наткнуться на массу абсолютно ненужных пакетов приложений. Удалить их с помощью скрипта проще простого:
get-appxpackage -name *APPNAME* | remove-appxpackage
Как вы понимаете, *APPNAME* — название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.
Управляем процессами
Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:
Get-Service
или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):
Get-Service *NAME*
Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр. ). Для этого воспользуйтесь командой Stop-Service:
Stop-Service -Name *ANTIVIRUS*
Stop-Service -Name *BROWSER*
Названия для замены указаны в * *.
Переименовываем группу файлов
Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD — название общей директории, объединяющей файлы, например, отснятые за один день. Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:
$path = «$comp\desktop\journey\russia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter |
rename-item -newname {$_.name -replace ‘HGNMD’,’RUSSIA’}
В первой строке в кавычках укажите точный путь к файлам. Во второй строке — расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” — общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” — имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.
Ищем файлы
Ещё одна простая задача, реализуемая на PowerShell — поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:
Get-Childitem C:\Windows\*.log
Или чуть более сложный пример, когда поиск будет производиться ещё и в подпапках:
Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force
Это чуть более правильная и полная запись, где “Include” — указывает на искомую часть, “Recurse” — на поиск во вложенных каталогах, “Force” — поиск включает в себя системные и скрытые файлы.
Справка
Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно — обратитесь к справочной информации следующим образом:
Get-Help Services
Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:
Get-Help -Name *CMDLET*
Где вместо *CMDLET* вставьте любую интересующую команду.
Находим данные
Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью PowerShell вы можете выудить почти всю информацию о железе и комплектующих. Как вариант, вот скрипт для оценки уровня заряда аккумулятора:
Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)
Архитектура процессора удалённого компьютера:
[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())
Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:
[PSObject].Assembly.GetType(‘System.Management. Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())
На этом пока остановимся. Как вы наверное убедились, PowerShell не самый сложный, но очень полезный инструмент, который способен выполнять, как простейшие операции, так и достаточно сложные. Однако PowerShell не единственный инструмент для создания скриптов для Windows. Но об этом в следующий раз.
Начало карьеры: интенсив «Основы веб-разработки».
Как писать и как запускать скрипты PowerShell
Программа PowerShell — это альтернативная командная строка с обширной функциональностью. Многие владельцы компьютеров, которые неплохо ориентируются в системных процессах, интересуются возможностями её использования на Windows 10 и предыдущих версиях этого обеспечения, чтобы менять конкретные процессы и настройки ПК под себя.
В использовании программы PowerShell нет ничего сложного. Просто следуйте всем инструкциям из этой статьи и у вас все получится
Если вы не являетесь знатоком в подобной тематике, только начинаете изучение командных строк и действий, доступных к выполнению в них, вам будет полезно узнать ответы на главные вопросы по пользованию таким приложением. Например, как запустить Windows PowerShell ISE Windows 10 и писать, работать со скриптами.
Как открыть PowerShell?
Это можно сделать несколькими следующими способами:
- Через Пуск — вы найдёте приложение в общем списке компонентов под буквой W.
- При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
- Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
- В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
- В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.
Как писать и запускать скрипты?
Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на .ps1 — именно такое расширение имеют файлы этой системной утилиты.
Писать скрипты в самом приложении можно так:
- Запустите его.
- Нажмите на пункт «Создать».
- Или кликните на «Файл», и в появившемся списке выберите «Создать».
- Напишите все команды, которые нужно выполнить, сохраните файл.
Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.
Запустить скрипт вы сможете таким образом:
- Зайдите в PowerShell от имени администратора.
- При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
- В этом случае e: — имя жёсткого диска, где находится файл.
- Жмите Enter.
Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.
Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.
Другие вопросы по пользованию
У многих возникает вопрос, как узнать версию PowerShell? Для этого выполните следующее:
- Откройте приложение.
- Введите $PSVersionTable.
- Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
- В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.
Ещё один вопрос, на который стоит дать ответ — как удалить PowerShell? Для этого потребуются такие действия:
- Зайдите через Панель управления в меню установки и удаления программ.
- Найдите ветку Microsoft Windows
- Удалите обновление для компонента WindowsPowerShell (TM), следуйте инструкциям системы.
Теперь вы знаете всё о том, как писать и запускать скрипты PowerShell, сможете пользоваться такой командной строкой для многих операций в системе. Дополнительно вы всегда имеете возможность узнать версию этого продукта и даже частично удалить его — из-за того, что он установлен вместе с системными компонентами, полностью сделать это всё равно не получится. Посоветуем только быть аккуратным при выполнении всех подобных действий, чтобы не навредить компьютеру в целом.
Запуск скрипта PowerShell
PowerShell — это новая командная оболочка для Windows, которая по задумкам Microsoft должна вытеснить и заменить cmd. По-умолчанию, эта оболочка уже идет в составе Windows 7 и выше. Если у вас более старая операционная система или вы просто хотите скачать более свежую версию PowerShell, сделать это можно здесь: https://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx
Как запустить скрипт PowerShell?
Есть несколько различных способов запуска скрипта, ниже приведены основные:
- Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:\Scripts\test.ps1, или перейти в папку скрипта командой cd C:\Scripts и запустить его командой .\test.ps1)Оболочку можно найти и запустить множеством способов. Один из способов — через меню «Пуск». Для Windows 7 — нужно зайти во «Все программы» — «Стандартные» — «Windows PowerShell» и запустить оболочку «Windows PowerShell». Для Windows 10 — нужно найти группу на букву «W» и в ней вы найдете «Windows PowerShell».
- Запустить «Интегрированную среду сценариев Windows PowerShell ISE» — это программа — среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку «Открыть» или зайти в меню Файл — Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку «Выполнить скрипт».Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell — в меню «Пуск».
- Запустить стандартную коммандную строку и в ней написать:
powershell -file <имя_скрипта> (пример: powershell -file myscript.ps1)
Если вы раньше не запускали скрипты PowerShell, то скорее всего, вы получите сообщение: Не удается загрузить файл <имя_скрипта>, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений. Связано это с тем, что из соображений безопасности и недопущения случайного выполнения вредоносного кода, все скрипты должны быть подписаны цифровой подписью.
Как разрешить выполнение неподписанного скрипта PowerShell?
1. В оболочке PowerShell, перед тем как запускать скрипт, выполнить команду, разрешающую выполнение неподписанных скриптов для текущего сеанса оболочки:
Set-ExecutionPolicy RemoteSigned -Scope Process
2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:
powershell -executionpolicy RemoteSigned -file <имя_скрипта>
Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов PowerShell, прописанная в реестре, не будет изменена и останется прежней. Если вы хотите поменять политику безопасности выполнения скриптов «на постоянно», то используйте такой способ:
3. Разрешить запуск навсегда: запустить оболочку PowerShell от имени «Администратора», затем выполните команду:
Set-ExecutionPolicy RemoteSigned
Однако, я бы не рекомендовал такой способ, чтобы не подвергать ваш компьютер возможным угрозам, т. к. так вы разрешаете выполнение скриптов всем и всегда.
Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass — полное отключение любых запросов и предупреждений.
Как запустить скрипт PowerShell в фоновом режиме?
Для этого достаточно использовать параметр запуска -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Таким образом, чтобы запустить неподписанный скрипт в фоновом режиме, нужно выполнить команду:
powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file <имя_скрипта>
Так же можно еще при желании добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Будmте внимательны, используя такой способ.
Запуск скрипта PowerShell c параметрами
Собственно запуск нужно делать как если бы вы запускали обычную программу или bat-файл с параметрами. Например, для запуска скрипта с параметрами из командной, можно написать такую команду:
powershell -executionpolicy RemoteSigned -file <имя_скрипта> param1 param2 «еще один текстовый параметр»
В самом скрипте вы можете получить эти параметры так:
param ($var1, $var2, $var3) echo $var1, $var2, $var3
В интегрированной среде PowerShell ISE запустить скрипт с параметрами можно аналогично, используя область команд.
Как запустить скрипт PowerShell с помощью ярлыка?
Осуществить такую задачу можно двумя способами:
- Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
- Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v<версия>\ и в свойствах ярлыка в поле «Объект» дописать необходимые параметры.
Таким образом, например, чтобы запустить скрипт powershell при входе пользователя, можно просто создать ярлык, как описано во 2-м пункте и поместить его в автозагрузку. Так же, создание ярлыка одним из способов выше позволит легко запустить скрипт от имени администратора или от имени любого другого пользователя как обычную программу.
Скриптовый язык PowerShell — довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом 😉
Как писать и как запускать скрипты PowerShell
1. Написание скрипта
Скрипт PowerShell (не важно какой версии) — это текстовый файл с расширением *.ps1.
Вот пример простого Power Shell срипта (файл systemInfo.ps1):
# Retrieve WMI object for the operating system
Get-WmiObject Win32_OperatingSystem
Этот файл можно создавать и редактировать, например, в FAR Manager.
Обратите внимание, что FAR Manager хоть и может работать в консоли Power Shell, но выполняет из-под себя скрипты в окружении обычной Windows-консоли cmd. То есть, FAR Manager можно использовать только для создания и редактирования PowerShell скриптов, но не для запуска. Но прежде чем разочаровываться, прочитайте пункт 3.
2. Запуск срипта
Скрипт нужно выполнять из консоли Power Shell, а не из обычной консоли Windows. В консоли Power Shell необходимо перейти в каталог, где лежит скрипт (командами cd), и затем запустить сам скрипт, обязательно прописав перед ним символы «.\». Например, имеем путь к файлу скрипта d:\work\systemInfo.ps1. Тогда команды запуска будут выглядеть так:
d:
cd \
cd work
.\systemInfo.ps1
или так (просто указывается полный путь к скрипту):
d:\work\systemInfo.ps1
Скорее всего, при запуске скрипта появится следующая ошибка:
Не удается загрузить файл D:\work\systemInfo.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
строка:1 знак: 18
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
Ошибка появляется из-за того, что по-умолчанию в Power Shell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell.
Чтобы резрешить выполнение PowerShell скриптов, нужно создать *.bat файл, например enableScript.bat со следующим содержимым:
powershell -Command Set-ExecutionPolicy RemoteSigned
Этот *.bat файл можно выполнить в любой консоли: хоть в PowerShell, хоть в обычной cmd. После выполнения этого файла, PowerShell-скрипты станут запускаться в консоли PowerShell.
3. Запуск PowerShell-скрипта из обычной Windows-консоли cmd
Скрипт PowerShell можно выполнить и из обычной консоли Windows. Для этого можно воспользоваться командой:
Powershell -File ./systemInfo.ps1
Таким образом можно выполнять скрипты прямо из FAR Manager, и они будут работать.
Но тут есть небольшая тонкость. Параметр -File срабатывает только на локальных путях, даже если путь указан относительный «./». То есть, если *.ps1 — файл лежит на локальном диске C: или D:, то такой вызов будет работать. Но если попробовать выполнить скрипт, расположенный на доменном ресурсе, то скрипт не будет найден. Возможно, это исправят в следующих версиях PowerShell.
10 фундаментальных концепций создания сценариев PowerShell
PowerShell может сэкономить вам много времени на задачах администратора Windows, но чтобы использовать его эффективно, вам нужно понимать, как он работает. Вот ускоренный курс по основам PowerShell, чтобы вы начали.
СценарииPowerShell предлагают удобный способ автоматизации различных дел. Вот несколько ключевых концепций, которые помогут новичкам, когда они начнут разрабатывать сценарии PowerShell.
Примечание. Эта статья также доступна для загрузки в формате PDF.
1: файлы PS1
Сценарий PowerShell на самом деле не более чем простой текстовый файл. Файл содержит серию команд PowerShell, каждая из которых отображается в отдельной строке. Чтобы текстовый файл обрабатывался как сценарий PowerShell, его имя файла должно иметь расширение .PS1.
2: Разрешения на выполнение
Чтобы предотвратить выполнение вредоносных сценариев, PowerShell применяет политику выполнения. По умолчанию для политики выполнения установлено значение «Ограничено», что означает, что сценарии PowerShell не будут выполняться. Вы можете определить текущую политику выполнения с помощью следующего командлета:
Get-ExecutionPolicy
Вы можете использовать следующие политики выполнения:
- Ограничено — скрипты не запускаются.
- RemoteSigned — Сценарии, созданные локально, будут выполняться, но загруженные из Интернета — нет (если они не подписаны цифровой подписью надежного издателя).
- AllSigned — сценарии будут запускаться только в том случае, если они подписаны надежным издателем.
- Неограниченно — Сценарии будут выполняться независимо от того, откуда они пришли и подписаны ли они.
Вы можете установить политику выполнения PowerShell с помощью следующего командлета:
Set-ExecutionPolicy <имя политики>
3: Запуск сценария
В течение многих лет, если вы хотели запустить исполняемый файл из командной строки, практиковалось переходить по пути к файлу и затем вводить имя исполняемого файла. Однако этот старый метод не работает для сценариев PowerShell.
Если вы хотите выполнить сценарий PowerShell, вам обычно необходимо ввести полный путь вместе с именем файла. Например, чтобы запустить сценарий с именем SCRIPT.PS1, вы можете ввести:
C: \ Scripts \ Script.ps1
Большим исключением является то, что вы можете выполнить сценарий, просто набрав его имя, если папка, содержащая сценарий, находится на пути вашей системы. Существует также ярлык, который можно использовать, если вы уже находитесь в папке, содержащей сценарий.Вместо того, чтобы вводить полный путь к сценарию в такой ситуации, вы можете ввести. \ И имя сценария. Например, вы можете ввести:
. \ Script.ps1
4: Трубопровод
Конвейерная обработка — это термин для передачи вывода одной команды другой команде. Это позволяет второй команде воздействовать на полученный ввод. Чтобы выполнить конвейерную обработку двух команд (или командлетов), просто разделите их вертикальной чертой (|).
Чтобы помочь вам понять, как работает конвейерная обработка, представьте, что вы хотите создать список процессов, запущенных на сервере, и отсортировать этот список по идентификатору процесса.Вы можете получить список процессов с помощью командлета Get-Process, но список не будет отсортирован. Однако, если вы передаете вывод командлета в команду Sort-Object ID, список будет отсортирован. Строка используемых команд выглядит так:
Get-Process | Сортировка-Object ID
5: переменные
Хотя вы можете использовать конвейерную обработку для передачи вывода одной команды в другую команду, иногда конвейерная обработка сама по себе не может выполнить работу. Когда вы конвейерно выводите вывод команды в другую команду, этот вывод используется немедленно.Иногда вам может потребоваться сохранить вывод на некоторое время, чтобы вы могли использовать (или повторно использовать) его позже. Здесь в игру вступают переменные.
Легко представить переменную как репозиторий для хранения значения, но в PowerShell переменная может хранить полный вывод команды. Например, предположим, что вы хотите сохранить список процессов, запущенных на сервере, как переменную. Для этого вы можете использовать эту строку кода:
$ a = Get-Process
Здесь переменная называется $ a.Если вы хотите использовать переменную, просто назовите ее по имени. Например, при вводе $ a содержимое переменной печатается на экране.
Вы можете назначить переменную конечному результату нескольких команд, которые были конвейеризованы вместе. Просто заключите команды в круглые скобки. Например, чтобы отсортировать запущенные процессы по идентификатору процесса, а затем назначить вывод переменной, вы можете использовать эту команду:
$ a = (Get-Process | Идентификатор объекта сортировки)
6: символ @
Используя символ @, вы можете превратить содержимое списка в массив.Например, возьмите следующую строку кода, которая создает переменную с именем $ Procs, содержащую несколько строк текста (массив):
$ procs = @ {name = "explorer", "svchost"}
Вы также можете использовать символ @ при использовании переменной, чтобы гарантировать, что она обрабатывается как массив, а не одно значение. Например, в приведенной ниже строке кода будет запущен командлет Get-Process для переменной, которую я определил только что. При этом Windows отобразит все процессы, используемые проводником Windows и Svchost.Обратите внимание, что перед именем переменной используется символ @, а не знак доллара, который мы обычно видим используемым:
Get-Process @procs
7: Разделить
Оператор разделения разделяет текстовую строку на основе обозначенного вами символа. Например, предположим, что вы хотите разбить предложение на массив, состоящий из каждого отдельного слова в предложении. Вы можете сделать это с помощью такой команды:
"Это тест" -сплит ""
Результат будет выглядеть так:
Это
это
а
тест
8: присоединиться к
Так же, как split может разбить текстовую строку на несколько частей, оператор соединения может объединить несколько блоков текста в один.Например, эта строка создаст текстовую строку, состоящую из моего имени и фамилии:
"Brien", "Posey" - присоединиться к "»
Пробел между кавычками в конце команды указывает Windows вставить пробел между двумя текстовыми строками.
9: Точки останова
Запуск вновь созданного сценария PowerShell может иметь непредвиденные последствия, если сценарий содержит ошибки. Один из способов защитить себя — вставить точки останова в стратегические места вашего скрипта.Таким образом, вы можете убедиться, что сценарий работает должным образом, прежде чем обрабатывать все это целиком.
Самый простой способ вставить точку останова — по номеру строки. Например, чтобы вставить точку останова в 10-ю строку скрипта, вы можете использовать такую команду:
Новый-PSBreakpoint -Script C: \ Scripts \ Script.ps1 -Line 10
Вы также можете привязать точку останова к переменной. Поэтому, если вы хотите, чтобы ваш скрипт прерывался каждый раз, когда содержимое $ изменялось, вы можете использовать такую команду:
Новый-PSBreakpoint -Script C: \ scripts \ Script.ps1 -переменные a
Обратите внимание, что я не включил знак доллара после имени переменной.
В PSBreakpoint можно использовать несколько глаголов, включая New, Get, Enable, Disable и Remove.
10: Шаг
При отладке сценария иногда может потребоваться запускать сценарий построчно. Для этого вы можете использовать командлет Step-Into. Это заставит скрипт останавливаться после каждой строки независимо от того, существует ли точка останова. Когда вы закончите, вы можете использовать командлет Step-Out, чтобы остановить Windows от пошагового выполнения сценария.Однако стоит отметить, что точки останова по-прежнему обрабатываются даже после использования командлета Step-Out.
Между прочим, если ваш сценарий использует функции, вас может заинтересовать командлет Step-Over. Step-Over работает так же, как Step-Into, за исключением того, что если функция вызывается, Windows не выполняет ее. Вся функция будет работать без остановки.
Дополнительные ресурсы
Как писать и запускать сценарии в Windows PowerShell ISE — PowerShell
- 000Z» data-article-date-source=»ms.date»> 02.01.2020
- 5 минут на чтение
В этой статье
В этой статье описывается, как создавать, редактировать, запускать и сохранять сценарии на панели сценариев.
Как создавать и запускать скрипты
Файлы Windows PowerShell можно открывать и редактировать в области сценариев. Конкретные интересующие типы файлов
в Windows PowerShell есть файлы сценариев ( .ps1,
), файлы данных сценариев ( .psd1,
) и модуль сценария.
файлы ( .psm1
). Эти типы файлов имеют синтаксис, окрашенный в редакторе области сценариев. Другой общий файл
типы, которые вы можете открывать в области сценариев, — это файлы конфигурации ( .ps1xml
), файлы XML и текст
файлы.
Примечание
Политика выполнения Windows PowerShell определяет, можете ли вы запускать сценарии и загружать Windows. Профили PowerShell и файлы конфигурации. Политика выполнения по умолчанию, Restricted, предотвращает все сценарии не запускаются, и предотвращает загрузку профилей. Чтобы изменить политику выполнения, чтобы разрешить профили для загрузки и использования, см. Set-ExecutionPolicy и about_Signing.
Для создания нового файла сценария
На панели инструментов щелкните Новый или в меню Файл щелкните Новый .Созданный файл появится в
новая вкладка файла на текущей вкладке PowerShell. Помните, что вкладки PowerShell видны только
когда их больше одного. По умолчанию создается файл типа script ( .ps1
), но его можно
сохранены с новым именем и расширением. В одной оболочке PowerShell можно создать несколько файлов сценариев.
таб.
Чтобы открыть существующий сценарий
На панели инструментов щелкните Открыть или в меню Файл щелкните Открыть . В диалоговом окне Открыть выберите файл, который хотите открыть.Открытый файл появится в новой вкладке.
Чтобы закрыть вкладку скрипта
Щелкните значок Close ( X ) на вкладке файла, который вы хотите закрыть, или выберите меню File и нажмите Закройте .
Если файл был изменен с момента последнего сохранения, вам будет предложено сохранить или отменить его.
Для отображения пути к файлу
На вкладке файла укажите имя файла. Полный путь к файлу сценария отображается в всплывающая подсказка.
Для запуска сценария
На панели инструментов щелкните Выполнить сценарий или в меню Файл щелкните Выполнить .
Для запуска части сценария
- На панели сценариев выберите часть сценария.
- В меню File щелкните Run Selection или на панели инструментов нажмите Run Selection .
Чтобы остановить запущенный сценарий
Есть несколько способов остановить запущенный скрипт.
- Нажмите Остановить работу на панели инструментов
- Нажмите CTRL + ПЕРЕРЫВ
- Выберите меню File и нажмите Stop Operation .
Нажатие CTRL + C также работает, если в данный момент не выделен какой-либо текст, в котором case CTRL + C сопоставляется с функцией копирования для выделенного текста.
Как писать и редактировать текст в области скриптов
Вы можете копировать, вырезать, вставлять, находить и заменять текст в области скриптов.Вы также можете отменить и повторить последнее действие, которое вы только что выполнили. Сочетания клавиш для этих действий такие же сочетания клавиш. используется для всех приложений Windows.
Для ввода текста в область сценария
- Переместите курсор на панель сценариев, щелкнув в любом месте панели сценариев или нажав Перейти в область сценариев в меню Просмотр .
- Создайте сценарий. Подсветка синтаксиса и завершение табуляции расширяют возможности редактирования в Интегрированная среда сценариев Windows PowerShell.
- См. Раздел «Использование автозавершения табуляции на панели сценария и панели консоли». для получения дополнительных сведений об использовании функции завершения табуляции для помощи при наборе текста.
Чтобы найти текст в области скриптов
- Чтобы найти текст в любом месте, нажмите CTRL + F или в меню Изменить нажмите Найти в скрипте .
- Чтобы найти текст после курсора, нажмите F3 или в меню Изменить нажмите Найти далее в Скрипт .
- Чтобы найти текст перед курсором, нажмите SHIFT + F3 или в меню Edit , щелкните Найти предыдущее в сценарии .
Чтобы найти и заменить текст в области скрипта
Нажмите CTRL + H или в меню Edit нажмите Replace in Script . Введите текст, который вы хотите найти, и текст для замены, затем нажмите ENTER .
Переход к определенной строке текста в области сценария
На панели сценариев нажмите CTRL + G или в меню Изменить щелкните Перейти к Строка .
Введите номер строки.
Чтобы скопировать текст в области скрипта
На панели «Сценарий» выберите текст, который нужно скопировать.
Нажмите CTRL + C или на панели инструментов щелкните значок Копировать или на В меню «Правка » выберите Копировать .
Чтобы вырезать текст в области скрипта
- На панели скриптов выберите текст, который нужно вырезать.
- Нажмите CTRL + X или на панели инструментов щелкните значок Cut , или на панели Edit в меню выберите Cut .
Чтобы вставить текст в область сценария
Нажмите CTRL + V или на панели инструментов щелкните значок Вставить или на панели Изменить в меню выберите Вставить .
Отмена действия на панели скриптов
Нажмите CTRL + Z или на панели инструментов щелкните значок Отменить , или нажмите Изменить в меню нажмите Отменить .
Чтобы повторить действие в области сценариев
Нажмите CTRL + Y или на панели инструментов щелкните значок Повторить или на панели Изменить в меню выберите Повторить .
Как сохранить скрипт
Звездочка появляется рядом с именем сценария, чтобы отметить файл, который не сохранялся с момента его сохранения. измененный. Звездочка исчезнет при сохранении файла.
Чтобы сохранить сценарий
Нажмите CTRL + S или на панели инструментов щелкните значок Сохранить или в файле в меню выберите Сохранить .
Для сохранения и присвоения имени скрипту
- В меню Файл щелкните Сохранить как . Появится диалоговое окно Сохранить как .
- В поле Имя файла введите имя файла.
- В поле Сохранить как тип выберите тип файла. Например, в поле Сохранить как введите ,
выберите «Сценарии PowerShell (
* .ps1
)». - Нажмите Сохранить .
Чтобы сохранить сценарий в кодировке ASCII
По умолчанию Windows PowerShell ISE сохраняет новые файлы сценариев (.ps1
), файлы данных сценария ( .psd1
) и
файлы модуля скрипта ( .psm1
) по умолчанию в формате Unicode (BigEndianUnicode). Чтобы сохранить сценарий в другом
кодировке, такой как ASCII (ANSI), используйте методы Save или SaveAs на
$ psISE.CurrentFile объект.
Следующая команда сохраняет новый сценарий как MyScript.ps1 с кодировкой ASCII.
$ psISE.CurrentFile.SaveAs ("MyScript.ps1", [System.Text.Encoding] :: ASCII)
Следующая команда заменяет текущий файл сценария файлом с тем же именем, но с Кодировка ASCII.
$ psISE.CurrentFile.Save ([System.Text.Encoding] :: ASCII)
Следующая команда получает кодировку текущего файла.
$ psISE.CurrentFile.encoding
Windows PowerShell ISE поддерживает следующие параметры кодировки: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8 и по умолчанию. Значение параметра По умолчанию зависит от системы.
Windows PowerShell ISE не изменяет кодировку файлов сценариев при использовании команд Сохранить или Сохранить как команды.
См. Также
Как создать и запустить файл сценария PowerShell в Windows 10
В Windows 10 PowerShell — это инструмент командной строки, разработанный Microsoft для выполнения команд и сценариев для изменения настроек и автоматизации задач. В некотором смысле это похоже на командную строку. Однако PowerShell — это более функциональный интерфейс командной строки (CLI), который предлагает обширный набор инструментов, большую гибкость и контроль. Кроме того, в отличие от командной строки, PowerShell доступен в Windows, macOS и Linux.
Сценарий — это просто набор команд, сохраненных в текстовый файл (с использованием специального расширения «.ps1»), который PowerShell понимает и последовательно выполняет для выполнения различных действий.
Единственное предостережение: протокол безопасности по умолчанию всегда блокирует запуск любого сценария на устройстве. Это означает, что при двойном щелчке по файлу «.ps1» в Windows 10 ничего не произойдет, и если вы попытаетесь запустить скрипт в PowerShell, вы увидите ошибку «не может быть загружен, поскольку в этой системе выполнение скриптов отключено» сообщение.Однако запускать сценарии на вашем компьютере не исключено. Вам нужно только включить правильную политику выполнения.
VPN-предложения: пожизненная лицензия за 16 долларов, ежемесячные планы за 1 доллар и более
В этом руководстве по Windows 10 мы расскажем, как успешно написать и запустить ваш первый файл сценария в PowerShell с помощью кода Visual Studio, Блокнота и консоли PowerShell Integrated Scripting Environment (ISE).
Как создать файл сценария PowerShell в Windows 10
В Windows 10 вы можете создавать файлы сценариев PowerShell, используя практически любой текстовый редактор или консоль ISE.Однако предпочтительным вариантом (спасибо @jotaka за внимание) для создания сценариев в дальнейшем является использование редактора кода Visual Studio с расширением PowerShell.
Создание сценария с кодом Visual Studio
Visual Studio Code — также известный как VS Code — это бесплатный и расширяемый кроссплатформенный редактор кода, который предоставляет среду для редактирования практически любого языка программирования. А при добавлении расширения PowerShell вы получаете полностью интерактивный опыт редактирования сценариев, даже с поддержкой IntelliSense (автозавершение кода).
Новый интерфейс должен быть новым по умолчанию, но консоль PowerShell ISE никуда не денется. Тем не менее, компания не будет добавлять никаких дополнительных функций и не поддерживает PowerShell 7 или более поздние версии.
Установить код Visual Studio
Чтобы установить Visual Basic Code в Windows 10, выполните следующие действия:
- Откройте страницу загрузки Visual Studio.
Нажмите кнопку Windows , чтобы загрузить установщик.
Источник: Windows Central- Дважды щелкните загруженный файл, чтобы начать процесс установки VS Code.
- Подтвердите условия соглашения.
Нажмите кнопку Далее .
Источник: Windows Central- Снова нажмите кнопку Далее .
- Нажмите кнопку Далее еще раз.
При необходимости подтвердите дополнительные задачи.
Источник: Windows Central- Нажмите кнопку Далее .
- Нажмите кнопку Установить .
- Нажмите кнопку Готово .
После выполнения этих шагов можно переходить к установке расширения PowerShell.
Установить расширение PowerShell
Чтобы установить расширение PowerShell в VS Code, выполните следующие действия:
- Открыть VS Код .
- Щелкните вкладку Extensions на левой панели.
- Найдите PowerShell и выберите лучший результат.
Нажмите кнопку Установить .
Источник: Windows Central
После выполнения этих шагов можно приступать к написанию сценариев PowerShell с помощью Visual Studio Code.
Создание сценария PowerShell с кодом Visual Studio
Чтобы создать сценарий с кодом Visual Basic, выполните следующие действия:
- Открыть VS Код .
Щелкните меню Файл и выберите параметр Новый файл .
Источник: Windows CentralЩелкните меню Файл и выберите опцию Сохранить как .
Источник: Windows Central- В поле «Имя файла» укажите имя файла с расширением .ps1 — например: first_script.ps1 .
- Нажмите кнопку Сохранить .
Напишите новый или вставьте сценарий, который хотите запустить, например:
Write-Host «Поздравляем! Ваш первый сценарий успешно выполнен»
Приведенный выше сценарий выведет на экран фразу «Поздравляем! Ваш первый сценарий выполнен успешно».
(Необязательно) Нажмите кнопку Выполнить в правом верхнем углу (или нажмите клавишу F5), чтобы запустить сценарий.
Источник: Windows Central- Щелкните меню Файл .
- Щелкните опцию Сохранить .
Создание сценария с помощью Блокнота
Чтобы создать сценарий PowerShell с помощью редактора Блокнота в Windows 10, выполните следующие действия:
- Открыть Старт .
- Найдите Notepad и щелкните верхний результат, чтобы открыть приложение.
Напишите новый или вставьте свой сценарий в текстовый файл, например:
Write-Host «Поздравляем! Ваш первый сценарий успешно выполнен»
- Щелкните меню Файл .
- Выберите опцию Сохранить как .
Введите описательное имя сценария, например first_script.ps1 .
Источник: Windows Central- Нажмите кнопку Сохранить .
Создание сценария с интегрированной средой сценариев
В качестве альтернативы вы можете использовать встроенную консоль PowerShell ISE для написания сценариев в Windows 10.
Интегрированная среда сценариев — это продвинутый инструмент, но вы можете начать работу, выполнив следующие действия:
- Открыть Старт .
- Найдите Windows PowerShell ISE , щелкните правой кнопкой мыши верхний результат и выберите вариант Запуск от имени администратора .
- Щелкните меню Файл .
Выберите параметр Новый , чтобы создать новый пустой файл .ps1 .
Источник: Windows CentralНапишите новый или вставьте сценарий, который хотите запустить, например:
Write-Host «Поздравляем! Ваш первый сценарий успешно выполнен»
- Щелкните меню Файл .
- Щелкните опцию Сохранить .
Введите имя сценария, например first_script.ps1 .
Источник: Windows Central- Выберите расположение папки для хранения сценария.
- Нажмите кнопку Сохранить .
После выполнения этих шагов с помощью Блокнота, Visual Studio Code или PowerShell ISE сценарий будет готов к запуску, но по умолчанию он завершится ошибкой. Это связано с тем, что настройки PowerShell по умолчанию всегда блокируют выполнение любого скрипта.(Единственное исключение — если вы запускаете содержимое скрипта в Visual Studio Code или PowerShell ISE.)
Как запустить файл сценария PowerShell в Windows 10
Если вы хотите запустить файл сценария с помощью PowerShell, вам необходимо изменить политику выполнения в Windows 10.
Чтобы изменить политику выполнения для запуска сценариев PowerShell, выполните следующие действия:
- Открыть Старт .
- Найдите PowerShell , щелкните правой кнопкой мыши верхний результат и выберите вариант Запуск от имени администратора .
Введите следующую команду, чтобы разрешить запуск сценариев, и нажмите Введите :
Set-ExecutionPolicy RemoteSigned
Введите A и нажмите Введите (если применимо).
Источник: Windows CentralВведите следующую команду для запуска сценария и нажмите Введите :
& "C: \ PATH \ TO \ SCRIPT \ first_script.ps1"
В приведенной выше команде не забудьте изменить «PATH \ TO \ SCRIPT» на местоположение вашего скрипта.
Например, эта команда запускает сценарий, хранящийся в папке Загрузки:
& "C: \ Users \ username \ Downloads \ first_script.ps1"
После того, как вы выполните эти шаги, сценарий запустится, и, если он был написан правильно, вы должны увидеть его вывод без проблем.
В Windows 10 PowerShell включает четыре политики выполнения, в том числе:
- Запрещено — Останавливает выполнение любого сценария.
- RemoteSigned — Разрешает сценарии, созданные на устройстве, но сценарии, созданные на другом компьютере, не будут выполняться, если они не содержат подпись доверенного издателя.
- AllSigned — Все сценарии будут выполняться, но только в том случае, если их подписал надежный издатель.
- Без ограничений — Выполняет любой сценарий без ограничений.
На описанных выше шагах мы используем команду, чтобы разрешить запуск локальных сценариев в Windows 10. Однако, если вы не планируете запускать сценарии регулярно, вы можете восстановить настройки по умолчанию, чтобы заблокировать ненадежные сценарии, используя те же инструкции, описанные выше. , а на шаг No.4 , обязательно используйте команду Set-ExecutionPolicy Restricted
.
Дополнительные ресурсы по Windows 10
Дополнительные полезные статьи, статьи и ответы на распространенные вопросы о Windows 10 см. На следующих ресурсах:
Определенно кажется быстрееГрядут новейшие Intel Core i5-1155G7 и i7-1195G7; вот что нового
Intel анонсировала два новых процессора в линейке Core U-серии, предназначенные для тонких и легких ультрабуков.Новые чипы увеличивают тактовую частоту до новых высот, предлагая высокую производительность процессора и графического процессора, чем у чипов Tiger Lake. Intel также анонсировала новое решение для модема 5G, которое OEM-партнеры смогут использовать в новых ноутбуках в конце этого года.
полезных сценариев / команд PowerShell — Spiceworks
Спасибо Джастину за то, что я пропустил, вероятно, самую полезную команду. Получить помощь. Я также добавил несколько других моих любимых команд для обучения, которые до сих пор использую почти ежедневно.
Get-Help — удивительно полезная и весьма универсальная команда.
Get-Help Get-WMIObject — выводит основную справку и подсказки по команде, но Get-Help имеет много полезных параметров или переключателей;
-Full (Полный справочный документ)
-Примеры (показывает только примеры использования команды, мой личный фаворит)
-Online (открывает страницу MSDN для командлета или команды)
-ShowWindow (Помещает справку в отдельное окно)
Get-Command — еще один отличный инструмент для обучения, думаете, что-то может быть командой? Используйте Get-Command, чтобы узнать.Он также принимает подстановочные знаки. Отличный пример:
Get-Command -Name Get- * (может показаться немного утомительным, но большинство командлетов PowerShells говорят сами за себя)
Самые распространенные глаголы, если хотите, по крайней мере, на мой взгляд;
Get-
Показать
Новое-
Удалить-
Пуск-
Стоп-
Копировать
Импорт-
Экспорт —
Вы можете использовать приведенный выше пример Get-Command для любого из них.
Get-Member, вероятно, моя вторая наиболее часто используемая команда, когда я пишу сценарий или даже делаю однострочник (однострочный — это, по сути, однострочный скрипт)
Это инструмент, который можно использовать, если вы хотите увидеть каждое отдельное свойство, метод и в основном все, что хранится внутри создаваемой вами переменной (пожалуйста, не стесняйтесь вмешиваться, если я объяснил это неправильно).Вот пример;
$ Object = Get-WMIObject -Class Win32_ComputerSystem
$ Объект | Get-Member
(я бы вставил сюда вывод, но он будет очень плохо отформатирован, поэтому я предлагаю вам попробовать его самостоятельно)
Get-Alias отлично подходит, когда вы пытаетесь найти решение и сталкиваетесь с ним, но автор использует то, что я называю сокращением команд, и это здорово, если вы уже знаете это. Примером может служить gwmi, если вы не знакомы с PowerShell, который, вероятно, ничего для вас не будет значить, вот тут-то и пригодится Get-Alias.Вот пример.
Get-Alias -Name gwmi
В выходных данных этой команды будет указано, что gwmi является псевдонимом команды Get-WMIObject
.Как запустить сценарий PowerShell из командной строки и др.
Если вы новичок в языке сценариев PowerShell и хотите научиться запускать сценарий PowerShell, вы попали в нужное сообщение в блоге. В этом блоге будет руководство, посвященное распространенным способам запуска скриптов и некоторым проблемам, которые могут возникнуть.
Предварительные требования
Эта статья представляет собой пошаговое руководство по запуску PowerShell на локальном компьютере.Если вы хотите продолжить, убедитесь, что у вас есть следующие предварительные условия, прежде чем начать эту статью.
- Компьютер с Windows 10 с правами администратора.
- Windows PowerShell версии 5 или более поздней. Вы также можете использовать PowerShell v7 . В этом руководстве основное внимание будет уделено Windows PowerShell, поскольку в операционной системе Windows она уже есть.
- Любой редактор текстовых файлов
Работа с политикой выполнения
Если вы впервые пытаетесь выполнить сценарий Windows PowerShell, вы можете столкнуться с типичной проблемой.PowerShell, вероятно, вернет сообщение об ошибке, в котором говорится, что сценарий «не может быть загружен, потому что выполнение сценариев отключено в этой системе».
Связано: Политики выполнения PowerShell: понимание и управление
PS>. \ GetServices.ps1
Файл C: \ Temp \ GetServices.ps1 не может быть загружен, поскольку в этой системе отключен запуск сценариев. Для получения дополнительной информации см. About_Execution_Policies по адресу
https: /go.microsoft.com/fwlink/? LinkID = 135170.
В строке: 1 символ: 1
. \ GetServices.ps1
~~~ ~~ CategoryInfo: SecurityError: (:) [], PSSecurityException
FullyQualifiedErrorId: неавторизованный доступ
PowerShell возвращает указанное выше сообщение об ошибке при попытке запустить PowerShell с политикой выполнения, установленной на Restricted , Remote Signed или All Signed .
Ограниченный
Restricted — это политика, установленная по умолчанию для клиентских компьютеров Windows. Если вы впервые используете PowerShell, ваша политика по умолчанию, вероятно, будет ограничивать все сценарии.
В терминале все еще можно выполнять отдельные команды, но не файл сценария. Ограничение распространяется на любой файл, заканчивающийся на .ps1xml
, .psm1
или .ps1
.
Без ограничений
Unrestricted позволяет запускать любой сценарий, однако он предупреждает вас перед выполнением, если сценарий загружен из Интернета. Эта политика обычно используется по умолчанию для любых устройств, отличных от Windows.
Удаленная подпись
ПолитикаRemote Signed позволяет запускать любой сценарий, имеющий (а) цифровую подпись или (б) любой сценарий, написанный на вашем локальном компьютере с подписью или без нее.
Если сценарий загружен из Интернета и не подписан, вам потребуется разблокировать файл. Вы можете сделать это, щелкнув файл правой кнопкой мыши и выбрав Properties . Или вы можете использовать командлет Unblock-File
PowerShell для этого конкретного файла сценария.
Использование удаленной подписанной политики было бы идеальным вариантом при запуске сценария, загруженного из Интернета.
Все подписано
Все подписанные требует, чтобы все сценарии были подписаны цифровой подписью надежным издателем.Сюда входят сценарии, загруженные из Интернета и написанные локально на вашем компьютере.
Изменение политики выполнения PowerShell
Чтобы изменить политику выполнения:
- Откройте Windows PowerShell с помощью Запуск от имени администратора , чтобы убедиться, что у вас есть самые высокие права на внесение изменений в политику.
Связано: Как запустить PowerShell от имени администратора
Поиск PowerShell в меню «Пуск»2. В открытом состоянии выполните следующую команду PowerShell, чтобы установить политику выполнения вашего компьютера.Политика выполнения, как описано выше, может быть одного из трех различных типов. В этом руководстве используется полезная, но все же безопасная политика выполнения RemoteSigned .
Поскольку в этом руководстве предполагается, что вы загрузили из Интернета файл сценария GetServices.ps1 , установите для политики выполнения значение RemoteSigned .
PS> Set-ExecutionPolicy RemoteSigned
Политика выполнения RemoteSigned заставляет вас криптографически подписывать каждый сценарий PowerShell, загруженный из Интернета, прежде чем PowerShell запустит его в вашей системе.
3. Вы должны увидеть вывод с запросом подтверждения действия. Введите Y и нажмите Enter, чтобы подтвердить изменение политики.
Изменение политики выполнения
Политика выполнения помогает защитить вас от скриптов, которым вы не доверяете. Изменение политики выполнения может привести к
риски безопасности, описанные в разделе справки about_Execution_Policies по адресу https: /go.microsoft.com/fwlink/? LinkID = 135170. Вы хотите, чтобы
изменить политику исполнения?
[Y] Да [A] Да для всех [N] Нет [L] Нет для всех [S] Приостановить [?] Справка (по умолчанию «N»):
На этом этапе выполните следующие шаги, чтобы изучить различные методы запуска сценария PowerShell на вашем компьютере.
Запуск сценария PowerShell
Чтобы продемонстрировать запуск сценария PowerShell, вам действительно нужен файл сценария для запуска! Если у вас нет под рукой, загрузите этот ZIP-файл и извлеките из него файл PS1. Внутри вы найдете простой файл сценария под названием GetServices.ps1 .
Запись-вывод «Листинг компьютерных услуг»
Get-Service
Каждый сценарий PowerShell должен заканчиваться расширением
.ps1
.
Использование консоли
Когда у вас есть готовый сценарий, вы можете выполнить файл сценария PowerShell несколькими способами.Один из наиболее распространенных способов — через консоль PowerShell.
Для этого:
- Откройте консоль PowerShell, как показано выше.
2. Перейдите в расположение файловой системы, в котором находится ваш сценарий, с помощью командлета Set-Location
PowerShell или псевдонима cd
. Сценарий этого руководства находится в каталоге C: \ Temp .
PS> компакт-диск C: \ Temp \
3. Запустите сценарий, используя запись с точкой (.
).PowerShell — это оболочка, которая также ищет имена команд. Чтобы отличить команду PowerShell от сценария, необходимо поставить перед сценарием точку. Эта точка представляет текущий каталог.
PS>. \ GetServices.ps1
Запуск сценария PowerShell из командной строки
Если вы не можете или не хотите запускать скрипты через консоль PowerShell, вы также можете сделать это с помощью старой доброй командной строки (командной строки).
Чтобы запускать сценарии через командную строку, необходимо сначала запустить движок ( powershell.exe ), а затем передайте ему путь к сценарию в качестве параметра.
Вы можете запускать сценарии с параметрами в любом контексте, просто указав их при запуске исполняемого файла PowerShell, например,
powershell.exe -Parameter 'Foo' -Parameter2 'Bar'
.
После открытия cmd.exe можно выполнить сценарий PowerShell, как показано ниже. В этом примере выполняется механизм и передается ему путь сценария C: \ Temp \ GetServices.ps1 .
Обратите внимание, что в приведенном ниже примере используется полный путь для запуска сценария.Вам придется это сделать, если папки где-то нет в вашем PATH.
CMD> C: \ Program Files \ WindowsPowerShell \ powershell.exe "C: \ Temp \ GetServices.ps1"
Ниже приведено удобное видео на YouTube, в котором рассматривается выполнение сценария с помощью командного файла, который выполняет cmd.exe.
Использование PowerShell ISE
Если вы создаете свои собственные сценарии или редактируете другие сценарии, вы, вероятно, будете использовать редактор сценариев, например PowerShell ISE или, возможно, Visual Studio (VS) Code .Поскольку ISE поставляется с Windows, давайте сосредоточимся на этом методе в этом руководстве.
Для вызова сценария через ISE:
- Перейдите в меню «Пуск», найдите PowerShell ISE и откройте его.
2. Щелкните Файл → Откройте и найдите свой сценарий.
Открыть скрипт с помощью меню «Файл»3. Открыв сценарий, щелкните зеленую кнопку запуска, чтобы запустить сценарий. Эта кнопка вызовет скрипт во встроенном терминале PowerShell внизу.
Запуск сценария с помощью PowerShell ISEВыходные данные примера сценария
Сценарий PowerShell иногда может возвращать выходные данные. Это происходит, когда скрипт, который вы выполняете, построен для возврата объектов , который является фундаментальным компонентом PowerShell.
Связано: Назад к основам: Понимание объектов PowerShell
Если вы запустите пример сценария GetServices.ps1 , вы увидите следующее. Этот сценарий запускает командлет Get-Service
, который возвращает все службы, установленные на вашем локальном компьютере с Windows.
PS>. \ GetScripts.ps1
Листинг компьютерных услуг
Название статуса DisplayName
------ ---- -----------
Запуск aakore Acronis Agent Core Service
Остановлена активация агента AarSvc_1b668d, среда выполнения_1b668d
Запуск AcronisActivePr ... Служба активной защиты Acronis
Запуск AcronisCyberPro ... Служба киберзащиты Acronis
Запуск службы AcrSch3Svc Acronis Scheduler2
Запуск AdobeARMservice Adobe Acrobat Update Service
Запуск AdobeUpdateService AdobeUpdateService
Запуск AGMService Adobe Genuine Monitor Service
Запуск AGSService Adobe Genuine Software Integrity Se...
---- Усечено ----
Запуск сценария PowerShell из сценария
Допустим, у вас есть два скрипта, и вы хотите, чтобы один вызывал другой. Возможно, у вас есть сценарий с именем GetUser.ps1 и сценарий с именем ResetPassword.ps1 . Внутри сценария GetUser.ps1 вы хотите выполнить ResetPassword.ps1 , чтобы сбросить пароль пользователя.
Внутри вызывающего сценария ( GetUser.ps1) вы должны добавить строку для выполнения другого сценария, как если бы вы вызывали сценарий из командной строки.
Как видите, у вас есть несколько вариантов. Обычно вам следует выбрать запуск другого сценария в том же сеансе или области, чтобы упростить работу, если у вас нет особой причины запускать сценарий в другом сеансе PowerShell.
## Для запуска другого сценария в новом сеансе
powershell.exe. \ ResetPassword.ps1
## Чтобы запустить другой скрипт в том же сеансе
. \ ResetPassword.ps1
Учебное пособие по созданию сценариев Windows PowerShell для начинающих
Автоматизируйте это.Теперь, где этот сценарий…
Предупреждение: PowerShell вызывает привыкание.
Meet PowerShell
Windows PowerShell — это объектно-ориентированный механизм автоматизации и язык сценариев с интерактивной оболочкой командной строки, предназначенный для помощи ИТ-специалистам в настройке систем и автоматизации административных задач. Вы можете найти его в любой современной ОС Windows, начиная с Windows 2008R2. Изучение Windows PowerShell похоже на обучение использованию универсального многофункционального инструмента. В этом посте я расскажу об основах создания сценариев PowerShell, чтобы вам было проще выполнять практически любую административную задачу, связанную с вашей ИТ-средой Windows.
Итак, приступим к изучению PowerShell.
PowerShell предлагает как параметр командной строки, так и интегрированную среду сценариев (ISE):
- Чтобы запустить командную строку PowerShell, введите powershell.exe в меню «Пуск» Windows. Вы увидите следующий экран:
- Чтобы запустить PowerShell ISE, введите powershell_ise.exe в меню «Пуск». Использование PowerShell ISE является предпочтительным способом работы с языком сценариев, поскольку он обеспечивает подсветку синтаксиса, автоматическое заполнение команд и другие функции автоматизации, которые упрощают разработку и тестирование сценариев.
Подготовка к запуску сценариев PowerShell
СценарииPowerShell хранятся в файлах .ps1. По задумке вы не можете запустить сценарий, просто дважды щелкнув файл; это помогает избежать случайного повреждения ваших систем. Вместо этого, чтобы выполнить сценарий, щелкните его правой кнопкой мыши и выберите «Выполнить с помощью PowerShell»:
Кроме того, существует политика, ограничивающая выполнение сценария. Вы можете проверить эту политику, выполнив команду Get-ExecutionPolicy в PowerShell:
Вы получите одно из следующих значений:
- Restricted — Скрипты не разрешены.Это настройка по умолчанию, поэтому вы увидите ее при первом запуске команды.
- AllSigned — Вы можете запускать сценарии, подписанные доверенным разработчиком. Если этот параметр установлен, перед выполнением сценарий попросит вас подтвердить, что вы хотите его запустить.
- RemoteSigned — Вы можете запускать свои собственные сценарии или сценарии, подписанные доверенным разработчиком.
- Без ограничений — Вы можете запускать любой сценарий, какой захотите.
Чтобы начать работу с PowerShell, вам нужно изменить параметр политики с Restricted на RemoteSigned с помощью команды Set-ExecutionPolicy RemoteSigned:
КомандлетыPowerShell
О командлетахКомандлет — это команда PowerShell с предопределенной функцией, аналогичная оператору в языке программирования.Вот несколько ключевых вещей, которые нужно знать о командлетах:
- Существуют системные, пользовательские и настраиваемые командлеты.
- Командлеты выводят результаты как объект или как массив объектов. Командлеты
- могут получать данные для анализа или передавать данные в другой командлет с помощью каналов (я подробнее остановлюсь на каналах чуть позже).
- Командлеты нечувствительны к регистру. Например, не имеет значения, набираете ли вы «Get-ADUser», «get-aduser» или «gEt-AdUsEr».
- Если вы хотите использовать несколько командлетов в одной строке, вы должны разделить их точкой с запятой (;).
Командлет всегда состоит из глагола (или слова, которое функционирует как глагол) и существительного, разделенных дефисом (правило «глагол-существительное»). Например, некоторые из глаголов включают:
- Get — Чтобы получить что-то
- Установить — Чтобы что-то определить
- Start — запустить что-то
- Stop — Чтобы остановить что-то, что работает
- Out — Чтобы вывести что-то
- New — Создать что-то («новый», конечно, не глагол, но он функционирует как единое целое)
Для практики попробуйте выполнить следующие командлеты:
- Get-Process — показывает процессы, запущенные в данный момент на вашем компьютере:
- Get-Service — Показывает список сервисов с их статусом
- Get-Content — показывает содержимое указанного файла (например, Get-Content C: \ Windows \ System32 \ drivers \ etc \ hosts)
Хорошие новости — вам не нужно запоминать все командлеты.Вы можете вывести список всех командлетов, выполнив командлет Get-Help -Category, который вернет следующее:
Вы также можете создавать свои собственные командлеты.
ПараметрыКаждый командлет имеет несколько параметров, определяющих его действия. Интегрированная среда сценариев PowerShell автоматически предложит все допустимые параметры и их типы после ввода командлета и дефиса (-):
Например, следующий командлет показывает все службы, имена которых начинаются с буквы «W»:
Get-Service -Name W *
Если вы забыли параметры командлета, просто используйте сценарий, подобный следующему, который отобразит параметры для командлета Get-Process:
Get-Process | Get-Member
Если вы все еще не нашли нужный командлет, вы можете убедиться, что справка актуальна, а затем получить примеры для командлета (например, Get-Process), используя следующий сценарий:
Update-Help # для обновления данных справки Get-Help Get-Process-ПримерыПсевдонимы
Вы также можете использовать псевдонимы, которые представляют собой сокращенные имена командлетов.Например, вместо «Get-Help» можно использовать просто «Help». Попробуйте выполнить следующие две команды и посмотрите, получите ли вы тот же результат:
- Блокнот Start-Process
- запустить блокнот
Аналогичным образом, чтобы остановить этот процесс, вы можете использовать любую из следующих команд:
- Stop-Process -Name notepad
- spps -Имя блокнота
Чтобы увидеть все псевдонимы, выполните командлет Get-Alias.
Комментарии к сценарию помогут вам и вашим коллегам лучше понять, что делает этот сценарий.Строковый комментарий — это одна строка, которая начинается со знака числа (#), а комментарии блока начинаются и заканчиваются числовыми знаками и угловыми скобками и распространяются на несколько строк.
ТрубыКанал передает данные от одного командлета к другому. Раньше я использовал канал для получения всех свойств объекта.
Например, если вы выполните следующий скрипт, вы получите все службы, отсортированные по их статусу:
Get-Service | Сортировка-Объект-Статус собственности
Вы также можете использовать конвейер для вывода текста в файл с помощью следующего сценария:
"Привет, мир!" | Исходный файл C: \ ps \ test.txt
Можно использовать несколько каналов. Например, следующий скрипт перечисляет все службы, причем первый канал исключает остановленные службы, а второй канал ограничивает список только отображаемыми именами:
Get-Service | ГДЕ {$ _. Status -eq "Выполняется"} | ВЫБРАТЬ отображаемое имя # «$ _.» определяет текущий элемент в трубеСводка
Давайте кратко подведем итоги этого руководства по Windows PowerShell. Теперь вы знаете, как запустить PowerShell, как изменить политику выполнения, что такое командлет, как передавать данные с помощью конвейера и как получить свойства объекта.Имейте в виду, что если вы что-то забудете, вы всегда можете использовать командлет Get-Help.
Надеюсь, этот PowerShell для начинающих оказался вам полезен!
В следующих частях этого бесплатного руководства по PowerShell я расскажу о переменных, массивах и циклах, которые используются в сценариях PowerShell для упрощения администрирования серверов Windows.
А пока вы можете проверить следующие сценарии PowerShell, используемые ИТ-специалистами для решения конкретных случаев:
- Как получить отчеты о членстве в группах пользователей AD
- Как найти отключенных или неактивных пользователей в Active Directory
- Как найти неактивные компьютеры в Active Directory
- Как получить список учетных записей пользователей с истекшим сроком действия в AD
- Как найти заблокированные учетные записи пользователей в Active Directory
- Как вывести список всех учетных записей пользователей в системе Windows
- Мониторинг журналов событий с помощью PowerShell
- Как настроить уведомление об изменении группы локальных администраторов с помощью PowerShell
- Как получить уведомление об просроченном пароле в Active Directory с помощью PowerShell
- Запрос журнала событий с помощью PowerShell
- Пересылка журнала событий Windows в Windows Server 2008
- Сочетания клавиш для системных администраторов
- Как обнаруживать новых пользователей в Active Directory с помощью PowerShell
- Office 365: настройка бессрочных паролей пользователей
- Как найти неактивные компьютеры в Active Directory с помощью PowerShell
- Windows PowerShell и командная строка (cmd)
- Как управлять списками ACL файловой системы с помощью PowerShell
- Управление файлами PowerShell
- Как создать новых пользователей Active Directory с помощью PowerShell
- Как добавлять и удалять группы AD и объекты в группах с помощью PowerShell
- Управление подразделениями и перемещение их объектов с помощью PowerShell
- Как автоматизировать сценарии PowerShell с помощью планировщика заданий
- Как создавать, удалять, переименовывать, отключать и присоединять компьютеры в AD ssing PowerShell
И если вы только начинаете работать с PowerShell, я рекомендую следующие ресурсы:
Ян — бывший специалист по техническому маркетингу в Netwrix.Он ИТ-специалист с более чем 15-летним опытом и заядлый блоггер PowerShell.
Напишите и запустите свой первый сценарий Windows PowerShell
Системным администраторам нравятся сочетания клавиш и методы, которые экономят время. Я думаю, что это вдвойне усложняет управление множеством компьютеров.
Введите Windows PowerShell …
Несмотря на то, что существует множество отличных языков сценариев, он не намного лучше, чем Windows PowerShell. Если вы используете последнюю версию Microsoft Windows, возможно, у вас уже установлена ее версия.
Как создать сценарий PowerShell?
PowerShell сохраняет скрипты в формате ps1. Для нашей демонстрации были созданы и файл, и папка.
C: \ Scripts \ My First Script.ps1
Не стесняйтесь использовать свои собственные имена папок и файлов.
Сначала создайте новый файл ps1 и добавьте командлет Write-Host (cmdlet — это другое слово для команды)
Write-Host «Hello, World!»
Сохраните файл ps1 и вернитесь в окно PowerShell. Наиболее распространенный метод запуска сценария — его вызов в терминале PowerShell. (Вы также можете использовать PowerShell ISE или VS Code)
& "C: \ Scripts \ My First Script.ps1"
Попробуйте эту команду. Вы должны получить сообщение об ошибке, в котором говорится, что в вашей системе отключены сценарии.Это сделано из соображений безопасности.
Чтобы предотвратить запуск вредоносных сценариев в вашей системе, PowerShell применяет политику выполнения. Вы можете использовать 4 политики выполнения:
Запрещено | Сценарии не запускаются. Период. (Настройка по умолчанию) |
RemoteSigned | Будут выполняться локально созданные сценарии. Сценарии, созданные на другом компьютере, не будут выполняться, если они не подписаны доверенным издателем. |
AllSigned | Сценарии будут выполняться только в том случае, если они подписаны доверенным издателем (включая сценарии, созданные локально). |
Без ограничений | Все сценарии будут выполняться независимо от того, кто их создал и подписаны они или нет. |
Чтобы использовать наш только что созданный сценарий, нам нужно будет изменить нашу политику выполнения, чтобы разрешить запуск нашего примера сценария. Поскольку у нас нет цифровой подписи для нашего нового сценария, наши параметры для настройки политики выполнения оставлены на «RemoteSigned» и «Unrestricted». Мы собираемся изменить его на RemoteSigned.
Чтобы изменить политику выполнения, нам нужно будет повторно открыть PowerShell в качестве администратора (в противном случае команда завершится ошибкой) и выполнить следующую команду:
Set-ExecutionPolicy RemoteSigned
Командлет Set-ExecutionPolicy запросит убедитесь, что вы действительно хотите изменить политику выполнения.