Компютри Windows интернет

Описание на powershell. Какво е PowerShell? Първи стъпки с PowerShell

5 ноември 2014 г. в 20:07 ч

Бърз старт в PowerShell (част I)

  • Системна администрация,
  • PowerShell
  • Урок

Само автоматизация. Само PowerShell.

Предговор

Като хоби и когато имам време, преподавам на студенти в UKIT (бивш Московски държавен колеж по информационни технологии). В момента имам малко време да посветя на група студенти, но е достатъчно да подготвя публикация тук на Хабре.

Работя като системен администратор в голяма не-ИТ компания с много ИТ ресурси. По вид дейност изглежда, че решава голям брой подобни задачи за обслужване на потребителите.

Запознах се с езика PowerShell преди около две години, но се захванах сериозно с него едва година по-късно, без да осъзнавам първоначално огромните му възможности. В тази статия, на първо място, ще се съсредоточа върху тези, които искат да започнат да работят с PowerShell, но все още не му вярват или не знаят по какъв начин да подходят към това чудо.

Предупреждение: PowerShell води до пристрастяване.

Въведение

Уикипедия ни казва:
Windows PowerShell- разширяем инструмент за автоматизация от Microsoft, състоящ се от обвивка на командния ред и придружаващ скриптов език.

Средата PowerShell може да изглежда като командния ред:


powershell.exe

Или като приложение:


powershell_ise.exe

Powershell_ise.exeнаречена интегрирана среда за скриптове - Windows PowerShell ISE. Позволява ви да работите с езика в удобна среда с подчертаване на синтаксиса, конструктор на команди, автоматично довършване на команди чрез натискане на TAB и други удобства. Идеален за създаване и тестване на скриптове.

За да започнете средата powershell.exeили powershell_ise.exeПросто въведете същото име в реда за изпълнение.

Файлът на скрипта PowerShell има разширението .ps1.

Скриптът не може да се стартира с двоен LMB. Това се прави специално, за да не се навреди на системата от случайно стартиран скрипт.

За да стартирате, щракнете с десния бутон и изберете „Изпълни с PowerShell“:

В допълнение към факта, че има ограничение за стартиране на LMB скриптове, по подразбиране изпълнението на скриптове в системата е забранено, отново поради причината, описана по-горе - да не навреди на системата. За да проверите текущата политика за изпълнение, изпълнете командата:

Get-ExecutionPolicy

Ще получим една от следните стойности. С голяма вероятност, ако това беше първото изстрелване, ще получим Ограничен.

  • Ограничен- Скриптовете не могат да се стартират;
  • AllSigned- Могат да се изпълняват само скриптове, подписани от доверен издател. Ще бъде поискано потвърждение, преди да стартирате скрипта на доверен издател;
  • RemoteSigned- Позволено е да изпълнява скриптове, създадени от нас, и скриптове, изтеглени, подписани от доверен издател;
  • Без ограничения- Без ограничения, всички скриптове могат да се изпълняват.

За изпълнение и тестване намалете правилата до RemoteSignedкато изпълните командата:

Set-ExecutionPolicy RemoteSigned

Да започваме

Cmdlet
  • Кратки команди са PowerShell команди, които съдържат различни функции;
  • Кратки команди могат да бъдат системни или създадени от потребителя;
  • Кратки команди са именувани според правилото глагол-съществително, което ги прави по-лесни за запомняне;
  • Кратки команди извеждат резултати като обекти или колекции от обекти;
  • Кратки команди могат както да получават данни за обработка, така и да предават данни през тръбопровод (повече за тръбопроводите по-късно);
  • Кратки команди не са чувствителни към главни и малки букви (можете да напишете get-process, Get-Process и GeT-pRoCeSs);
  • Не е необходимо да поставяте " след кратки команди ; ", освен когато изпълняваме множество кратки команди на един ред (Get-Process; Get-Services).

Например, за да получим текущите процеси, ще изпълним командата:

И получаваме резултата:

Опитайте сами:

Get-Service #за да получите състоянието на услугите, работещи на компютри

Get-Content C:\Windows\System32\drivers\etc\hosts #за получаване на съдържанието на файл. В този случай файлът hosts

Не е необходимо да знаете всички командлети наизуст. Извикай помощще спаси положението.
Можете да получите информация за всички налични кратки команди, като изпълните следната команда:

Get-Help -Category cmdlet

Ако използваме PowerShell ISE, ние правим процеса на разработка по-лесен.
Просто въведете тире " - " след като сме въвели cmdlet, и ще получим всички възможни опции за параметри и техните типове:

Опитвам:

Get-Service -Име p*

Ако обаче забравим какви свойства има този или онзи cmdlet, ще го изпълним Get-Member:

Get-Process | Get-Member #Sign "|" наречена конвейер. За него по-долу.

Няма достатъчно информация? Нека се обърнем към помощта за параметъра -Примери:

Get-Help Get-Process -Примери

Получаваме описание Get-Processи дори с примери за употреба:

  • Кратки команди могат да имат съкратени имена - псевдоними. Например, вместо Извикай помощможе да се използва просто Помогне. За да получите всички съкращения, стартирайте Get-Alias.

Опитвам:

Бележник за стартиране на процеса

Което е подобно на писане:

Стартирайте бележника

Сега нека спрем процеса:

Бележник за стоп-процес -име

Spps - Бележник за имена

Малко по-рано казахме, че cmdlet-ите се именуват според правилото глагол-съществително. Нека поясня, че глаголът не е задължително да бъде Вземете. Освен това, което можем да получим, можем да поискаме Комплект(не забравяйте, Set-ExecutionPolicy), стартирайте Започнете, Спри се Спри се, изход Навън, създайте Нови много други. Името на cmdlet не е ограничено до нищо и когато създадем свой собствен, можем да го кръстим както сърцето ни иска.

Нека се опитаме да изведем във файл:

„Здравей, Хабр!“ | Изходящ файл C:\test.txt & C:\test.txt

Между другото, можете да го напишете така:

„Здравей, Хабр!“ > C:\test.txt & C:\test.txt

Много потребители знаят за командния ред, но много малко са чували за Windows PowerShell. В известен смисъл PowerShell е инструмент, който има за цел да замени командния ред и да предостави по-мощни възможности за управление на операционната система Windows. В тази статия ще се опитаме да обясним ясно какво представлява този инструмент, защо е толкова мощен и кой е склонен да го използва най-често.

Какво е PowerShell?

За по-добро разбиране първо трябва да разберем какво е черупка. В компютърните науки обвивката е потребителски интерфейс, който осигурява достъп до различни услуги на операционната система. Обвивката може да бъде базирана на команден ред или може да включва графичен потребителски интерфейс (GUI).

Windows PowerShell е обвивка, разработена от Microsoft за автоматизиране на задачи и управление на конфигурацията. Тази мощна обвивка е базирана на .NET framework и включва обвивка на командния ред и скриптов език.

Може също да има Windows PowerShell ISE върху стандартната обвивка на командния ред. ISE действа като интегрирана среда за скриптове - графичен потребителски интерфейс, който ви позволява да създавате различни скриптове, без да се налага да въвеждате всички команди в командния ред.

Първата версия на PowerShell беше пусната през ноември 2006 г. за Windows XP, Windows Server 2003 и Windows Vista. Най-новата е версия 4.0, която беше пусната през октомври 2013 г. По подразбиране се предлага с Windows 8.1 и Windows Server 2012 R2.

Какво можете да правите с PowerShell?

Microsoft разработи Windows PowerShell като инструмент, който помага за автоматизирането и бързото решаване на много досадни административни задачи. Например, можете да използвате PowerShell, за да видите всички USB устройства, инсталирани на един или повече компютри във вашата мрежа, или можете да настроите времеемка задача, която да се изпълнява във фонов режим, докато вършите друга работа. Можете също така да идентифицирате и прекратите процеси, които не отговарят, или да филтрирате специфична информация за компютри във вашата мрежа и да я експортирате в HTML формат.

Възможностите на PowerShell ви позволяват да опростите и автоматизирате отнемащи време и повтарящи се задачи чрез създаване на скриптове и комбиниране на множество команди заедно.

Ако сте мрежов администратор, ще намерите PowerShell за много полезен при работа с Active Directory. Като се има предвид, че инструментът съдържа стотици персонализируеми команди, наречени кратки команди, вероятността PowerShell да ви помогне да станете по-продуктивни е много голяма.

Как да стартирам PowerShell на Windows 8.1?

Ако нямате PowerShell плочка на началния екран или пряк път на работния плот, тогава можете да го отворите чрез търсене - това е един от най-лесните начини. Натиснете +Q, въведете "powershell" и след това натиснете Enter.

Можете също да отворите PowerShell от секцията с приложения на началния екран: Отидете на началния екран и преместете курсора в долния ляв ъгъл, точно под последната плочка в първата колона. Кликнете върху иконата със стрелка, сочеща надолу. След това щракнете върху иконата PowerShell в секцията „Помощни програми“.

За да отворите PowerShell с помощта на диалоговия прозорец Изпълнение, натиснете +R, въведете „powershell“ и натиснете Enter.

Как да стартирам PowerShell на Windows 7?

В Windows 7 можете да намерите инструмента, като потърсите „powershell“ в менюто „Старт“.

Можете също да отворите PowerShell през менюто "Старт" в секцията "Аксесоари".

Очевидно горната команда в прозореца Run работи и в Windows 7.

Кой обикновено използва PowerShell?

Без съмнение PowerShell е изборът на много ИТ администратори. И с основателна причина, защото инструментът значително опростява операциите по управление и намалява количеството работа в големите корпоративни мрежи.

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

С PowerShell можете да свършите тази работа в рамките на няколко минути, тъй като цялата операция може да се извърши с един скрипт, който ще събере информация за услугите, изпълнявани на посочените сървъри, и ще я запази като текстов файл, напр.

PowerShell ви позволява да правите много повече, отколкото може да се обхване в една статия, така че ако наистина се интересувате, горещо ви препоръчваме да закупите и прочетете една от многото книги, които описват силата на този инструмент.

Приятен ден!

В тази статия ще разгледаме такава технология от Microsoft като Windows PowerShell, ще говорим за това какво е PowerShell, какво представляват кратки команди и тръбопровод, как се пишат скриптове и модули, както и други също толкова важни и полезни функции на Windows PowerShell.

Какво допринесе за появата на Windows PowerShell?

Преди PowerShell имаше ( и има) следните инструменти за автоматизация и администриране на услуги: Windows command line и Windows Script Host. Но тези технологии имат недостатъци.

Командният ред на Windows също има способността да изпълнява някои административни задачи и възможността да записва алгоритъм от действия, запазвайки го като скрипт (bat файл), докато можете да използвате определени програмни елементи, например да използвате променливи, условни конструкции, и дори нещо като цикли.

Повечето софтуерни продукти имат конзолен интерфейс, т.е. можем да управляваме програмата с помощта на командния ред, като същевременно спестяваме ресурси поради липсата на разходи за работа с графичен интерфейс. Microsoft дори пуска издания без графичен интерфейс за сървърната операционна система Windows Server ( Server Core, Windows Server 2016 дори има Nano Server), но всичко това не е достатъчно, тъй като възможностите на командния ред са ограничени, т.е. Няма да можем да напишем някаква сложна логика, за да автоматизираме нещо, а дори и да можем, това ще отнеме време и знания.

Също така, недостатък на командния ред е, че за пълното управление на сървъра използваме различни конзолни помощни програми на софтуерни продукти и следователно използването на командния ред за администриране всъщност е трудно, от гледна точка на факта, че всички тези помощни програми имат различни синтаксис, параметри, методи на използване и за изпълнение на типични задачи, т.е. всеки ден, трябва да запазите всичко това в паметта и за да изпълнявате нетипични задачи, трябва първо да прочетете помощта или документацията.

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

В резултат на това Microsoft трябваше да разработи инструмент за администриране за системни администратори, който да задоволи 100% всички нужди на системните администратори, както по отношение на възможностите за администриране и автоматизация, така и по отношение на удобството и лекотата на използване, така се появи Windows PowerShell.

Какво е Windows PowerShell?

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

В Windows PowerShell Microsoft разработи концепцията за кратки команди ( кратки команди), което е система за именуване на команди " Глагол, съществително" Тази система позволява на системните администратори бързо да овладеят и опростят работата с PowerShell.

С Windows PowerShell можете:

  • Достъп до файловата система;
  • Управление на регистъра;
  • Управление на услугите;
  • Управлявайте процеси;
  • Конфигурирайте операционната система;
  • Инсталиране на софтуер;
  • Инсталиране на сървърни роли и компоненти;
  • Администриране и конфигуриране на сървърни роли и компоненти;
  • Писане и използване на скриптове за автоматизиране на управлението и администрирането;
  • Изпълнявайте други задачи на системния администратор.

Windows PowerShell съдържа много често използвани помощни програми и команди, които можете да стартирате от командния ред, като ipconfig, ping и други. Това беше направено, за да се улесни преходът на системните администратори от командния ред към PowerShell.

Освен това, за удобство, много често използвани команди и помощни програми в PowerShell имат синоними ( Псевдоним), например cls е синоним на cmdlet Clear-Host, dir е синоним на Get-ChildItem ( пълният списък със синоними може да се види чрез стартиране на cmdlet Get-Alias ​​​​).

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

След като бъде намерена необходимата команда, можете да разгледате инструкциите за работа с тази команда, т.е. помощ, има специален Get-Help cmdlet за тези цели, например следната команда ще покаже помощ за Get-Command cmdlet:

Get-Help Get-Command

Помощта в Windows PowerShell може да бъде кратка, подробна ( параметър -Подробно), пълен ( параметър -Пълен), и можете също да показвате само примери ( параметър - Примери). Следната команда ще покаже само примери за използване на cmdlet Get-Command:

Get-Help Get-Command -Примери

Помощта за PowerShell може да се актуализира, т.е. може да се актуализира с командата Update-Help.

Версии на Windows PowerShell

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

В Windows Server 2008 PowerShell 1.0 дойде като компонент, който също трябваше да бъде инсталиран.

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

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

С всяка нова версия PowerShell става все по-мощен инструмент за администриране; за сравнение, първият PowerShell имаше около 130 cmdlets, а в PowerShell 5.0 те вече са над 600!

Можете да разберете текущата версия на PowerShell, като използвате свойството PSVersion на вградената променлива $PSVersionTable, например изпълнете следната команда:

$PSVersionTable.PSVersion

Или стартирайте cmdlet

Get-Variable -Name PSVersionTable –ValueOnly

където стойността на PSVersion ще бъде версията на PowerShell.

Език PowerShell

PowerShellе обектно-ориентиран скриптов език за програмиране. Използва се за писане на команди за управление на всички компоненти на операционната система Windows в Windows PowerShell и за писане на скриптове за автоматизиране на административни задачи в Windows PowerShell Integrated Scripting Environment (ISE). Въпреки че езикът PowerShell е създаден за административни задачи, той е пълноценен скриптов език за програмиране, тъй като има програмни конструкции, които присъстват във всеки език за програмиране, като например: условия, цикли, обработка на грешки, работа с променливи, обекти и масиви.

Езикът PowerShell има единен синтаксис за писане на команди и структура за именуване на тези команди, базирана на принципа „ Глагол, съществително“, което прави този език интуитивен както за програмисти, така и за системни администратори.

Windows PowerShell

Windows PowerShellе среда за изпълнение на команди и скриптове в PowerShell. Тази обвивка има същите възможности като командния ред, като например: съхраняване на историята на изпълнение на команди, персонализиране на външния вид на обвивката, завършване на изпълнението на команда с клавишната комбинация Ctrl+C, както и много други функции, които не са в обвивка на командния ред, например такава прекрасна функция като " подчертаване на синтаксиса» ( въведен в PowerShell 5.0).

Има няколко начина за стартиране на PowerShell, например:

  • От командния ред, като напишете PowerShell;
  • Чрез диалоговия прозорец " Изпълни» ( клавишна комбинация Win+R), също като въведете PowerShell;
  • В Windows 7 - Старт->Всички програми -> Аксесоари -> Windows PowerShell -> Windows PowerShell;
  • В Windows 8.1 или Windows Server 2012 R2 - Старт->Всички програми -> Системни инструменти -> Windows PowerShell;
  • В Windows 10 или Windows Server 2016 - Старт->Всички програми -> Директория на Windows PowerShell ( в група W) -> Windows PowerShell.

Пример за стартиране на PowerShell в Windows Server 2016

Екранна снимка на PowerShell в Windows Server 2016

Кратки команди в PowerShell

Cmdlet (cmdlet) е команда на Windows PowerShell, която ви позволява да взаимодействате с обекти на операционната система, за да ги управлявате. Тези команди са част от езика PowerShell. Кратки команди са изградени на принципа „ Глагол, съществително", разделени с тире (-); с други думи, първо посочваме какво да правим и с тире посочваме какво да правим. Например командата Get-Help, където Get е глагол, означаващ " Вземете" и Помощ е съществително " Помогне" в контекста на PowerShell " Покажи – Помощ" Кратки команди на PowerShell връщат резултати като обекти, което е една от основните разлики от командния ред на Windows, в който командите връщат само текст на екрана.

В допълнение към кратки команди за получаване на данни (Get), има и типове кратки команди като:

  • Add – добавяне на данни;
  • Ясно – ясно;
  • Активиране – активиране;
  • Disable – изключване;
  • Ново – създаване;
  • Премахване – премахване;
  • Комплект – комплект;
  • Старт - старт;
  • Стоп – стоп;
  • Експорт – износ;
  • Внос – внос;
  • И много други.

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

Get-Command -CommandType cmdlet

Както вече разбрахте, cmdlet имат параметри, с които можем да определим действията на cmdlet. Параметрите могат да бъдат задължителни или незадължителни; например кратката команда Get-Command няма задължителни параметри.

Картината по-долу показва начин за търсене на cmdlet по глагол ( Параметър на глагола). В този случай показахме списък с кратки команди, които могат да рестартират нещо.

Екип

Get-Command -Verb Restart

За да търсите cmdlet по съществително, трябва да използвате параметъра Noun. Например по-долу имаме списък с кратки команди, които работят с услуги.

Екип

Get-Command -Съществително Услуга

Ако не намерите желания cmdlet по пълното му име, можете да използвате маска във формат *Текст*.

Тръбопровод в PowerShell

Една от основните характеристики на Windows PowerShell е възможността за използване на конвейер при изпълнение на команди.

Конвейер– това е прехвърляне на резултата от cmdlet чрез вертикална лента (|) към друг cmdlet. В същото време, както си спомняте, в PowerShell кратки команди работят с обекти и връщат обекти; съответно обектите също се прехвърлят по тръбопровода.

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

Например, нека разберем името на най-големия файл в директорията "C:\Windows\System32" ( прост пример за тръбопровод).

Екип

Get-ChildItem -Path "C:\Windows\System32" -File | Сортиране-Дължина на обекта -Низходящ | Избор на обект - Първи 1

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

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

Фоново изпълнение на задачи

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

Можете да управлявате всички задачи, които се изпълняват във фонов режим, например да видите списъка със задачи, да спрете задачата, да изтриете задачата и, разбира се, да видите резултата от задачата.

Windows PowerShell има следните командлети за работа с фонови задания:

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

За да работите във фонов режим, трябва да напишете командата Start-Job и във фигурни скоби () команда или набор от команди, които искате да изпълнявате във фонов режим.

Например, нека изпълним някаква задача ( показване на списък с услуги) във фонов режим, след това погледнете списъка с фонови задачи и покажете резултата от нашата работа ( тези. списък на услугите).

Изпълнете задача във фонов режим

Start-Job (Get-Service)

Разглеждаме списъка със задачи, изпълнявани във фонов режим

Показване на резултата от Job1

Получаване на работа Job1

Както можете да видите, сега имаме задача със статус „ Завършено“, т.е. вече е завършено ( Get-Service просто работи бързо).

За да видите резултата от фоновата задача, т.е. Get-Service cmdlet, изпълнихме командата Receive-Job и й предадохме името на заданието ( стойността на идентификатора също е възможна). В резултат на това показахме списък с услуги.

Дистанционно управление с помощта на PowerShell

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

Има няколко метода за дистанционно управление:

  • Използване на параметъра – име на компютър (много отбори го имат). С други думи, предавате името на компютъра, на който искате да изпълните командата, като параметър. Методът има недостатъка, че е ограничен до изпълнение на една команда;
  • Използване на сесии. Cmdlet Въведете-PSSession (интерактивна сесия). По този начин се свързвате с отдалечен компютър и всички команди, които въвеждате в PowerShell, ще бъдат изпълнени на отдалечения компютър по същия начин, както ако сте въвели командите директно на отдалечения компютър. Методът има и недостатъка, че сесията е ограничена до един компютър;
  • Използване на cmdlet Invoke-Command. Използвайки този метод, можете да изпълнявате команди или скриптове на един компютър или на няколко.

Например, за да се свържете с отдалечен компютър ( в примера по-долу ServerName) в интерактивна сесия изпълнете следната команда:

Въведете-PSSession ServerName

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

Ако сте написали алгоритъм, най-вероятно ще искате да го запазите, за да го използвате в бъдеще. Windows PowerShell разполага със скриптов механизъм за тази цел.

Същността на този механизъм е следната: пишете необходимия набор от команди и го запазвате като скрипт - това е обикновен текстов файл с разширение .PS1.

След това, за да стартирате този скрипт, просто го стартирайте в PowerShell. В този случай трябва или да посочите пълния път до файла със скрипта, или да отидете в директорията със скрипта и да го извикате по име.

важно!

По подразбиране стартирането на скриптове на Windows е забранено! За да видите правилата за изпълнение на скрипта, изпълнете cmdlet Get-ExecutionPolicy. В резултат на това ще върне текущата политика, например:

  • Ограничено – изпълнението на всякакви скриптове е блокирано ( стойност по подразбиране);
  • AllSigned – разрешено е изпълнение на скриптове, които имат цифров подпис;
  • RemoteSigned – разрешено е изпълнение на локални скриптове, всички изтеглени скриптове трябва да имат цифров подпис;
  • Неограничен - разрешено е изпълнение на всякакви скриптове ( не се препоръчва, тъй като не е безопасно!).

За да активирате изпълнението на скриптове, трябва да използвате cmdlet Set-ExecutionPolicyс един от горните параметри.

Например, за да разрешите изпълнението на локални скриптове, изпълнете следната команда и приемете промените, като натиснете Y.

Set-ExecutionPolicy RemoteSigned

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

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

За да направите това, трябва да посочите ключовата дума Function и след това да напишете алгоритъма за работа с тази функция във фигурни скоби (), т.е. набор от команди ( например някои често използвани процедури: създаване на потребител с определени права, изчистване на определени директории и т.н). След това трябва да запишете всичко това в скрипт, но само с разширение .psm1, тъй като този файл вече ще бъде модул.

Това не е всичко, този файл трябва да бъде поставен в директорията, където PowerShell търси модули. Има няколко такива директории ( специална директория в потребителския профил, директорията, в която е инсталиран PowerShell), те могат да се видят в променливите на средата на PowerShell. За да направите това, изпълнете следната команда

Get-ChildItem Env:\PSModulePath | Формат-Таблица -Авторазмер

След като поставите модула, който сте написали, в специална директория, можете да получите достъп до вашите функции като нормални команди на PowerShell.

Windows PowerShell Integrated Scripting Environment (ISE)

За да бъде удобно писането на скриптове, функции и съответно модули, Microsoft разработи специална графична програма Интегрирана среда за скриптове(ISE) - Интегрирана среда за скриптове. Много е удобно да работите в тази програма и също така има мощна функционалност ( създаване на множество раздели със скриптове, изходна област, вграден дебъгер и др).

Можете да го стартирате така:

  • В Windows 7 - Старт -> Всички програми -> Аксесоари -> Windows PowerShell -> Windows PowerShell ISE;
  • В Windows 10 или Windows Server 2016 - Старт->Всички програми -> Директория на Windows PowerShell ( в група W) -> Windows PowerShell ISE.

Забележка! ISE няма да работи на система Windows Server, инсталирана в изданието Server Core.

Екранна снимка на интегрираната скриптова среда на PowerShell (ISE) в Windows Server 2016

Това е всичко за мен, надявам се материалът да ви е бил полезен! Късмет!

Windows PowerShell е един от важните инструменти в ръцете на системния администратор на Windows. PowerShell е мощен инструмент, който не бива да се пренебрегва. Тази статия има за цел да предостави основни умения за Windows PowerShell.

PowerShell е нещо повече от обвивка на командния ред. Първата версия на PowerShell се появи през 2006 г., причината за нейното развитие беше примитивността на класическия команден ред на Windows, който не позволяваше изпълнението на сложни алгоритми.

Windows PowerShell се предлага предварително инсталиран на Windows 7, 8, 8.1 и Windows Server 2008 R2, 2012 R2 и може също да се добави към Windows XP SP3, Vista и Windows Server 2003 SP2. Интерфейсът на PowerShell наподобява познатия интерфейс на командния ред.


Интерфейс на Windows PowerShell

Както бе споменато по-горе, въпросът не се ограничава до интерфейса на командния ред. PowerShell предоставя на системния администратор собствен скриптов език, който ви позволява да автоматизирате сложни действия.

Командите, които изпълнявате в PowerShell, могат да бъдат под формата на кратки команди, функции, скриптове и външни изпълними файлове.

Cmdlets е нов тип команда, вградена в PowerShell. Командите от този тип се компилират в dll библиотеки и се зареждат в процеса на PowerShell, когато стартира. Самите командлети не се изпълняват като приложения.

Имената на кратки команди съответстват на шаблона "глагол, съществително". Глаголът описва действието, което искаме да извършим, а съществителното описва обекта, върху който ще се извърши действието. Например, за да изчистите екрана на конзолата, трябва да въведете командата Clear-Host. Можете да видите наличните команди, като напишете Get-Command в конзолата.

Кратки команди могат да имат параметри. Най-общо изглежда така:

cmdlet_name -параметър1 -параметър2 аргумент1 аргумент2

Аргументите са параметри, които нямат имена.

Как работи? Например, имаме командата dir, която показва съдържанието на директория.

Пример за командата dir

Да кажем, че съм загубил определен файл. Нека това да е помощен файл на Photoshop. Спомням си, че името на файла съдържа "photoshop" и че е pdf файл. Доколкото си спомням, файлът е в тази директория. Мога да изброя всички файлове в директория, както в примера по-горе, и да потърся файла ръчно. Или мога да използвам параметъра -filter, който ще покаже само онези файлове, които отговарят на конкретен аргумент. Аргументът ще бъде *photoshop*.pdf. Има звездички около думата „photoshop“, защото не помня точното име на файла и казвам на PowerShell, че може да има всякакви знаци преди и след „photoshop“. Също така ви казвам да потърсите pdf файла.

И така, файлът, който търсихте, беше намерен. В общия изглед на cmdlet-ите беше посочено, че един cmdlet може да има няколко параметъра. От своя страна параметрите не винаги имат аргументи.

Нека усложним малко нашия пример. Да кажем, че сега трябва да намеря книга от Кристофър Доуърти. Екип dir -филтър *dougherty*.pdfне ми даде нищо. Това означава, че книгата не е в тази директория, но си спомням със сигурност, че е някъде тук, явно в поддиректории. За да търсите в поддиректории, ще добавим параметъра -recurse.

Търсенето ще отнеме малко повече време, но книгата, която търсите, ще бъде намерена.

Както можете да видите, параметърът -recurse не съдържа аргумент. Самите параметри могат да бъдат в произволен ред, основното е да следвате стриктно логиката, когато необходимият аргумент идва след параметъра, за който е предназначен. Така че командата dir -филтър *dougherty*.pdf -рекурсияще работи точно както dir -recurse -filter *dougherty*.pdf.

Имената на параметрите могат да бъдат написани в съкратена форма, което е доста удобно за ежедневна работа с командния ред. Съкращението трябва да е разбираемо за преводача, т.е. не допускайте двойно тълкуване. Например, можем да съкратим параметъра -recurse до просто -r и съкращаването на -filter до -f ще доведе до грешка, т.к. Има и параметър -force. В този случай можете да съкратите -filter до -fi.

Така че сега имаме представа за кратки команди. Следващият път .