Урок за Powershell за начинаещи
⚡ Умно обобщение
PowerShell Scripting е обектно-ориентиран механизъм за автоматизация, изграден върху .NET Framework. Той комбинира cmdlets, скриптове и скриптов език, за да помогне на ИТ администраторите да автоматизират Windows, управлявайте услуги и свързвайте отдалечени машини от един команден ред.

Какво е PowerShell?
Windows PowerShell е обектно-ориентиран механизъм за автоматизация и скриптов език. Той е предназначен за ИТ специалисти и системни администратори, които трябва да контролират и автоматизират администрирането на Windows и други приложения. PowerShell разширява концепциите, изучени в Windows Команден ред и Windows Скрипт хост с нови обекти, командлети и мощен конвейер.
Той съчетава гъвкавостта на скриптовете, скоростта на командния ред и дълбочината на графичния администраторски инструмент. С него администраторите могат да решават проблеми ефективно и да елиминират часове ръчна работа. Този урок ви превежда през основните неща, от които се нуждаете, за да научите PowerShell от нулата.
Защо да използваме PowerShell?
Най-важните причини да използвате PowerShell са:
- Предлага добре интегрирано изживяване от командния ред за операционната система.
- Осигурява пълен достъп до всеки тип в .NET framework.
- Доверен от системните администратори в различни предприятия.
- Позволява ви да манипулирате компонентите на сървъра и работната станция с няколко реда.
- Предназначено за системни администратори с изчистен глаголно-съществителен синтаксис.
- По-сигурно от бягане vbscript или други наследени скриптови езици.
История на PowerShell
PowerShell 1.0 беше пуснат за първи път през 2006 г. PowerShell вече е във версия 7.2 и по-нова. С пускането на нови версии, неговите възможности и хостинг среди се увеличиха значително.
История на PowerShell по версии:
- PowerShell 1.0 — подкрепена местна администрация на Windows 2003 сървър.
- PowerShell 2.0 — интегриран с Windows 7 и Windows Server 2008 R2. Добавени са отдалечено взаимодействие, транзакции, фонови задачи, събития и отстраняване на грешки.
- PowerShell 3.0 — доставен с Windows 8 и Windows Сървър 2012 като част от Windows Рамка за управление. Добавени са планирани задачи, свързаност на сесии и автоматично зареждане на модули.
- PowerShell 4.0 — доставен с Windows 8.1 и Windows Server 2012 R2. Добавена е конфигурация на желаното състояние, подобрено отстраняване на грешки и мрежова диагностика.
- PowerShell 5.0 — част от Windows Management Framework 5. Добавени са отдалечено дебъгване, дефиниции на класове и .NET изброявания.
- PowerShell 7.2 — изграден върху .NET 6.0. Добавя нови оператори, динамични изгледи за грешки и автоматични известия за версии.
Характеристики на PowerShell
- Отдалечено взаимодействие с PowerShell: извикване на скриптове и командлети на отдалечена машина.
- Фонови задачи: изпълнявайте скриптове или конвейери асинхронно на локалната машина или на много отдалечени машини.
- Сделки: позволяват на командлетите и разработчиците да извършват групирани операции, които могат да бъдат извършени заедно (commit) или отменени (rollback).
- Събитие: слушайте, препращайте и действайте въз основа на управленски и системни събития.
- Мрежово прехвърляне на файлове: вградена поддръжка за приоритизиран, асинхронен, ограничен трансфер на файлове между машини чрез услугата за интелигентно прехвърляне във фонов режим (BITS).
Как да стартирате PowerShell
PowerShell е предварително инсталиран на всяка скорошна версия на WindowsСтартирайте го, както следва.
Стъпка 1) Потърсете PowerShell в Windows, след което го изберете и щракнете върху него.
Стъпка 2) Отваря се прозорецът на PowerShell.
Cmdlet срещу команда
A командлет (произнася се „command-let“) е лека команда, използвана в средата на PowerShell. PowerShell извиква командлети (cmdlets) от командния ред и можете да създадете свои собствени, използвайки PowerShell API. Командлетите се различават от традиционните команди на shell по следните начини:
- Кратки команди са . NET Framework обекти от клас; те не могат да бъдат изпълнени като самостоятелни изпълними файлове.
- Командлетите могат да бъдат написани само с дузина реда код.
- Разборът, форматирането на изхода и представянето на грешки се обработват от средата за изпълнение, а не от самата команда.
- Командлетите работят с обекти, така че текстовите потоци и обектите могат да преминават през канали.
- Командлетите са базирани на записи и обработват по един обект в даден момент.
Повечето функционалности на PowerShell се предоставят чрез командлети, които винаги използват модел на именуване глагол-съществително (винаги в единствено число). Командлетите връщат обекти, а не текст. писменост — различна от командлет — е поредица от команди, съхранени в текстов файл с .ps1 удължаване.
Често срещани глаголи, които ще използвате, за да научите PowerShell, включват:
- Обратна — извличам нещо.
- Начало — пускам нещо.
- от — изведете нещо.
- Спиране — спиране на нещо, което работи.
- комплект — дефинирам нещо.
- НОВ — създай нещо.
Важни PowerShell команди
Извикай помощ: преглед на помощ за команди и теми на PowerShell.
Пример: показване на помощ за Format-Table команда.
Get-Help Format-Table
Get-Command: получаване на информация за всичко, което може да бъде извикано.
Пример: генериране на списък с командлети и функции, инсталирани на машината.
Get-Command
Get-Service: намира всички услуги на машината.
Пример: вземете всяка услуга, чието име започва с „vm“.
Get-Service "vm*"
Get-Member: покажете какво може да се направи с даден обект.
Пример: списък с членовете на виртуалните услуги, върнати от Get-Service.
Get-Service "vm*" | Get-Member
Други полезни командлети:
Get-Module— показване на инсталирани пакети с команди.Get-Content— четене на файл и обработка на неговото съдържание.Get-*wildcard — избройте всички cmdlet-и, които започват с „Get-“.
Пример: създайте папка.
New-Item -Path 'X:\Guru99' -ItemType Directory
Изход:
Типове данни в PowerShell
PowerShell поддържа стандартните типове данни на .NET, така че можете да съхранявате всяка стойност чисто в променлива.
��пециални променливи
PowerShell предоставя редица вградени специални променливи. Най-полезните от тях са изброени по-долу.
| Специална променлива | Descriptйон |
|---|---|
| $Error | Масив от обекти за грешки, представляващи най-скорошните грешки. |
| $Host | Показва името на текущото приложение за хостинг. |
| $Профил | Съхранява пълния път на потребителския профил за обвивката по подразбиране. |
| $PID | Съхранява идентификатора на процеса. |
| $PSUICulture | Съдържа името на текущата култура на потребителския интерфейс. |
| $NULL | Съдържа празната или null стойност. |
| $False | Съдържа булевата стойност FALSE. |
| $True | Съдържа булевата стойност TRUE. |
Скриптове на PowerShell
PowerShell скриптовете се съхраняват в .ps1 файлове. По подразбиране не можете да стартирате скрипт, като щракнете двукратно върху него — тази предпазна мярка предпазва системата от случайно увреждане. За да изпълните скрипт, щракнете с десния бутон върху него и изберете „Стартирай с PowerShell“.
Политиката за изпълнение контролира кои скриптове могат да се изпълняват. Вижте текущата политика с Get-ExecutionPolicyВъзможните стойности включват:
- Ограничен — не са разрешени скриптове. Това е настройката по подразбиране.
- AllSigned — изпълняват се само скриптове, подписани от доверен разработчик, и всеки от тях изисква потвърждение.
- RemoteSigned — изпълняват се вашите собствени скриптове, както и подписани скриптове от надеждни източници.
- неограничен — всеки скрипт може да се изпълни (използвайте пестеливо).
Стъпки за промяна на политиката за изпълнение:
Стъпка 1) Отворете подканата на PowerShell с повишени права, като щракнете с десния бутон върху PowerShell и изберете Изпълни като администратор.
Стъпка 2) Изпълнете командите по-долу.
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- Въведете
Yпри подкана за потвърждение. Get-ExecutionPolicy
Първият PowerShell скрипт
Отворете Notepad и напишете:
Write-Host "Hello, Guru99!"
Запазете файла с .ps1 разширение — например, FirstScript.ps1.
В PowerShell изпълнете скрипта с:
& "X:\FirstScript.ps1"
Какво е PowerShell ISE?
- Windows Интегрирана среда за скриптове (ISE) на PowerShell е редакторът по подразбиране за PowerShell. В ISE можете да изпълнявате команди, да пишете тестове и да отстранявате грешки в скриптове в графична, базирана на прозорец среда. Той поддържа многоредово редактиране, оцветяване на синтаксиса, довършване с табулация, селективно изпълнение и други.
PowerShell ISE предлага и конзолен панел, който изпълнява команди директно, докато страничните панели показват източника на вашите скриптове и всички инструменти, свързани към ISE. Можете да отваряте няколко прозореца на скриптове едновременно – полезно при отстраняване на грешки в скриптове, които зависят от функции, дефинирани в други скриптове или модули.
Пресъздайте по-ранния скрипт в ISE:
- Поставете кода в редактора.
- Запазете скрипта.
- Натиснете F5, за да го стартирате.
- Наблюдавайте изхода в панела на конзолата.
Пример 2: Следният скрипт показва безплатно виртуална памет на машината.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShell Concepts
Следните понятия формират речника на ежедневната работа с PowerShell.
| Понятие | Descriptйон |
|---|---|
| Cmdlets | Вградени команди, написани на .NET езици като VB или C#. Разработчиците разширяват набора, като зареждат или пишат PowerShell конзолни модули. |
| Функции | Команди, написани на самия език PowerShell, без да е необходима IDE, като например Visual Studio. |
| Scripts | Текстови файлове на диск с .ps1 удължаване. |
| Приложения | Съществуващ Windows програми, извиквани от обвивката. |
| Какво, ако | Указва на командлета да не се изпълнява, а да опише какво би се случило, ако това се случи. |
| потвърждавам | Указва на командлета да покаже команда преди изпълнение. |
| многословен | Осигурява по-високо ниво на оперативна детайлност. |
| Debug | Указва на командлета да генерира информация за отстраняване на грешки. |
| ErrorAction | Определя какво прави командлетът при грешка. Допустими стойности: continue, stop, silentlycontinue, inquire. |
| ErrorVariable | Назовава променливата, която съдържа информация за грешка. |
| OutVariable | Указва на командлета да съхрани резултата си в определена променлива. |
| отBuffer | Съдържа определен брой обекти, преди да ги изпрати по конвейера. |
Предимства на използването на PowerShell скриптове
- PowerShell скриптовете са мощни и кратки — можете да постигнете много само с няколко реда.
- Променливите се декларират с
$<variable>синтаксис. - Променливите могат да съдържат изходни данни от команди, обекти и примитивни стойности.
- Типът на променливата не е необходимо да се посочва изрично.
PowerShell срещу команден ред
| PowerShell | Command Prompt |
|---|---|
| Дълбоко интегриран с WindowsПредлага интерактивен команден ред и пълен скриптов език. | Интерфейсът за команден ред по подразбиране, предоставен от MicrosoftПросто Win32 приложение, което комуникира с други Win32 обекти. |
| Използва командлети, които могат да бъдат извикани интерактивно или чрез скриптове за автоматизация. | Няма командлети. |
| Третира изхода като обекти, така че той да може да се прехвърли в друг cmdlet през конвейера. | Изходът е обикновен поток от текст, а не обекти. |
| Разширени функции, възможности и вътрешна архитектура. | Базова обвивка, подходяща за стари пакетни задачи. |
Приложения на PowerShell
PowerShell се превърна в стандартен избор за ИТ администраторите, защото драстично намалява усилията в големи корпоративни мрежи. Представете си, че управлявате повече от четиристотин сървъра и внедрявате ново решение за сигурност, което зависи от специфична услуга, работеща на всеки хост.
Ръчното влизане във всеки сървър е бавно и податливо на грешки. Един PowerShell скрипт може да проучи всеки сървър за минути, да докладва кои хостове вече изпълняват услугата и дори да я активира на останалите. Скриптът улавя намерението веднъж и го прилага надеждно в целия сървър.
















