PowerShell: відмінності між версіями
R (обговорення | внесок) Створена сторінка: {{SEO|title=PowerShell — shell, scripting language, automation, objects pipeline, modules, remoting, DevOps і адміністрування Windows/Linux/macOS|description=PowerShell — Wiki-стаття про кросплатформений shell і scripting language від Microsoft для автоматизації, адміністрування, DevOps, CI/CD, Azure, Microsoft 365, Windows Server, Linux/macOS, objects pipeline, cmdlets, module... |
R (обговорення | внесок) Немає опису редагування |
||
| Рядок 583: | Рядок 583: | ||
Receive-Job $job | Receive-Job $job | ||
</pre> | |||
Jobs корисні для довгих операцій, але в сучасних сценаріях також використовують runspaces, ThreadJob або CI/CD runners. | |||
== Scheduled jobs і Task Scheduler == | |||
PowerShell scripts часто запускають за розкладом. | |||
На Windows можна використовувати: | |||
* Task Scheduler; | |||
* Scheduled Jobs; | |||
* Scheduled Tasks; | |||
* Azure Automation; | |||
* CI/CD schedules. | |||
Для scheduled scripts важливо логувати результат і помилки, бо користувач не бачить інтерактивний вивід. | |||
== Working with files == | |||
PowerShell має cmdlets для файлів: | |||
<pre> | |||
Get-ChildItem | |||
Get-Content | |||
Set-Content | |||
Add-Content | |||
Copy-Item | |||
Move-Item | |||
Remove-Item | |||
New-Item | |||
Test-Path | |||
</pre> | |||
Приклад: | |||
<pre> | |||
Get-ChildItem -Path C:\Logs -Filter *.log | | |||
Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | |||
</pre> | |||
== CSV == | |||
PowerShell дуже зручний для CSV. | |||
Приклад: | |||
<pre> | |||
$data = Import-Csv .\users.csv | |||
$data | Where-Object Department -eq "Sales" | |||
$data | Export-Csv .\sales-users.csv -NoTypeInformation | |||
</pre> | |||
CSV часто використовується для звітів, імпорту/експорту й адміністрування. | |||
== JSON == | |||
PowerShell добре працює з JSON. | |||
Приклад: | |||
<pre> | |||
$response = Invoke-RestMethod -Uri "https://api.example.com/users" | |||
$response.users | Select-Object id, name | |||
</pre> | |||
Конвертація: | |||
<pre> | |||
$data | ConvertTo-Json -Depth 10 | |||
$json | ConvertFrom-Json | |||
</pre> | |||
PowerShell GitHub repository описує PowerShell як оптимізований для structured data, зокрема JSON, CSV, XML, REST APIs і object models. <ref>https://github.com/PowerShell/PowerShell</ref> | |||
== XML == | |||
PowerShell може працювати з XML. | |||
Приклад: | |||
<pre> | |||
[xml]$xml = Get-Content .\config.xml | |||
$xml.configuration.appSettings.add | |||
</pre> | |||
XML досі часто зустрічається в Windows, legacy systems і enterprise configs. | |||
== REST API == | |||
PowerShell зручний для REST API. | |||
Команди: | |||
<pre> | |||
Invoke-RestMethod | |||
Invoke-WebRequest | |||
</pre> | |||
Приклад: | |||
<pre> | |||
$body = @{ | |||
name = "Test" | |||
active = $true | |||
} | ConvertTo-Json | |||
Invoke-RestMethod ` | |||
-Uri "https://api.example.com/items" ` | |||
-Method Post ` | |||
-Body $body ` | |||
-ContentType "application/json" | |||
</pre> | |||
REST API + PowerShell — популярна пара для інтеграцій і automation. | |||
== Azure PowerShell == | |||
'''Azure PowerShell''' — модулі для керування Azure. | |||
Основний модуль: | |||
<pre> | |||
Az | |||
</pre> | |||
Приклади: | |||
<pre> | |||
Connect-AzAccount | |||
Get-AzResourceGroup | |||
Get-AzVM | |||
</pre> | |||
Azure PowerShell використовується для: | |||
* resource management; | |||
* automation; | |||
* deployment; | |||
* audit; | |||
* reporting; | |||
* governance. | |||
== Microsoft Graph PowerShell == | |||
Microsoft Graph PowerShell SDK використовується для Microsoft 365 і Graph API. | |||
Сценарії: | |||
* users; | |||
* groups; | |||
* devices; | |||
* Teams; | |||
* SharePoint; | |||
* Entra ID; | |||
* reports; | |||
* permissions; | |||
* automation. | |||
PowerShell дуже поширений у Microsoft 365 administration. | |||
== Active Directory == | |||
Windows PowerShell часто використовується для Active Directory. | |||
Приклади: | |||
<pre> | |||
Get-ADUser | |||
New-ADUser | |||
Set-ADUser | |||
Get-ADGroupMember | |||
</pre> | |||
AD cmdlets зазвичай доступні через RSAT/ActiveDirectory module. | |||
У сучасних cloud environments часто використовують Microsoft Graph і Entra ID modules. | |||
== Desired State Configuration == | |||
'''PowerShell DSC''' — Desired State Configuration. | |||
Ідея: описати бажаний стан системи, а не вручну виконувати всі кроки. | |||
DSC використовується для: | |||
* configuration management; | |||
* server baseline; | |||
* compliance; | |||
* repeatable environments; | |||
* infrastructure automation. | |||
DSC має окрему історію версій і сценаріїв, тому для production потрібно перевіряти актуальну документацію під конкретну платформу. | |||
== Pester == | |||
'''Pester''' — популярний testing framework для PowerShell. | |||
Приклад: | |||
<pre> | |||
Describe "Calculator" { | |||
It "adds numbers" { | |||
Add-Numbers 2 3 | Should -Be 5 | |||
} | |||
} | |||
</pre> | |||
Pester корисний для: | |||
* unit tests; | |||
* script tests; | |||
* module tests; | |||
* infrastructure tests; | |||
* CI/CD; | |||
* regression tests. | |||
Для серйозної автоматизації PowerShell scripts теж потрібно тестувати. | |||
== Script Analyzer == | |||
'''PSScriptAnalyzer''' — статичний аналізатор PowerShell-коду. | |||
Він допомагає знаходити: | |||
* style issues; | |||
* potential bugs; | |||
* security problems; | |||
* deprecated patterns; | |||
* best practice violations. | |||
Приклад: | |||
<pre> | |||
Invoke-ScriptAnalyzer -Path .\MyScript.ps1 | |||
</pre> | |||
== Execution Policy == | |||
'''Execution Policy''' — механізм, який контролює запуск scripts у Windows PowerShell/PowerShell. | |||
Приклади: | |||
<pre> | |||
Get-ExecutionPolicy | |||
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser | |||
</pre> | |||
Execution Policy не є повноцінною security boundary. | |||
Це радше safety feature, яка допомагає запобігти випадковому запуску небажаних scripts. | |||
<div style="background:#fff0f0;border-left:6px solid #eb5757;padding:14px 18px;margin:16px 0;border-radius:8px;"> | |||
'''Важливо:''' не слід радити “просто поставити Unrestricted” як стандартне рішення. Краще розуміти політику, підпис scripts і корпоративні правила. | |||
</div> | |||
== Code signing == | |||
PowerShell scripts можна підписувати. | |||
Code signing допомагає підтвердити, що script походить із довіреного джерела й не був змінений. | |||
Це важливо для: | |||
* enterprise; | |||
* production scripts; | |||
* security policies; | |||
* regulated environments; | |||
* deployment automation. | |||
== Secrets == | |||
PowerShell часто працює з secrets: | |||
* passwords; | |||
* tokens; | |||
* API keys; | |||
* certificates; | |||
* connection strings; | |||
* credentials. | |||
Не варто зберігати secrets у plain text scripts. | |||
Краще використовувати: | |||
* SecretManagement module; | |||
* SecretStore; | |||
* Azure Key Vault; | |||
* Windows Credential Manager; | |||
* environment variables; | |||
* CI/CD secret storage; | |||
* managed identities. | |||
== Credentials == | |||
PowerShell має тип <code>PSCredential</code>. | |||
Приклад: | |||
<pre> | |||
$cred = Get-Credential | |||
</pre> | |||
Це краще, ніж просити користувача вводити password у plain text. | |||
Але credential handling усе одно потребує обережності. | |||
== Logging == | |||
PowerShell automation має логувати результат. | |||
Підходи: | |||
* transcript; | |||
* structured logs; | |||
* Start-Transcript; | |||
* Write-Information; | |||
* custom log files; | |||
* Windows Event Log; | |||
* SIEM integration; | |||
* CI/CD logs. | |||
Приклад: | |||
<pre> | |||
Start-Transcript -Path .\run.log | |||
# commands | |||
Stop-Transcript | |||
</pre> | |||
Для scheduled scripts logging особливо важливий. | |||
== Security logging і audit == | |||
У корпоративному середовищі PowerShell повинен бути видимим для security teams. | |||
Важливі механізми: | |||
* script block logging; | |||
* module logging; | |||
* transcription; | |||
* constrained language mode; | |||
* AMSI; | |||
* event logs; | |||
* Defender integration; | |||
* SIEM forwarding. | |||
PowerShell потужний, тому його потрібно контролювати й моніторити. | |||
== Cross-platform PowerShell == | |||
PowerShell 7 працює на: | |||
* Windows; | |||
* Linux; | |||
* macOS. | |||
Офіційний GitHub repository описує PowerShell як cross-platform automation and configuration tool/framework for Windows, Linux and macOS. <ref>https://github.com/PowerShell/PowerShell</ref> | |||
Але не всі modules однаково працюють на всіх платформах. | |||
Наприклад, Windows-specific modules можуть залежати від Windows APIs. | |||
== PowerShell у Linux/macOS == | |||
На Linux/macOS PowerShell корисний для: | |||
* cloud automation; | |||
* JSON/API scripts; | |||
* DevOps; | |||
* CI/CD; | |||
* Azure; | |||
* Microsoft 365; | |||
* cross-platform tooling; | |||
* automation around files; | |||
* reporting. | |||
Але для класичних Unix tasks Bash, zsh, Python або Go можуть бути природнішими. | |||
== PowerShell і Bash == | |||
PowerShell і Bash мають різну філософію. | |||
{| class="wikitable" | |||
! Shell !! Основна ідея | |||
|- | |||
| '''PowerShell''' || pipeline об’єктів, cmdlets, .NET objects, Microsoft ecosystem | |||
|- | |||
| '''Bash''' || текстовий pipeline, Unix tools, простота для POSIX-систем | |||
|} | |||
PowerShell сильний для structured data й Microsoft automation. | |||
Bash сильний для Unix scripting і текстових команд. | |||
== PowerShell і Python == | |||
PowerShell і Python часто доповнюють одне одного. | |||
{| class="wikitable" | |||
! Інструмент !! Сильні сторони | |||
|- | |||
| '''PowerShell''' || system administration, Microsoft ecosystem, shell automation | |||
|- | |||
| '''Python''' || general-purpose programming, data, AI, backend, scripting | |||
|} | |||
PowerShell краще для адміністрування Windows/Microsoft 365/Azure. | |||
Python краще для складнішої програмної логіки, data science і AI. | |||
== PowerShell і C#/.NET == | |||
PowerShell побудований на .NET і може працювати з .NET objects. | |||
Це дозволяє: | |||
* викликати .NET classes; | |||
* працювати з assemblies; | |||
* створювати objects; | |||
* використовувати .NET APIs; | |||
* писати binary modules на C#. | |||
Для швидкої автоматизації — PowerShell. | |||
Для великого production-сервісу або library — C# може бути кращим. | |||
== PowerShell у DevOps == | |||
PowerShell часто використовується в DevOps. | |||
Сценарії: | |||
* CI/CD scripts; | |||
* deployment; | |||
* infrastructure automation; | |||
* Azure pipelines; | |||
* GitHub Actions; | |||
* build scripts; | |||
* release scripts; | |||
* packaging; | |||
* environment setup; | |||
* secrets retrieval; | |||
* smoke tests. | |||
PowerShell особливо зручний у Windows і Azure environments. | |||
== PowerShell у GitHub Actions == | |||
У GitHub Actions можна використовувати PowerShell. | |||
Приклад: | |||
<pre> | |||
- name: Run PowerShell script | |||
shell: pwsh | |||
run: | | |||
$PSVersionTable | |||
./build.ps1 | |||
</pre> | |||
Важливо явно вказувати <code>pwsh</code>, якщо потрібен PowerShell 7. | |||
== PowerShell в Azure Pipelines == | |||
Azure Pipelines має PowerShell tasks. | |||
Сценарії: | |||
* build; | |||
* test; | |||
* deploy; | |||
* Azure automation; | |||
* artifact packaging; | |||
* release validation. | |||
Для cross-platform agents краще використовувати <code>pwsh</code>, а не Windows PowerShell. | |||
== PowerShell і ERP-системи == | |||
PowerShell не є ERP-системою. | |||
Він не веде облік, не проводить документи й не керує складом сам по собі. | |||
У контексті [[K2 ERP]] PowerShell може бути корисним для: | |||
* deployment scripts; | |||
* backup scripts; | |||
* automation around Windows services; | |||
* log collection; | |||
* scheduled exports; | |||
* API calls; | |||
* monitoring checks; | |||
* CI/CD; | |||
* адміністративних задач; | |||
* integration scripts; | |||
* генерації технічних звітів. | |||
Але PowerShell не повинен обходити бізнес-логіку ERP, права доступу або audit. | |||
== PowerShell і API K2 ERP == | |||
PowerShell може викликати REST API. | |||
Приклад сценарію: | |||
* отримати token; | |||
* викликати endpoint; | |||
* зберегти JSON; | |||
* сформувати CSV-звіт; | |||
* надіслати результат адміністратору. | |||
Такі scripts корисні для адміністрування, але критичні операції мають бути захищені правами доступу й логуванням. | |||
== PowerShell і звітність == | |||
PowerShell можна використовувати для технічної звітності: | |||
* список файлів; | |||
* стан сервісів; | |||
* audit users; | |||
* disk usage; | |||
* installed modules; | |||
* статус backup; | |||
* API responses; | |||
* CSV exports. | |||
Для бізнес-звітності ERP краще використовувати спеціалізований reporting layer, але PowerShell може допомогти з технічними export/import задачами. | |||
== Безпека PowerShell scripts == | |||
PowerShell scripts можуть бути дуже потужними, тому потрібна обережність. | |||
Правила: | |||
* не запускати незнайомі scripts без перевірки; | |||
* не вставляти команди з інтернету без розуміння; | |||
* не зберігати passwords у коді; | |||
* використовувати least privilege; | |||
* логувати важливі дії; | |||
* підписувати production scripts; | |||
* обмежувати доступ до modules; | |||
* перевіряти dependencies; | |||
* використовувати code review. | |||
== Least privilege == | |||
'''Least privilege''' означає: script має мати тільки ті права, які йому справді потрібні. | |||
Не варто запускати все від Administrator, якщо достатньо звичайного користувача. | |||
Для automation краще створювати окремі service accounts із мінімальними правами. | |||
== Idempotency == | |||
'''Idempotency''' — властивість script, коли повторний запуск не ламає систему й не створює дублікати. | |||
Приклад: | |||
* якщо папка вже існує — не помилка; | |||
* якщо сервіс уже запущений — не запускати зайве; | |||
* якщо користувач уже створений — оновити або пропустити. | |||
Idempotent scripts безпечніші для deployment і configuration. | |||
== Dry run і WhatIf == | |||
PowerShell підтримує <code>-WhatIf</code> для багатьох destructive commands. | |||
Приклад: | |||
<pre> | |||
Remove-Item .\old-files\* -WhatIf | |||
</pre> | |||
У власних advanced functions можна підтримувати <code>ShouldProcess</code>, щоб додати <code>-WhatIf</code> і <code>-Confirm</code>. | |||
Це важливо для безпечної автоматизації. | |||
== Типові помилки в PowerShell == | |||
Поширені помилки: | |||
* запускати scripts без розуміння; | |||
* ігнорувати errors; | |||
* не використовувати <code>-ErrorAction Stop</code> там, де потрібен catch; | |||
* зберігати passwords у plain text; | |||
* використовувати <code>Write-Host</code> замість pipeline output; | |||
* плутати Windows PowerShell 5.1 і PowerShell 7; | |||
* не вказувати encoding; | |||
* не тестувати scripts; | |||
* не логувати scheduled tasks; | |||
* не перевіряти modules із Gallery; | |||
* використовувати aliases у production scripts; | |||
* не використовувати <code>-WhatIf</code> перед destructive діями. | |||
== Хороші практики == | |||
Під час роботи з PowerShell варто: | |||
# Використовувати PowerShell 7.6 LTS для нових cross-platform scripts. | |||
# Явно вказувати <code>pwsh</code> у CI/CD. | |||
# Писати повні cmdlet names, а не aliases. | |||
# Додавати <code>param()</code> і типи параметрів. | |||
# Використовувати <code>[CmdletBinding()]</code> для складних functions. | |||
# Обробляти помилки через <code>try/catch</code>. | |||
# Не зберігати secrets у scripts. | |||
# Використовувати SecretManagement або vault. | |||
# Логувати scheduled і production runs. | |||
# Тестувати modules через Pester. | |||
# Аналізувати код через PSScriptAnalyzer. | |||
# Використовувати <code>-WhatIf</code> для destructive operations. | |||
# Дотримуватися least privilege. | |||
# Перевіряти версію PowerShell і modules. | |||
# Документувати scripts і приклади запуску. | |||
== Коли PowerShell особливо корисний == | |||
PowerShell особливо корисний для: | |||
* Windows administration; | |||
* Microsoft 365; | |||
* Azure; | |||
* DevOps; | |||
* CI/CD; | |||
* server automation; | |||
* file operations; | |||
* registry operations; | |||
* service management; | |||
* CSV/JSON/XML processing; | |||
* REST API automation; | |||
* scheduled tasks; | |||
* audit reports; | |||
* deployment scripts; | |||
* troubleshooting; | |||
* інтеграцій. | |||
== Коли PowerShell може бути невдалим вибором == | |||
PowerShell може бути невдалим вибором, якщо: | |||
* потрібна велика backend-система; | |||
* потрібен web API як production service; | |||
* потрібна AI/data science екосистема; | |||
* задача краще вирішується SQL; | |||
* потрібен portable Unix shell script; | |||
* команда не знає PowerShell; | |||
* потрібна складна application architecture; | |||
* script стає настільки великим, що краще перейти на C#, Python або Go. | |||
== Практичний висновок == | |||
PowerShell — один із найсильніших інструментів для automation, адміністрування й DevOps, особливо в Microsoft-екосистемі. | |||
Сильні сторони: | |||
* objects pipeline; | |||
* cmdlets; | |||
* modules; | |||
* PowerShell Gallery; | |||
* remoting; | |||
* cross-platform PowerShell 7; | |||
* Windows PowerShell 5.1 compatibility; | |||
* JSON/CSV/XML; | |||
* REST API; | |||
* Azure і Microsoft 365; | |||
* Pester; | |||
* PSScriptAnalyzer; | |||
* CI/CD; | |||
* automation scripts; | |||
* .NET integration. | |||
Обмеження: | |||
* не замінює повноцінну backend-мову для великих сервісів; | |||
* Windows PowerShell і PowerShell 7 мають різну сумісність; | |||
* modules можуть бути platform-specific; | |||
* scripts можуть бути небезпечними без review; | |||
* execution policy не є повним захистом; | |||
* секрети потрібно зберігати правильно; | |||
* production automation потребує тестів, логів і least privilege. | |||
PowerShell найкраще використовувати там, де потрібна швидка, контрольована й повторювана автоматизація: від локальних scripts до enterprise DevOps і Microsoft cloud administration. | |||
== Пояснення термінів == | |||
* '''PowerShell''' — shell, scripting language і automation framework. | |||
* '''Windows PowerShell''' — стара версія PowerShell 5.1 на .NET Framework. | |||
* '''PowerShell 7''' — сучасна cross-platform версія PowerShell. | |||
* '''pwsh''' — виконуваний файл PowerShell 7+. | |||
* '''Cmdlet''' — команда PowerShell у форматі Verb-Noun. | |||
* '''Pipeline''' — передача результатів однієї команди в іншу. | |||
* '''Objects pipeline''' — pipeline, який передає об’єкти, а не лише текст. | |||
* '''Module''' — пакет PowerShell-команд і функцій. | |||
* '''PowerShell Gallery''' — репозиторій PowerShell-модулів і scripts. | |||
* '''Remoting''' — віддалене виконання PowerShell-команд. | |||
* '''Invoke-Command''' — cmdlet для виконання script block локально або віддалено. | |||
* '''Enter-PSSession''' — інтерактивна remote session. | |||
* '''Job''' — фонова задача PowerShell. | |||
* '''Execution Policy''' — політика запуску scripts. | |||
* '''Code signing''' — цифровий підпис scripts. | |||
* '''Pester''' — testing framework для PowerShell. | |||
* '''PSScriptAnalyzer''' — статичний аналізатор PowerShell-коду. | |||
* '''DSC''' — Desired State Configuration. | |||
* '''PSCredential''' — тип для зберігання credentials. | |||
* '''SecretManagement''' — підхід і модулі для роботи з secrets. | |||
* '''Splatting''' — передача параметрів через hashtable. | |||
* '''Hashtable''' — key-value структура. | |||
* '''ScriptBlock''' — блок PowerShell-коду як значення. | |||
* '''WhatIf''' — режим попереднього перегляду дії без виконання. | |||
* '''Least privilege''' — принцип мінімально необхідних прав. | |||
* '''Idempotency''' — повторний запуск script не створює небажаних змін. | |||
== Дивіться також == | |||
* [[C Sharp]] | |||
* [[Go]] | |||
* [[Python]] | |||
* [[Розробка в K2 ERP]] | |||
* [[Тестування коду]] | |||
* [[API K2 ERP]] | |||
* [[Інтеграції K2 ERP]] | |||
* [[Звітність K2 ERP]] | |||
* [[GitHub Copilot]] | |||
* [[Cursor]] | |||
* [[Tabnine]] | |||
* [[Retrieval-Augmented Generation]] | |||
* [[Великі мовні моделі]] | |||
* [[GPT]] | |||
* [[Claude Models]] | |||
* [[Штучний інтелект]] | |||
* [[Генеративний AI]] | |||
== Джерела == | |||
* [https://learn.microsoft.com/en-us/powershell/ Microsoft Learn — PowerShell Documentation] | |||
* [https://github.com/PowerShell/PowerShell PowerShell GitHub Repository] | |||
* [https://github.com/PowerShell/PowerShell/releases PowerShell GitHub Releases] | |||
* [https://learn.microsoft.com/en-us/powershell/scripting/install/install-powershell-on-windows?view=powershell-7.6 Microsoft Learn — Install PowerShell 7 on Windows] | |||
* [https://learn.microsoft.com/uk-ua/powershell/scripting/how-to-use-docs?view=powershell-7.6 Microsoft Learn — How to use PowerShell documentation] | |||
* [https://learn.microsoft.com/en-us/lifecycle/products/powershell Microsoft Lifecycle — PowerShell] | |||
* [https://github.com/MicrosoftDocs/PowerShell-Docs/blob/main/reference/docs-conceptual/install/PowerShell-Support-Lifecycle.md PowerShell Support Lifecycle] | |||
* [https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/ Microsoft PowerShell Blog — PowerShell 7.5 GA] | |||
* [https://www.powershellgallery.com/ PowerShell Gallery] | |||
* [https://pester.dev/ Pester] | |||
* [https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-hashtable Microsoft Learn — Everything you wanted to know about hashtables] | |||
* [https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-scriptblock Microsoft Learn — Everything you wanted to know about script blocks] | |||
* [https://www.mediawiki.org/wiki/Help:Formatting MediaWiki — Help:Formatting] | |||
* [https://www.mediawiki.org/wiki/Help:Links MediaWiki — Help:Links] | |||
[[Категорія:Програмування]] | |||
[[Категорія:PowerShell]] | |||
[[Категорія:Windows]] | |||
[[Категорія:Microsoft]] | |||
[[Категорія:Automation]] | |||
[[Категорія:DevOps]] | |||
[[Категорія:CI/CD]] | |||
[[Категорія:Azure]] | |||
[[Категорія:Microsoft 365]] | |||
[[Категорія:Адміністрування]] | |||
[[Категорія:Shell]] | |||
[[Категорія:Scripting]] | |||
[[Категорія:Інтеграції]] | |||
[[Категорія:Безпека]] | |||
[[Категорія:Пояснення термінів]] | |||
Поточна версія на 20:18, 8 травня 2026
PowerShell — це кросплатформений shell, scripting language і automation framework від Microsoft для адміністрування систем, автоматизації задач, DevOps, CI/CD, роботи з Windows, Linux, macOS, Azure, Microsoft 365, API, файлами, процесами, сервісами й structured data.
PowerShell відрізняється від багатьох shell тим, що передає між командами не просто текст, а об’єкти.
Коротко: PowerShell — це shell для автоматизації. Його сила — cmdlets, objects pipeline, modules, remoting і тісна інтеграція з Microsoft-екосистемою.
Офіційна документація Microsoft описує PowerShell як product documentation для встановлення, використання, прикладів scripts, deployment, PowerShell Gallery і module reference. [1]
Головна ідея
Головна ідея PowerShell — автоматизувати рутинні адміністративні й інженерні задачі через зрозумілу командну мову.
PowerShell використовують для:
- адміністрування Windows;
- керування файлами й процесами;
- автоматизації серверів;
- CI/CD;
- Azure automation;
- Microsoft 365 administration;
- роботи з REST API;
- обробки JSON, CSV, XML;
- керування сервісами;
- налаштування систем;
- deployment scripts;
- DevOps tasks;
- звітів і audit;
- security automation.
Проста аналогія: PowerShell — це не просто командний рядок. Це пульт керування системою, де команди повертають структуровані об’єкти, а не “кашу” з тексту.
PowerShell і Windows PowerShell
Є дві важливі лінії:
- Windows PowerShell 5.1 — стара версія, вбудована у Windows, працює на .NET Framework.
- PowerShell 7+ — сучасна кросплатформена версія, працює на сучасному .NET і запускається як
pwsh.
PowerShell 7 можна встановлювати поруч із Windows PowerShell 5.1.
Microsoft Learn пояснює, що PowerShell 7 є cross-platform, open-source і встановлюється side-by-side з Windows PowerShell 5.1. [2]
Актуальна версія
Станом на травень 2026 року актуальна LTS-гілка — PowerShell 7.6 LTS.
Microsoft Lifecycle показує, що PowerShell 7.6 LTS стартував 18 березня 2026 року й підтримується до 14 листопада 2028 року. PowerShell 7.5 підтримується до 10 листопада 2026 року, а PowerShell 7.4 LTS — також до 10 листопада 2026 року. [3]
На GitHub Releases також вказано релізи PowerShell 7.6.1 і 7.5.6. [4]
Для документації: у production краще писати конкретно: PowerShell 7.6 LTS або Windows PowerShell 5.1. Поведінка модулів і сумісність можуть відрізнятися.
pwsh
Сучасний PowerShell запускається командою:
pwsh
Windows PowerShell зазвичай запускається як:
powershell.exe
Це важливо в scripts, CI/CD і документації.
Якщо написано powershell.exe, це часто означає Windows PowerShell 5.1.
Якщо написано pwsh, це PowerShell 7+.
Cmdlets
Cmdlet — основна команда PowerShell.
Cmdlets мають стиль:
Verb-Noun
Приклади:
Get-Process Get-Service Get-ChildItem Set-Location New-Item Remove-Item Invoke-RestMethod ConvertTo-Json
Такий стиль робить команди більш передбачуваними.
Get-Command
Get-Command допомагає знаходити команди.
Приклад:
Get-Command *Service*
Це покаже команди, пов’язані із сервісами.
Корисно для пошуку cmdlets, functions, aliases і applications.
Get-Help
Get-Help показує довідку.
Приклад:
Get-Help Get-Process Get-Help Get-Process -Examples Get-Help Get-Process -Full
PowerShell має сильну вбудовану help-систему.
Добра практика — читати help перед запуском незнайомої команди.
Objects pipeline
Головна особливість PowerShell — pipeline об’єктів.
У класичному shell команди часто передають текст.
У PowerShell команди передають .NET objects.
Приклад:
Get-Process | Where-Object CPU -gt 100 | Sort-Object CPU -Descending
Тут Get-Process повертає об’єкти процесів, а не просто текстову таблицю.
Чому це важливо: у PowerShell не потрібно парсити колонки тексту. Можна звертатися до властивостей об’єкта: Name, Id, CPU, Path, Status.
Where-Object
Where-Object фільтрує об’єкти.
Приклад:
Get-Service | Where-Object Status -eq "Running"
Скорочено:
Get-Service | ? Status -eq "Running"
У документації краще писати повну форму, бо вона зрозуміліша.
Select-Object
Select-Object вибирає properties.
Приклад:
Get-Process | Select-Object Name, Id, CPU
Також можна брати перші або останні записи:
Get-Process | Select-Object -First 10
Sort-Object
Sort-Object сортує.
Приклад:
Get-Process | Sort-Object CPU -Descending
Це корисно для quick diagnostics, reports і audit scripts.
ForEach-Object
ForEach-Object виконує дію для кожного об’єкта pipeline.
Приклад:
Get-ChildItem *.log | ForEach-Object {
Write-Host $_.FullName
}
$_ означає поточний об’єкт pipeline.
Variables
Змінні в PowerShell починаються з $.
Приклад:
$name = "PowerShell" $count = 10 $isEnabled = $true
PowerShell змінні можуть містити:
- strings;
- numbers;
- arrays;
- hashtables;
- objects;
- script blocks;
- credentials;
- command results.
Arrays
Масив:
$items = @("one", "two", "three")
Доступ:
$items[0]
Додавання:
$items += "four"
Для великих масивів часте += може бути повільним. Краще використовувати collections або pipeline.
Hashtables
Hashtable:
$config = @{
Environment = "Production"
Timeout = 30
Enabled = $true
}
Доступ:
$config["Environment"] $config.Timeout
Hashtables часто використовують для параметрів, конфігурації, JSON-подібних структур і splatting.
Splatting
Splatting дозволяє передавати параметри через hashtable.
Приклад:
$params = @{
Path = "C:\Temp\report.txt"
Encoding = "utf8"
}
Get-Content @params
Splatting робить довгі команди читабельнішими.
Strings
PowerShell має single-quoted і double-quoted strings.
Приклад:
$name = "Anna" "Hello, $name" 'Hello, $name'
Double quotes підставляють змінні.
Single quotes залишають текст як є.
Functions
Функція:
function Get-Greeting {
param(
[string]$Name
)
"Hello, $Name"
}
Виклик:
Get-Greeting -Name "Anna"
PowerShell functions можуть поводитися як cmdlets, якщо правильно описати parameters.
Advanced functions
Advanced function використовує [CmdletBinding()].
Приклад:
function Get-UserReport {
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$UserName
)
Write-Verbose "Generating report for $UserName"
}
Advanced functions підтримують common parameters, наприклад:
- -Verbose;
- -Debug;
- -ErrorAction;
- -WhatIf;
- -Confirm.
Parameters
PowerShell має сильну систему parameters.
Приклад:
param(
[Parameter(Mandatory)]
[string]$Path,
[int]$Limit = 100,
[switch]$Force
)
Типи параметрів допомагають робити scripts надійнішими.
Switch parameters
[switch] — boolean-like параметр.
Приклад:
param(
[switch]$Force
)
if ($Force) {
"Force mode enabled"
}
Виклик:
.\script.ps1 -Force
Error handling
PowerShell має error handling через try/catch/finally.
Приклад:
try {
Get-Content -Path $Path -ErrorAction Stop
}
catch {
Write-Error "Cannot read file: $_"
}
finally {
Write-Verbose "Done"
}
Важливо: не всі errors за замовчуванням terminating. Для catch часто потрібно -ErrorAction Stop.
$ErrorActionPreference
$ErrorActionPreference визначає поведінку non-terminating errors.
Приклад:
$ErrorActionPreference = "Stop"
У production scripts це може допомогти не пропустити помилки.
Але треба розуміти наслідки: script може зупинитися там, де раніше продовжував роботу.
Write-Output, Write-Host, Write-Error
PowerShell має різні output streams.
Write-Output— output pipeline.Write-Host— вивід на екран.Write-Error— error stream.Write-Verbose— verbose stream.Write-Warning— warning.Write-Debug— debug.
Практична порада: не використовуйте Write-Host для даних, які мають піти далі в pipeline. Для даних використовуйте output, для повідомлень — verbose або information streams.
Modules
Module — пакет PowerShell-коду.
Модуль може містити:
- functions;
- cmdlets;
- aliases;
- variables;
- classes;
- formats;
- types;
- nested modules.
Команди:
Get-Module Import-Module Az Find-Module Pester Install-Module Pester
Modules допомагають організувати scripts у reusable components.
PowerShell Gallery
PowerShell Gallery — офіційний репозиторій PowerShell-модулів і scripts.
Документація PowerShell містить окремий розділ Deploy і PowerShell Gallery. [5]
Перед встановленням модуля потрібно перевіряти:
- автора;
- popularity;
- source repository;
- license;
- останнє оновлення;
- залежності;
- security;
- чи trusted repository.
Install-Module
Встановлення модуля:
Install-Module -Name Pester -Scope CurrentUser
Імпорт:
Import-Module Pester
Оновлення:
Update-Module -Name Pester
У корпоративному середовищі встановлення модулів може бути обмежене політиками.
PowerShell Remoting
PowerShell Remoting дозволяє виконувати команди на віддалених машинах.
Приклад:
Invoke-Command -ComputerName Server01 -ScriptBlock {
Get-Service
}
Remoting корисний для:
- адміністрування серверів;
- масових змін;
- audit;
- deployment;
- troubleshooting;
- Windows Server;
- hybrid environments.
Remoting потребує правильної безпеки, автентифікації й мережевих налаштувань.
Enter-PSSession
Інтерактивна remote session:
Enter-PSSession -ComputerName Server01
Це дозволяє працювати на віддаленій машині майже як локально.
Вихід:
Exit-PSSession
Invoke-Command
Invoke-Command виконує script block локально або віддалено.
Приклад для кількох серверів:
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {
Get-Process
}
Це корисно для паралельного адміністрування.
Jobs
PowerShell jobs дозволяють виконувати задачі у фоні.
Приклад:
$job = Start-Job -ScriptBlock {
Get-Process
}
Receive-Job $job
Jobs корисні для довгих операцій, але в сучасних сценаріях також використовують runspaces, ThreadJob або CI/CD runners.
Scheduled jobs і Task Scheduler
PowerShell scripts часто запускають за розкладом.
На Windows можна використовувати:
- Task Scheduler;
- Scheduled Jobs;
- Scheduled Tasks;
- Azure Automation;
- CI/CD schedules.
Для scheduled scripts важливо логувати результат і помилки, бо користувач не бачить інтерактивний вивід.
Working with files
PowerShell має cmdlets для файлів:
Get-ChildItem Get-Content Set-Content Add-Content Copy-Item Move-Item Remove-Item New-Item Test-Path
Приклад:
Get-ChildItem -Path C:\Logs -Filter *.log |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-30)
CSV
PowerShell дуже зручний для CSV.
Приклад:
$data = Import-Csv .\users.csv $data | Where-Object Department -eq "Sales" $data | Export-Csv .\sales-users.csv -NoTypeInformation
CSV часто використовується для звітів, імпорту/експорту й адміністрування.
JSON
PowerShell добре працює з JSON.
Приклад:
$response = Invoke-RestMethod -Uri "https://api.example.com/users" $response.users | Select-Object id, name
Конвертація:
$data | ConvertTo-Json -Depth 10 $json | ConvertFrom-Json
PowerShell GitHub repository описує PowerShell як оптимізований для structured data, зокрема JSON, CSV, XML, REST APIs і object models. [6]
XML
PowerShell може працювати з XML.
Приклад:
[xml]$xml = Get-Content .\config.xml $xml.configuration.appSettings.add
XML досі часто зустрічається в Windows, legacy systems і enterprise configs.
REST API
PowerShell зручний для REST API.
Команди:
Invoke-RestMethod Invoke-WebRequest
Приклад:
$body = @{
name = "Test"
active = $true
} | ConvertTo-Json
Invoke-RestMethod `
-Uri "https://api.example.com/items" `
-Method Post `
-Body $body `
-ContentType "application/json"
REST API + PowerShell — популярна пара для інтеграцій і automation.
Azure PowerShell
Azure PowerShell — модулі для керування Azure.
Основний модуль:
Az
Приклади:
Connect-AzAccount Get-AzResourceGroup Get-AzVM
Azure PowerShell використовується для:
- resource management;
- automation;
- deployment;
- audit;
- reporting;
- governance.
Microsoft Graph PowerShell
Microsoft Graph PowerShell SDK використовується для Microsoft 365 і Graph API.
Сценарії:
- users;
- groups;
- devices;
- Teams;
- SharePoint;
- Entra ID;
- reports;
- permissions;
- automation.
PowerShell дуже поширений у Microsoft 365 administration.
Active Directory
Windows PowerShell часто використовується для Active Directory.
Приклади:
Get-ADUser New-ADUser Set-ADUser Get-ADGroupMember
AD cmdlets зазвичай доступні через RSAT/ActiveDirectory module.
У сучасних cloud environments часто використовують Microsoft Graph і Entra ID modules.
Desired State Configuration
PowerShell DSC — Desired State Configuration.
Ідея: описати бажаний стан системи, а не вручну виконувати всі кроки.
DSC використовується для:
- configuration management;
- server baseline;
- compliance;
- repeatable environments;
- infrastructure automation.
DSC має окрему історію версій і сценаріїв, тому для production потрібно перевіряти актуальну документацію під конкретну платформу.
Pester
Pester — популярний testing framework для PowerShell.
Приклад:
Describe "Calculator" {
It "adds numbers" {
Add-Numbers 2 3 | Should -Be 5
}
}
Pester корисний для:
- unit tests;
- script tests;
- module tests;
- infrastructure tests;
- CI/CD;
- regression tests.
Для серйозної автоматизації PowerShell scripts теж потрібно тестувати.
Script Analyzer
PSScriptAnalyzer — статичний аналізатор PowerShell-коду.
Він допомагає знаходити:
- style issues;
- potential bugs;
- security problems;
- deprecated patterns;
- best practice violations.
Приклад:
Invoke-ScriptAnalyzer -Path .\MyScript.ps1
Execution Policy
Execution Policy — механізм, який контролює запуск scripts у Windows PowerShell/PowerShell.
Приклади:
Get-ExecutionPolicy Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Execution Policy не є повноцінною security boundary.
Це радше safety feature, яка допомагає запобігти випадковому запуску небажаних scripts.
Важливо: не слід радити “просто поставити Unrestricted” як стандартне рішення. Краще розуміти політику, підпис scripts і корпоративні правила.
Code signing
PowerShell scripts можна підписувати.
Code signing допомагає підтвердити, що script походить із довіреного джерела й не був змінений.
Це важливо для:
- enterprise;
- production scripts;
- security policies;
- regulated environments;
- deployment automation.
Secrets
PowerShell часто працює з secrets:
- passwords;
- tokens;
- API keys;
- certificates;
- connection strings;
- credentials.
Не варто зберігати secrets у plain text scripts.
Краще використовувати:
- SecretManagement module;
- SecretStore;
- Azure Key Vault;
- Windows Credential Manager;
- environment variables;
- CI/CD secret storage;
- managed identities.
Credentials
PowerShell має тип PSCredential.
Приклад:
$cred = Get-Credential
Це краще, ніж просити користувача вводити password у plain text.
Але credential handling усе одно потребує обережності.
Logging
PowerShell automation має логувати результат.
Підходи:
- transcript;
- structured logs;
- Start-Transcript;
- Write-Information;
- custom log files;
- Windows Event Log;
- SIEM integration;
- CI/CD logs.
Приклад:
Start-Transcript -Path .\run.log # commands Stop-Transcript
Для scheduled scripts logging особливо важливий.
Security logging і audit
У корпоративному середовищі PowerShell повинен бути видимим для security teams.
Важливі механізми:
- script block logging;
- module logging;
- transcription;
- constrained language mode;
- AMSI;
- event logs;
- Defender integration;
- SIEM forwarding.
PowerShell потужний, тому його потрібно контролювати й моніторити.
Cross-platform PowerShell
PowerShell 7 працює на:
- Windows;
- Linux;
- macOS.
Офіційний GitHub repository описує PowerShell як cross-platform automation and configuration tool/framework for Windows, Linux and macOS. [7]
Але не всі modules однаково працюють на всіх платформах.
Наприклад, Windows-specific modules можуть залежати від Windows APIs.
PowerShell у Linux/macOS
На Linux/macOS PowerShell корисний для:
- cloud automation;
- JSON/API scripts;
- DevOps;
- CI/CD;
- Azure;
- Microsoft 365;
- cross-platform tooling;
- automation around files;
- reporting.
Але для класичних Unix tasks Bash, zsh, Python або Go можуть бути природнішими.
PowerShell і Bash
PowerShell і Bash мають різну філософію.
| Shell | Основна ідея |
|---|---|
| PowerShell | pipeline об’єктів, cmdlets, .NET objects, Microsoft ecosystem |
| Bash | текстовий pipeline, Unix tools, простота для POSIX-систем |
PowerShell сильний для structured data й Microsoft automation.
Bash сильний для Unix scripting і текстових команд.
PowerShell і Python
PowerShell і Python часто доповнюють одне одного.
| Інструмент | Сильні сторони |
|---|---|
| PowerShell | system administration, Microsoft ecosystem, shell automation |
| Python | general-purpose programming, data, AI, backend, scripting |
PowerShell краще для адміністрування Windows/Microsoft 365/Azure.
Python краще для складнішої програмної логіки, data science і AI.
PowerShell і C#/.NET
PowerShell побудований на .NET і може працювати з .NET objects.
Це дозволяє:
- викликати .NET classes;
- працювати з assemblies;
- створювати objects;
- використовувати .NET APIs;
- писати binary modules на C#.
Для швидкої автоматизації — PowerShell.
Для великого production-сервісу або library — C# може бути кращим.
PowerShell у DevOps
PowerShell часто використовується в DevOps.
Сценарії:
- CI/CD scripts;
- deployment;
- infrastructure automation;
- Azure pipelines;
- GitHub Actions;
- build scripts;
- release scripts;
- packaging;
- environment setup;
- secrets retrieval;
- smoke tests.
PowerShell особливо зручний у Windows і Azure environments.
PowerShell у GitHub Actions
У GitHub Actions можна використовувати PowerShell.
Приклад:
- name: Run PowerShell script
shell: pwsh
run: |
$PSVersionTable
./build.ps1
Важливо явно вказувати pwsh, якщо потрібен PowerShell 7.
PowerShell в Azure Pipelines
Azure Pipelines має PowerShell tasks.
Сценарії:
- build;
- test;
- deploy;
- Azure automation;
- artifact packaging;
- release validation.
Для cross-platform agents краще використовувати pwsh, а не Windows PowerShell.
PowerShell і ERP-системи
PowerShell не є ERP-системою.
Він не веде облік, не проводить документи й не керує складом сам по собі.
У контексті K2 ERP PowerShell може бути корисним для:
- deployment scripts;
- backup scripts;
- automation around Windows services;
- log collection;
- scheduled exports;
- API calls;
- monitoring checks;
- CI/CD;
- адміністративних задач;
- integration scripts;
- генерації технічних звітів.
Але PowerShell не повинен обходити бізнес-логіку ERP, права доступу або audit.
PowerShell і API K2 ERP
PowerShell може викликати REST API.
Приклад сценарію:
- отримати token;
- викликати endpoint;
- зберегти JSON;
- сформувати CSV-звіт;
- надіслати результат адміністратору.
Такі scripts корисні для адміністрування, але критичні операції мають бути захищені правами доступу й логуванням.
PowerShell і звітність
PowerShell можна використовувати для технічної звітності:
- список файлів;
- стан сервісів;
- audit users;
- disk usage;
- installed modules;
- статус backup;
- API responses;
- CSV exports.
Для бізнес-звітності ERP краще використовувати спеціалізований reporting layer, але PowerShell може допомогти з технічними export/import задачами.
Безпека PowerShell scripts
PowerShell scripts можуть бути дуже потужними, тому потрібна обережність.
Правила:
- не запускати незнайомі scripts без перевірки;
- не вставляти команди з інтернету без розуміння;
- не зберігати passwords у коді;
- використовувати least privilege;
- логувати важливі дії;
- підписувати production scripts;
- обмежувати доступ до modules;
- перевіряти dependencies;
- використовувати code review.
Least privilege
Least privilege означає: script має мати тільки ті права, які йому справді потрібні.
Не варто запускати все від Administrator, якщо достатньо звичайного користувача.
Для automation краще створювати окремі service accounts із мінімальними правами.
Idempotency
Idempotency — властивість script, коли повторний запуск не ламає систему й не створює дублікати.
Приклад:
- якщо папка вже існує — не помилка;
- якщо сервіс уже запущений — не запускати зайве;
- якщо користувач уже створений — оновити або пропустити.
Idempotent scripts безпечніші для deployment і configuration.
Dry run і WhatIf
PowerShell підтримує -WhatIf для багатьох destructive commands.
Приклад:
Remove-Item .\old-files\* -WhatIf
У власних advanced functions можна підтримувати ShouldProcess, щоб додати -WhatIf і -Confirm.
Це важливо для безпечної автоматизації.
Типові помилки в PowerShell
Поширені помилки:
- запускати scripts без розуміння;
- ігнорувати errors;
- не використовувати
-ErrorAction Stopтам, де потрібен catch; - зберігати passwords у plain text;
- використовувати
Write-Hostзамість pipeline output; - плутати Windows PowerShell 5.1 і PowerShell 7;
- не вказувати encoding;
- не тестувати scripts;
- не логувати scheduled tasks;
- не перевіряти modules із Gallery;
- використовувати aliases у production scripts;
- не використовувати
-WhatIfперед destructive діями.
Хороші практики
Під час роботи з PowerShell варто:
- Використовувати PowerShell 7.6 LTS для нових cross-platform scripts.
- Явно вказувати
pwshу CI/CD. - Писати повні cmdlet names, а не aliases.
- Додавати
param()і типи параметрів. - Використовувати
[CmdletBinding()]для складних functions. - Обробляти помилки через
try/catch. - Не зберігати secrets у scripts.
- Використовувати SecretManagement або vault.
- Логувати scheduled і production runs.
- Тестувати modules через Pester.
- Аналізувати код через PSScriptAnalyzer.
- Використовувати
-WhatIfдля destructive operations. - Дотримуватися least privilege.
- Перевіряти версію PowerShell і modules.
- Документувати scripts і приклади запуску.
Коли PowerShell особливо корисний
PowerShell особливо корисний для:
- Windows administration;
- Microsoft 365;
- Azure;
- DevOps;
- CI/CD;
- server automation;
- file operations;
- registry operations;
- service management;
- CSV/JSON/XML processing;
- REST API automation;
- scheduled tasks;
- audit reports;
- deployment scripts;
- troubleshooting;
- інтеграцій.
Коли PowerShell може бути невдалим вибором
PowerShell може бути невдалим вибором, якщо:
- потрібна велика backend-система;
- потрібен web API як production service;
- потрібна AI/data science екосистема;
- задача краще вирішується SQL;
- потрібен portable Unix shell script;
- команда не знає PowerShell;
- потрібна складна application architecture;
- script стає настільки великим, що краще перейти на C#, Python або Go.
Практичний висновок
PowerShell — один із найсильніших інструментів для automation, адміністрування й DevOps, особливо в Microsoft-екосистемі.
Сильні сторони:
- objects pipeline;
- cmdlets;
- modules;
- PowerShell Gallery;
- remoting;
- cross-platform PowerShell 7;
- Windows PowerShell 5.1 compatibility;
- JSON/CSV/XML;
- REST API;
- Azure і Microsoft 365;
- Pester;
- PSScriptAnalyzer;
- CI/CD;
- automation scripts;
- .NET integration.
Обмеження:
- не замінює повноцінну backend-мову для великих сервісів;
- Windows PowerShell і PowerShell 7 мають різну сумісність;
- modules можуть бути platform-specific;
- scripts можуть бути небезпечними без review;
- execution policy не є повним захистом;
- секрети потрібно зберігати правильно;
- production automation потребує тестів, логів і least privilege.
PowerShell найкраще використовувати там, де потрібна швидка, контрольована й повторювана автоматизація: від локальних scripts до enterprise DevOps і Microsoft cloud administration.
Пояснення термінів
- PowerShell — shell, scripting language і automation framework.
- Windows PowerShell — стара версія PowerShell 5.1 на .NET Framework.
- PowerShell 7 — сучасна cross-platform версія PowerShell.
- pwsh — виконуваний файл PowerShell 7+.
- Cmdlet — команда PowerShell у форматі Verb-Noun.
- Pipeline — передача результатів однієї команди в іншу.
- Objects pipeline — pipeline, який передає об’єкти, а не лише текст.
- Module — пакет PowerShell-команд і функцій.
- PowerShell Gallery — репозиторій PowerShell-модулів і scripts.
- Remoting — віддалене виконання PowerShell-команд.
- Invoke-Command — cmdlet для виконання script block локально або віддалено.
- Enter-PSSession — інтерактивна remote session.
- Job — фонова задача PowerShell.
- Execution Policy — політика запуску scripts.
- Code signing — цифровий підпис scripts.
- Pester — testing framework для PowerShell.
- PSScriptAnalyzer — статичний аналізатор PowerShell-коду.
- DSC — Desired State Configuration.
- PSCredential — тип для зберігання credentials.
- SecretManagement — підхід і модулі для роботи з secrets.
- Splatting — передача параметрів через hashtable.
- Hashtable — key-value структура.
- ScriptBlock — блок PowerShell-коду як значення.
- WhatIf — режим попереднього перегляду дії без виконання.
- Least privilege — принцип мінімально необхідних прав.
- Idempotency — повторний запуск script не створює небажаних змін.
Дивіться також
- C Sharp
- Go
- Python
- Розробка в K2 ERP
- Тестування коду
- API K2 ERP
- Інтеграції K2 ERP
- Звітність K2 ERP
- GitHub Copilot
- Cursor
- Tabnine
- Retrieval-Augmented Generation
- Великі мовні моделі
- GPT
- Claude Models
- Штучний інтелект
- Генеративний AI
Джерела
- Microsoft Learn — PowerShell Documentation
- PowerShell GitHub Repository
- PowerShell GitHub Releases
- Microsoft Learn — Install PowerShell 7 on Windows
- Microsoft Learn — How to use PowerShell documentation
- Microsoft Lifecycle — PowerShell
- PowerShell Support Lifecycle
- Microsoft PowerShell Blog — PowerShell 7.5 GA
- PowerShell Gallery
- Pester
- Microsoft Learn — Everything you wanted to know about hashtables
- Microsoft Learn — Everything you wanted to know about script blocks
- MediaWiki — Help:Formatting
- MediaWiki — Help:Links
- ↑ https://learn.microsoft.com/en-us/powershell/
- ↑ https://learn.microsoft.com/en-us/shows/it-ops-talk/how-to-install-powershell-7
- ↑ https://learn.microsoft.com/en-us/lifecycle/products/powershell
- ↑ https://github.com/PowerShell/PowerShell/releases
- ↑ https://learn.microsoft.com/en-us/powershell/
- ↑ https://github.com/PowerShell/PowerShell
- ↑ https://github.com/PowerShell/PowerShell