Написание и запуск скриптов в PowerShell

PowerShell Scripts (part 1) — Как надо писать скрипты

Написание и запуск скриптов в PowerShell

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

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

-NoProfile -Command Get-VMIntegrationService -VMName * -Name ‘Time Synchronization’ | ? Enabled | Disable-VMIntegrationService -Passthru

Для начала покажу несколько популярных вариантов написания функций.

Основные конструкции:

1. Несколько примеров, как делать можно, но не нужно:

Function welcome ($name = '%UserName%') {“Hello, $name”}

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

PS> welcome
Hello, %UserName%
PS>


Теперь запуск с аргументом:

PS> welcome Saw-Friendship
Hello, Saw-Friendship
PS>


Простые функции можно запускать еще так (но не следует):

PS> welcome('Saw-Friendship')
Hello, Saw-Friendship
PS>


Не следует потому, что нужно стремиться к единому стилю кода, а этот вариант не работает, если в функцию передается больше одного аргумента

2. Лучше делать так:

Function welcome {param ($name = '%UserName%')”Hello, $name”}

Работает точно так же, поэтому обойдемся без примеров.

Расширенные функции:

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

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

Представим, что нам нужна функция, умножающая 2 числа с проверкой по нескольким критериям:

  1. Числа должны быть целыми
  2. В диапазоне от -1000 до 1000
  3. значение не может быть пустым

Приведу 2 варианта:

Function multiplication {param ($a,$b)if (($a -is [int] -and $b -is [int]) -and($a -ne $null -and $b -ne $null) -and($a -le 1000 -and $b -le 1000) -and($a -ge -1000 -and $b -ge -1000)) {$a * $b} else {Write-Error -Message 'аргументы должны быть целыми числами в диапазоне от -1000 до 1000'}} Function multiplication {[CmdletBinding()]param ([parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][ValidateRange(-1000,1000)][int]$a,[parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][ValidateRange(-1000,1000)][int]$b)$a * $b}

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

Правда пока я писал этот пример, обнаружился забавный нюанс: несмотря на проверку ValidateNotNullOrEmpty, значение может быть и $null и пустой строкой «», но это происходит из-за того, что оба эти варианта замечательно переводятся в тип [INT]

Получается, что даже это будет работать без ошибки

PS> multiplication $null ''
0
PS>


О том, какие еще конструкции можно использовать, можно узнать, выполнив

Get-Help about_Functions_Advanced_Parameters

или через браузер

Но, как показывает практика, ссылки на MS очень ненадежные

Источник: https://sawfriendship.wordpress.com/2019/03/16/ps_scripts_modules_profiles_1_1/

Запуск скриптов PowerShell

Написание и запуск скриптов в PowerShell

PowerShell – это новая командная оболочка для Windows, которая по задумкам Microsoft должна вытеснить и заменить cmd. По-умолчанию, эта оболочка уже идет в составе Windows 7 и выше. Если у вас более старая операционная система или вы просто хотите скачать более свежую версию PowerShell, сделать это можно здесь: https://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx

Как запустить скрипт PowerShell?

Есть несколько различных способов запуска скрипта, ниже приведены основные:

  1. Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:\Scripts\test.ps1, или перейти в папку скрипта командой cd C:\Scripts и запустить его командой .\test.ps1)Оболочку можно найти и запустить множеством способов. Один из способов – через меню “Пуск”. Для Windows 7 – нужно зайти во “Все программы” – “Стандартные” – “Windows PowerShell” и запустить оболочку “Windows PowerShell”. Для Windows 10 – нужно найти группу на букву “W” и в ней вы найдете “Windows PowerShell”.
  2. Запустить “Интегрированную среду сценариев Windows PowerShell ISE” – это программа – среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку “Открыть” или зайти в меню Файл – Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку “Выполнить скрипт”.Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell – в меню “Пуск”.
  3. Запустить стандартную коммандную строку и в ней написать:
    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 с помощью ярлыка?

Осуществить такую задачу можно двумя способами:

  1. Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
  2. Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v\ и в свойствах ярлыка в поле “Объект” дописать необходимые параметры.

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

Скриптовый язык PowerShell – довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом 😉

Источник: http://www.codernotes.ru/articles/powershell/zapusk-skriptov-powershell.html

Первые шаги для пауэршельшиков

Написание и запуск скриптов в 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 AliasC 16.56 63.44 FileSystem C:\cert Certificate \D .11 53.92 FileSystem D:\Env EnvironmentFunction FunctionHKCU Registry HKEY_CURRENT_USERHKLM Registry HKEY_LOCAL_MACHINEVariable VariableWSMan 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 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 $client = New-Object System.Net.WebClientC:\> $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
  • .NET
  • скрипт
  • шелл

Источник: https://habr.com/post/113913/

Написание и запуск скриптов в PowerShell

Написание и запуск скриптов в 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. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.

Запустить скрипт вы сможете таким образом:

  1. Зайдите в PowerShell от имени администратора.
  2. При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
  3. В этом случае e: — имя жёсткого диска, где находится файл.
  4. Жмите Enter.

Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду.

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

Но, это ограничение можно очень просто обойти.

Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.

Другие вопросы по пользованию

У многих возникает вопрос, как узнать версию PowerShell? Для этого выполните следующее:

  1. Откройте приложение.
  2. Введите $PSVersionTable.
  3. Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
  4. В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.

Ещё один вопрос, на который стоит дать ответ — как удалить PowerShell? Для этого потребуются такие действия:

  • Зайдите через Панель управления в меню установки и удаления программ.
  • Найдите ветку Microsoft Windows
  • Удалите обновление для компонента WindowsPowerShell (TM), следуйте инструкциям системы.

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

Дополнительно вы всегда имеете возможность узнать версию этого продукта и даже частично удалить его — из-за того, что он установлен вместе с системными компонентами, полностью сделать это всё равно не получится.

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

Источник: https://nastroyvse.ru/programs/review/kak-pisat-i-zapuskat-skripty-powershell.html

Основы Windows PowerShell (создание и запуск скриптов

Написание и запуск скриптов в PowerShell

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

В данном видео, мы посмотрим:

– как выглядит оболочка PowerShell,

– уточним версию компонентов и обновим их до актуального состояния.

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

– обретем базовые знания, касающиеся синтаксиса PowerShell.

– разберем решение реальной задачи при помощи командлетов PowerShell.

Постановка задачи для PowerShell

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

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

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

Сравнение командной строки с PowerShell

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

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

Проверка версии PowerShell

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

Для того что бы узнать какая версия PowerShell установлена, необходимо запустить команду $PSVersionTable. На слайде представлен вывод данной команды, после обновления. В нашем случае версия 4.

0 Процесс обновления оболочки будет представлен в практической части видео.

PowerShell ISE

Для того что бы не навредить системе и проверить работоспособность скрипта, разработку, отладку и тестирование удобно проводить в специальной среде. PowerShell ISE дает такую возможность. Интерфейс приложения разделен на 3 части.

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

Более того в этой среде реализованы различные функции, такие как подсветка синтаксиса, конструктор команд и авто заполнение, что существенно облегчает программирование.

Построение команд в PowerShell

Теперь давайте немного поговорим о синтаксисе в PowerShell. Необходимо запомнить основной принцип построения командлетов. Вначале идет ГЛАГОЛ, далее СУЩЕСТВИТЕЛЬНОЕ и уже через тире, вы можете ввести параметры для этого командлета.

На слайде представлен сложный командлет, но принцип остается неизменным. Сначала мы запрашиваем вывод справки Get-help, а затем указываем для какой команды мы хотим это сделать Get-date.

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

Особенности запуска скриптов в PowerShell

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

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

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

Создание и запуск скриптов PowerShell на практике

Перейдем непосредственно к демонстрации. В качестве стенда для практической работы будет использован сервер с Windows Server 2016, с установленной ролью активного каталога и клиентская машина на windows 10.

Этапы видео:

  1. На контроллере домена смотрим структуру AD, определяем уч. записи компьютеров в каталоге, запоминаем.
  2. На клиентской машине запускаем PS, смотрим версию, обновляем до актуальной, обновляем справку.
  3. Устанавливаем RSAT для возможности подключения AD модуля в PS.
  4. Выставляем необходимые настройки политики для запуска скриптов.
  5. Сооружаем скрипт, позволяющий получить список машин из определенной OU по фильтру имени, запускаем, получаем результат, выгружаем в TXT.

Bonus: получение справки по командам get-help get-* с параметром «example» и «Full». Для вывода примеров использования команды.

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

Спасибо за внимание!

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

Список временных меток:

  • Обзор видеоурока «Основы Windows PowerShell»
  • Постановка задачи для PowerShell
  • Сравнение командной строки с PowerShell
  • Проверка версии PowerShell
  • PowerShell ISE
  • Построение команд в PowerShell
  • Особенности запуска скриптов в PowerShell
  • Создание и запуск скриптов PowerShell на практике

Источник: https://sys-team-admin.ru/videouroki/administrirovanie/204-osnovy-windows-powershell-sozdanie-i-zapusk-skriptov-ustanovka-obnovlenie-versii-powershell-ise.html

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.