Як писати та як запускати скрипти PowerShell. Інші командлети Windows PowerShell
Керувати розширеними подіями SQL Serverможна за допомогою постачальника SQL Server PowerShell. Вкладена папка XEvent знаходиться на диску SQLSERVER. Отримати доступ до папки можна одним із таких способів.
У дереві папки XEvent можна переглядати існуючі сеанси розширених подій та пов'язані з ними події, цілі та предикати. Наприклад, якщо в папці PS SQLSERVER:\XEvent\ServerName \InstanceName > ввести cd sessions , натиснути клавішу ENTER, ввести dir і потім натиснути клавішу ENTER, то можна переглянути список сеансів, що зберігаються в цьому екземплярі. Також можна перевірити, чи виконується сеанс у Наразі(і якщо виконується, то протягом якого періоду), а також заданий запуск сеансу разом із запуском екземпляра.
Для перегляду подій, їх предикатів та цілей, пов'язаних із сеансом, можна змінити імена каталогів на ім'я сеансу, а потім переглядати або папку подій, або папку цілей. Наприклад, щоб переглянути події та їх предикати, пов'язані з сеансом відстеження справності системи за замовчуванням, у папці PS SQLSERVER:\XEvent\ServerName \InstanceName \Sessions> введіть команду cd system_health\events , натисніть клавішу Enter, введіть dir .
Постачальник SQL Server PowerShell надає широкий набір функцій для створення, зміни та керування сеансами розширених подій. У наступному розділі наведено деякі прості прикладивикористання скриптів PowerShell із розширеними подіями.
Скрипти повинні запускатися з розташування PS SQLSERVER:\> (для переходу до нього введіть у командному рядку sqlps ).
Скрипти використовують екземпляр SQL Server за промовчанням.
Скрипти повинні зберігатись з розширенням PS1.
Політика виконання PowerShell має дозволяти виконання скриптів. Щоб задати політику виконання, скористайтесь командлетом Set-Executionpolicy. (Для отримання додаткової інформації введіть get-help set-executionpolicy -detailedі натисніть клавішу Enter.)
Наступний скрипт створює новий сеанс із ім'ям TestSession.
#Script for creating a session. cd XEvent $h = hostname cd $h #Use the default instance. $ Store = dir | where ($_.DisplayName -ieq "default") $session = new-object Microsoft.SqlServer.Management.XEvent.Session -argumentlist $store, "TestSession" $event = $session.AddEvent("sqlserver.file_written") $ event.AddAction("package0.callstack") $session.Create()
Наступний скрипт додає мету «Кільцевий буфер» у сеанс, створений у попередньому прикладі. (У цьому прикладі демонструється використання методу Alter. Пам'ятайте, що додавати ціль можна лише після створення сеансу.)#Script for creating a session. cd XEvent $h = hostname cd $h #Use the default instance. $ Store = dir | where ($_.DisplayName -ieq "default") $session = new-object Microsoft.SqlServer.Management.XEvent.Session -argumentlist $store, "TestSession2" $event = $session.AddEvent("sqlserver.file_written") # Construct a predicate "equal_i_unicode_string(path, N"c:\temp.log")". $column = $store.SqlServerPackage.EventInfoSet["file_written"].DataEventColumnInfoSet["path"] $operand = new-object Microsoft.SqlServer.Management.XEvent.PredOperand -argumentlist $column $value = new-object Microsoft.SqlServ. Management.XEvent.PredValue -argumentlist "c:\temp.log" $compare = $store.Package0Package.PredCompareInfoSet["equal_i_unicode_string"] $predicate = new-object Microsoft.SqlServer.Management.XEvent.PredFunction$ operand, $value $event.SetPredicate($predicate) $session.Create()
Командлети PowerShell для виведення даних
Зазвичай у процесі роботи PowerShell генеруються деякі вихідні дані. Для виведення цих даних є спеціальні Out-командлети (командлети, назва яких починається з Out-). Коли команда PowerShell, що виконується, повертає дані, вони передаються по конвеєру на вхід Out-командлету, який обробляє їх і відправляє в пристрій виведення (на екран, у файл, на принтер і т.п.).
Для перегляду цих командлетів виконаємо команду:
Get-Command -Verb Out
Out-Host
Командлет Out-Host служить виведення даних на екран. Наприклад:
Get-Process PowerShell | Out-Host
Втім, додавати Out-Host до кінця команди зовсім необов'язково. В кінці конвеєра за замовчуванням знаходиться командлет Out-Default, який і перенаправляє все в Out-Host. Тобто. попередня команда еквівалентна команді:
Get-Process PowerShell | Out-Default
яка у свою чергу еквівалентна команді:
Get-Process PowerShell
Насправді механізм виведення ще заплутаніше. Як пам'ятаєте, результатом роботи PowerShell є об'єкти. Out-командлети не вміють працювати з будь-якими об'єктами, а лише зі спеціальним типом об'єктів форматування, тому при отриманні об'єкта викликають один із командлетів форматування (Format-*). Format-командлет надає Out-командлету об'єкти форматування, що описують порядок побудови вихідних даних, а Out-командлет відправляє їх у потрібний пристрій. Тобто. при виконанні команди:
Get-Process PowerShell
насправді відпрацьовує команда:
Get-Process PowerShell | Format-Table | Out-Host
Хоча додавати Out-Host до кінця команди необов'язково, але в деяких випадках зручно. Наприклад, він має ключ Paging, за допомогою якого можна організувати посторінковий висновок:
Get-Process | Out-Host -Paging
Командлет Out-File перенаправляє вихідні дані у вказаний файл, наприклад:
Get-Process PowerShell | Out-File proc.txt
За промовчанням дані у файлі перезаписуються. Заборонити перезапис існуючого файлу можна, вказавши ключ NoClobber, а якщо необхідно дописувати дані в існуючий файл, то можна використовувати ключ Append, який додає дані до кінця файлу:
Get-Process PowerShell | Out-File proc.txt -Append
Для виведення файлу можна використовувати скорочений синтаксис. Наприклад для запису:
Get-Process powershell >proc.txt
або для додавання до кінця файлу:
Get-Process powershell >> proc.txt
Out-GridView
Командлет Out-GridView виводить дані у вигляді графічної таблиці, в якій їх можна відфільтрувати та відсортувати за потрібною ознакою. Для наочності можна вказати ключ Title, який відображатиметься в заголовку:
Get-Process | Out-GridView -Title processes
Починаючи стрілкою версії PowerShell Out-GridView підтримує ключ PassThru, що дозволяє передати отримані дані далі конвеєру. Наприклад, можна вивести список процесів, у графічному оснащенні відібрати потрібні та передати їх командлету Stop-Process, який зупинить вибрані процеси:
Get-Process | Out-GridView -PassThru | Stop-Process
Командлет Out-Null використовується, якщо вихідні дані відображати не потрібно. Він відправляє отримані дані пристрій NULL, тобто. видаляє їх. Наприклад візьмемо таку команду:
$process = Get-WmiObject win32_process -Filter ″Name = ′Notepad.exe′″
$process.Terminate()
Крім основного впливу (зупинка процесу) вона виводить багато зайвої інформації. Щоб позбутися від неї, відправимо висновок в Out-Null, наприклад так:
$process.Terminate() | Out-Null
$process.Terminate() >$null
Командлет Out-String перетворює вхідні дані на масив рядків. По суті, Out-String перетворює об'єкти PowerShell у рядки, з якими далі можна працювати як зі звичайним текстом (форматувати, проводити пошук і т.п.).
Наприклад виведемо процес, збережемо його в змінну $a і подивимося тип даних:
$a = Get-Process powershell
$a.GetType()
Потім скормимо вміст Out-String, а висновок збережемо в змінну $b:
$b = $a | Out-String
$b.Get-Type()
Як очевидно з прикладу, на вході Out-String тип даних Process, але в виході String.
Out-String принципово відрізняється від інших out-командлетів. Оскільки звичайні out-командлети працюють із кінцевим результатом попередніх команд, то самі вони не виробляють жодних вихідних даних. Саме тому out-командлет зазвичай ставиться останнім у командному рядку, адже після нього у конвеєрі не залишається нічого, з чим можуть працювати інші командлети.
На відміну від них Out-String приймає об'єкти, перетворює їх на масив рядків і передає далі конвеєром. За замовчуванням дані накопичуються та повертаються одним рядком, але за допомогою ключа Streamможна вказати виведення окремого рядка для кожного об'єкта.
Наприклад виведемо список системних служб з усіма властивостями та відформатуємо його у вигляді таблиці:
Get-Service | Format-Table -Property * -AutoSize
Оскільки ширина консолі межує 80 символами, більшість даних буде обрізано, що дуже здорово.
Щоб не обрізати висновок, направимо його в Out-String і збільшимо ширину:
Get-Service | Format-Table -Property * -AutoSize | Out-String -Width 1024
Тепер усі дані потрапили на екран, але все одно виглядає не дуже.
Виправимо положення, передавши висновок Out-String командлету Out-File:
Get-Service | Format-Table -Property * -AutoSize | Out-String -Width 1024 | Out-File service.txt
На виході отримуємо файл із таблицею потрібної ширини, а для перегляду є смуга прокручування. Таким чином можна створювати та переглядати таблиці практично будь-якої ширини.
Командлет Out-Printer перенаправляє виведення на принтер. Наприклад:
Get-Service | Format-Table -Property * -AutoSize | Out-File service.txt -Width 1024
Get-Content service.txt | Out-Printer
Вихід надсилається на принтер, заданий у системі за промовчанням. Для вказівки альтернативного принтера можна використовувати ключ Name.
В адмініструванні завжди є місце творчості. Хочеш зробити якусь автоматизацію рутинного завдання? Будь ласка! Чи потрібно щось регулярно перевіряти на активність? Не питання! Хочеш обробити якийсь гігантський звіт і вивести лише актуальні дані? Теж можна. Всі ці та багато інших завдань найкраще вирішувати за допомогою скриптів, і мова PowerShell у випадку з Windows – оптимальний вибір.
Що таке PowerShell і чим він добрий
Користувачі UNIX і Linux, а з якогось моменту і macOS звикли до того, що під рукою завжди є Bash - трохи старомодний, але універсальний і потужний засіб, за допомогою якого всього кілька рядків можна творити дивовижні речі. Прописуєш новий скрипт у cron - і готово, він вже крутиться на твоєму комп'ютері або на сервері і непомітно робить щось корисне.
Повертаючись у Windows (а без цього іноді ніяк), розумієш, що скрипти.bat хоч і хороші, але рятують не завжди: дуже обмежені їх можливості. І якщо ти досі вважав, що PowerShell - це невідома штуковина, заради якої потрібно щось там піднімати і налаштовувати, то не поспішай з висновками - він, якщо розібратися, зовсім непоганий.
Windows PowerShell - це засіб автоматизації з відкритими вихідними джерелами, що складається з оболонки (командного рядка) і скриптової мови. Вперше він був показаний у 2003 році (тоді він називався Monad). PowerShell 2.0 вийшов у складі Windows 7 та Windows Server 2008 R2 і з тих пір є у Windows як стандартний компонент. Його навіть увімкнули у Windows XP SP3. PowerShell побудований на основі .NET Framework та інтегрований з ним. PowerShell може звертатися до COM, WMI та ADSI, а також, звичайно ж, виконує консольні команди.
Загалом, «пошик» має міцні зв'язки з продуктами Microsoft, чи то Active Directoryабо поштовий сервер Exchange. Це дозволяє без підключення до оснастки сервера звертатися до них через консоль і віддавати команди.
Якщо раніше ти не цікавився PowerShell, то швидше за все у тебе стоїть друга версія. Я рекомендую оновитися як мінімум до третьої - вона містить значно більше можливостей та корисних фішок. Якщо не вдаватися в подробиці, то PowerShell 2.0 входить близько десятка модулів і приблизно 350 команд, а PowerShell 3.0 вже близько 2300 командлетів з більш ніж 70 модулів. Хакер також писав про те, чим відрізняється найновіший PowerShell п'ятої версії з Windows 10.
Вибираємо середовище розробки та інструменти
Тепер давай розберемося, де найзручніше писати код. Можна, звичайно, і в Блокноті, Notepad++ або Sublime. Але це в даному випадку не грамотний вибір редактора. Найкраще починати знайомство з PowerShell, озброївшись тим, хто йде в комплекті.
![](https://winpcguide.ru/wp-content/uploads/2018/1494366.png)
Це навіть не редактор, а майже повноцінне середовище розробки. Тут є функція IntelliSense, яка дозволяє переглядати перелік командлетів та їх параметрів, змінних, утиліт та іншого. Підтримуються сніпети, є можливість розширення набору функцій за рахунок різних аддонів. Дуже корисно і вікно Commands. У ньому можна складати команди у візуальному режимі: вибираєш модуль, знаходиш потрібний командлет та задаєш йому необхідні параметри. Команда, що вийшла, можна скопіювати в консоль або відразу запустити на виконання. Загалом, такий собі конструктор для адміна. Ну і звичайно, є підсвічування синтаксису, дебаггер та багато іншого.
Тим не менш, у PowerShell ISE є і гідні конкуренти. Один з них - .
PowerGUI – це візуальне доповнення до PowerShell. Воно спрощує складання своїх сценаріїв до вибору необхідних командлетів. Береш те, що потрібно для вирішення завдання, і перетягуєш частини коду, доки не отримаєш скрипт. Одна з головних фішок PowerGUI – це Power Packs, готові скрипти, опубліковані спільнотою користувачів та викладені у вільний доступ. Тут є і прості команди на кшталт додавання користувачів, і складні - наприклад, управління свитчами і віртуальними машинами. Всі їх легко доповнювати та модифікувати відповідно до потреб.
![](https://winpcguide.ru/wp-content/uploads/2018/kymiconjed.png)
Фірми Sapien - більш просунуте середовище, яке розраховане на спільну розробку одного проекту великою кількістю учасників. Якщо ти колись мав справу з Visual Studio, то, гадаю, помітиш подібність. Серед корисних фішок PowerShell Studio - панель Ribbon, підтримка віддаленого налагодження, а також функції компілятора, які дозволяють включити скрипти у файли, що виконуються. Є підтримка різних версій PowerShell.
![](https://winpcguide.ru/wp-content/uploads/2018/kadob-wi777d.png)
Варто згадати і Script Browser для Windows PowerShell ISE. Це не середовище розробки, але дуже цікавий інструмент, розроблений в Microsoft. Script Browser відкриває доступ до бази готових скриптів, які можна використовувати як зразки для написання свого коду. А ще ця штука вміє аналізувати код, який ти пишеш, і нагадує, як його покращити.
![](https://winpcguide.ru/wp-content/uploads/2018/ltransfeb42.png)
Декілька корисних трюків
Розібравшись із редактором, можна приступати до написання коду. PowerShell – нескладна мова, і, я думаю, ти швидко розберешся, що до чого. Команди тут називаються командлетами, і кожен із них складається з двох частин. Спочатку йде дія, наприклад 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 |
Тепер можна завершити завислий процес:
Можна переглянути рекурсивно, правда вже трохи з більш складною логікою:
Можна також виконати
До речі, до кожного поля в вікні опції облікового записуабо комп'ютера можна звернутися та рахувати дані. Таким чином, можна робити цілі зрізи. Ось, наприклад, запит на основі даних про телефонні номери:
Get-AdUser-Filter* - Properties OfficePhone | FT OfficePhone, UserPrincipalName |
PowerShell у порівнянні з bat
Іноді завдання можна вирішити як старим дідівським методом, так і за допомогою PowerShell. Я рекомендую не лінуватися і використовувати PS, хоча б просто тому, що ти його швидше вивчиш і зможеш застосовувати в більш складних ситуаціях. До того ж ти поступово оціниш його синтаксис - більш елегантний та консистентний. Ось кілька прикладів, як речі робилися раніше, і як їх можна зробити за допомогою PowerShell.
Існують речі, які ми виконуємо щодня, будучи адміністраторами мережі Windows, але якби нас попросили зробити їх за допомогою командного рядка, на відміну від адміністраторів Linux, для нас, адміністраторів WindowsЦе було б дуже проблематично. Windows завжди був слабкий, коли йшлося про інструменти командного рядка. На мою думку, все змінилося з появою Windows Powershell. За допомогою Powershell (або інакше PS) можна виконати стільки різних функцій, які ми не могли виконувати раніше. У цій статті ми зосередимося на тому, як Powershell може допомогти нам виконувати деякі спільні мережеві функції з командного рядка. Продовжуйте читати, щоб дізнатися більше!
Що таке PowerShell?
Powershell – це встановлювана функція Windows Server 2008. Щоб інсталювати Powershell, потрібно встановити функцію Powershell за допомогою майстра додавання функцій. Процес установки займає близько хвилини, і як тільки компонент встановлений, у вас з'являється доступ до дивовижної мови сценаріїв командного рядка. На відміну від інших сценарних мов Windows, Powershell створено виключно для системних адміністраторів. Powershell використовує .NET та команди ("cmdlets" або "command-lets") у своїй роботі. Як користувач PS, ви можете використовувати команди окремо або зв'язувати їх разом, щоб виконувати більш складні завдання.
Коли ви встановили PS, ви можете запустити Пуск -> Усі програми -> Windows Powershell 1.0, і натиснути Windows PowerShell. На цьому етапі у вас має з'явитися блакитне вікно CLI, яке виглядає як показано на малюнку 1.
Малюнок 1: Вікно Windows Powershell Command
Ви завжди можете сказати, що працюєте в Powershell, оскільки у вікні "PS" на початку завжди є наступний рядок:
PS C:\Users\Administrators
Тепер, коли PowerShell встановлено і його вікно відкрито, дозвольте мені показати вам деякі загальні мережеві завдання, які можна виконати в PS.
Перерахувати IP адреси вашого сервера
Щоб отримати список IP адрес на вашому сервері Windows 2008 Server, вам потрібно використовувати наступну команду:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName . | Select-Object -Property IPAddress
Ось як виглядають дані після використання цієї команди на моєму Windows 2008 Server:
Рисунок 2: Перелік IP-адрес за допомогою Windows Powershell
Як видно з малюнка, вихідні дані показують нам, що я маю один адаптер з IP V4 адресою та IP V6 адресою на цьому сервері Windows 2008 Server. Само собою, це не є чимось дивним, але подумайте про те, що ви зможете зробити з цим, використовуючи інші сценарні функції.
Як вчить нас керівництво користувачів powershell, результати є масивом і ви можете подивитися IP адресу лише направивши ці дані в "Select-Object" (після відключення IPV6), приблизно так:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName . | Select-Object -ExpandProperty IPAddress
Рисунок 3: Перелік IP адреси ТІЛЬКИ з Windows Powershell
Отримання списку конфігурації мережного адаптера за допомогою Powershell
Щоб переглянути основну конфігурацію вашого мережевого адаптера, ви можете використовувати наступну команду:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE "ComputerName .
Хоча ця стаття присвячена розгляду використання PS у Windows Server 2008, ця утиліта також може використовуватись і в Windows XP, Vista або Server 2003. Ось приклад отриманих даних команди, запущеної на моїй робочої станції Windows XP:
Рисунок 4: PowerShell показує конфігурацію мережевого адаптерана Windows XP
Тестове опитування комп'ютера за допомогою PowerShell
Хоча командний рядок PS все ж таки може виконувати всі звичайні команди Windows(наприклад тестове опитування), сильна сторона Powershell полягає в тому, що ви можете взяти отримані дані і легко змінити їх.
Ось приклад того, як це можна зробити, надано керівництвом користувача Windows Powershell. У цьому прикладі результати Win32_PingStatus аналізуються за допомогою Select-Object. У цьому випадку дані просто показують час відповіді та код статусу.
Ось команда, яка використовувалася:
Get-WmiObject -Class Win32_PingStatus -Filter "Address="127.0.0.1"" - ComputerName . | Select-Object -Property Address,ResponseTime,StatusCode
А ось результати використання команди на моїй машині Windows:
Рисунок 5: PowerShell дані показують статус опитування, аналізованого за допомогою Select-Object
Дозвіл спільного доступу до папки за допомогою Windows Powershell
Буду з вами відвертий. Використання команд Powershell не завжди таке просто, як використання існуючих команд Windows, з якими ви вже знайомі. Ось приклад.
Наступна команда PS забезпечить загальний доступдо папки C:\temp як "davidtemp" і застосує до неї відмінну команду:
(Get-WmiObject -List -ComputerName . | Where-Object -FilterScript ($_.Name -eq "Win32_Share")).InvokeMethod("Create",("C:\temp","davidtemp",0,25, "David"s Temp Folder"))
З іншого боку, ви могли просто використовувати вже перевірену та випробувану команду net share:
Net share davidtemp=C:\temp /remark:"David"s Temp Shared Folder"
Малюнок 6: PowerShell дані та традиційна команда net share
Зверніть увагу, що команда Powershell не просто не спрацювала, але видала мені жахливу помилку. Я пробував цю команду на Windows XP і Vista, і я був адміністратором системи.
З іншого боку, команда net shareдуже проста і спрацювала з першої спроби. І хоча я намагаюся розповісти вам про принципи роботи з Powershell, не забувайте, що Powershell може використовувати традиційні мережеві команди Windows, які в багатьох випадках набагато простіше використовувати. Однак ви можете опинитися в ситуації, коли ці традиційні команди не роблять всього того, що вам необхідно, і саме тут на допомогу прийде Powershell.
Інші мережеві та складніші команди
Якщо ви збираєтеся використовувати тільки основні мережеві команди адміністрування в Powershell, ви, можливо, заплутаєтеся і не будете їх більше використовувати, тому що, як і в будь-якій іншій сценарній мові, тут потрібно вчитися.
Однак, як тільки ви подолали труднощі навчання і навчилися використовувати цю мову, у вас буде інструмент, який є дуже ефективним і може заощаджувати ваш час.
Як ви, можливо, помітили з попередніх прикладів, одним з параметрів більшості команд Powershell є "computername". Коли ми ставимо крапку (".") замість комп'ютера (computername), це буде локальний хост (наш комп'ютер). Однак ми також можемо замінювати будь-яку IP адресу або ім'я комп'ютера Windowsв домені, що дає нам можливість використовувати ці команди не тільки на нашому ПК, але й створювати потужні сценарії Powershell, які можна застосовувати на всіх комп'ютерах мережі.
Наприклад, ось команда, яка передає IP-адресу комп'ютера Dell через LAN:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName DELL9400
Ось результати цієї команди:
Рисунок 7: Результати Powershell отримання IP-адреси з віддаленого ПК
А ось збільшене зображення, яке показує необхідну інформацію:
Рисунок 8: Збільшення вікна результатів Powershell отримання IP-адреси віддаленого ПК
Отже, можливість працювати з віддаленими комп'ютерамиє основною функцією Powershell, проте ще однією потужною можливістю є можливість фільтрації даних та поєднання даних, отриманих від використання різних команд.
Погляньте на наступний приклад:
"127.0.0.1","localhost","research.microsoft.com" | ForEach-Object -Process (Get-WmiObject -Class Win32_PingStatus -Filter ("Address="" + $_ + "") -ComputerName .) | Select-Object -Property Address,ResponseTime,StatusCode
У цьому прикладі було отримано список IP-адрес та імен домену. Цей список було передано на "ForEach-Object". Для кожного з цих "об'єктів" (IP адреса / доменні імена) використовувався елемент "Get-WmiObject" PingStatus. Потім дані тестового опитування кожного імені домену були пропущені через "Select-Object", у результаті було відображено лише адреси, час відповіді та коди статусу.
Рисунок 9: Тестове опитування за допомогою списку при поєднанні та опитуванні даних
На мою думку, цей приклад демонструє деякі можливості Powershell. Як ви бачите, можна спрямовувати і перенаправляти введені та виведені дані в різних напрямках при досягненні ваших завдань адміністрування.
Що ще треба знати?
Висновок
Windows Powershell це дуже потужна утиліта. У цій статті неможливо описати все те, що ви зможете зробити за допомогою Powershell, але сподіваюся, що мені вдалося дати вам загальну картину можливостей цієї утиліти та надихнути вас на подальші дослідження в цій галузі. З кожним днем з'являються нові книги, курси та безліч матеріалу в Інтернеті про функції Powershell, які можуть використовуватися системними адміністраторами Windows. Враховуючи таку сильну прихильність адміністраторів Windows до графічний інтерфейс, потрібен час на те, щоб Powershell була прийнята в тих компаніях, де не відчувають гострої необхідності в цьому інструменті. Я впевнений, що адміністратори будуть використовувати Powershell для створення коротших сценаріїв, за допомогою яких можна буде виконувати більш складні завдання. Сподіваюся, що Powershell набуває все більшої популярності по всьому світу!
Особлива подяка компанії Microsoftза надання прикладів команд у документації посібника користувача Windows Powershell.