PowerShell
DSC має окрему історію версій і сценаріїв, з цієї причини для production потрібно перевіряти актуальну документацію під конкретну платформу.;== $ErrorActionPreference ==
Пояснення термінів
PowerShell має cmdlets для файлів:
Get-Content * enterprise; * production scripts; * security policies; * regulated environments; * deployment automation.; Сценарії:
PowerShell відрізняється від багатьох shell тим, що передає між командами не без ускладнень текст, а об’єкти.;== Коли PowerShell має змогу бути невдалим вибором ==
[CmdletBinding()]
PowerShell у DevOps
PowerShell має сильну систему parameters.; Додавання:
$data = Import-Csv .\users.csv
Він не веде обліковий облік, не проводить документи й не керує складом сам по собі.;
PowerShell і формування звітів
Pester корисний для:
<pre> Функція: <pre> PowerShell має single-quoted і double-quoted strings.; [xml]$xml = Get-Content .\config.xml Get-ChildItem <pre>
$items [0]
Azure PowerShell — модулі для керування Azure.; У GitHub Actions можна використовувати PowerShell.; # Обробляти помилки через try/catch.; Інструмент !!;
<pre> Get-Service <code>$_</code> означає поточний об’єкт pipeline.; * '''PSScriptAnalyzer''' — статичний аналізатор PowerShell-коду.; Але PowerShell не повинен обходити бізнес-логіку ERP, права доступу або audit.; * <code>Write-Warning</code> — warning.;<ref>https://github.com/PowerShell/PowerShell</ref> [[Категорія:Адміністрування]] Це надає можливість: ) У корпоративному середовищі PowerShell повинен бути видимим для security teams.;
[string]$Name
- deployment scripts;
- backup scripts;
- automation around Windows services;
- log collection;
- scheduled exports;
- API calls;
- monitoring checks;
- CI/CD;
- адміністративних задач;
- integration scripts;
- генерації технічних звітів.; Remove-Item .\old-files\* -WhatIf
PowerShell краще для адміністрування Windows/Microsoft 365/Azure.;Invoke-Command виконує script block локально або віддалено.; PowerShell дуже зручний для CSV.; * SecretManagement — підхід і модулі для роботи з secrets.; * style issues;
- potential bugs;
- security problems;
- deprecated patterns;
- best practice violations.; Краще використовувати collections або pipeline.; *
Write-Host— вивід на екран.; Але не всі modules однаково працюють на всіх платформах.; * Code signing — цифровий підпис scripts.;
Execution Policy — механізм, який контролює запуск scripts у Windows PowerShell/PowerShell.; Exit-PSSession
Сильні сторони:
<code>Where-Object</code> фільтрує об’єкти.;
$config = @{
Invoke-RestMethod
Імпорт:
Приклад:
PowerShell має error handling через try/catch/finally.; * DSC — Desired State Configuration.; Він сприяє знаходити:
PowerShell часто функціонує з secrets:
Remoting потребує правильної безпеки, автентифікації й мережевих налаштувань.; # Не зберігати secrets у scripts.;== Практичний висновок ==
$name = "Anna"
Find-Module Pester
Dry run і WhatIf
Це радше safety feature, яка сприяє запобігти випадковому запуску небажаних scripts.; * Pipeline — передача результатів однієї команди в іншу.; * адміністрування серверів;
- масових змін;
- audit;
- deployment;
- troubleshooting;
- Windows Server;
- hybrid environments.; [Parameter(Mandatory)]
PowerShell automation має логувати результат.;Get-Help показує довідку.; * Splatting — передача параметрів через hashtable.; # Дотримуватися least privilege.; -Method Post `
- SecretManagement module;
- SecretStore;
- Azure Key Vault;
- Windows Credential Manager;
- environment variables;
- CI/CD secret storage;
- managed identities.;== PowerShell і ERP-системи ==
Сучасний PowerShell запускається командою: Windows PowerShell зазвичай запускається як:
- commands
Приклад: У контексті K2 ERP PowerShell має змогу бути корисним для:
Azure Pipelines має PowerShell tasks.;
Write-Verbose "Done"
Get-ChildItem *.log | ForEach-Object {
active = $true
Вихід:
Scheduled jobs і Task Scheduler
Get-AzVM
Least privilege
Приклад:
AD cmdlets зазвичай доступні через RSAT/ActiveDirectory module.; Це пульт керування системою, де команди повертають структуровані об’єкти, а не “кашу” з тексту.; Для catch часто потрібно -ErrorAction Stop.; 'Hello, $name'
Це краще, ніж просити користувача вводити password у plain text.; $body = @{
- script block logging;
- module logging;
- transcription;
- constrained language mode;
- AMSI;
- event logs;
- Defender integration;
- SIEM forwarding.; * Job — фонова задача PowerShell.; Команди:
У корпоративному середовищі встановлення модулів має змогу бути обмежене політиками.;
== Write-Output, Write-Host, Write-Error ==
== Get-Command ==
[[Категорія:Shell]]
Якщо написано <code>pwsh</code>, це PowerShell 7+.; }
== PowerShell у GitHub Actions ==
Приклад:
Під час роботи з PowerShell варто:
== Дивіться додатково ==
}
Команди:
$response = Invoke-RestMethod -Uri "https://api.example.com/users"
Hashtables часто використовують для параметрів, конфігурації, JSON-подібних структур і splatting.; Приклад:
У документації краще писати повну форму, бо вона зрозуміліша.; Приклад:
$job = Start-Job -ScriptBlock {
Windows PowerShell часто застосовується для Active Directory.; PowerShell functions можуть поводитися як cmdlets, якщо правильно описати parameters.; param(
.\script.ps1 -Force
"Force mode enabled"
* resource management;
* automation;
* deployment;
* audit;
* reporting;
* governance.; '''Чому це істотно:''' у PowerShell не потрібно парсити колонки тексту.; компонент має змогу містити:
== PowerShell і Windows PowerShell ==
* '''Windows PowerShell 5.1''' — стара реліз, вбудована у Windows, функціонує на .NET Framework.; * <code>Write-Error</code> — error stream.; $config.Timeout
Приклад:
Це покаже команди, пов’язані із сервісами.;== Arrays ==
Приклад:
) Якщо написано <code>powershell.exe</code>, це часто означає Windows PowerShell 5.1.;<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;"> * не замінює повноцінну backend-мову для великих сервісів; * Windows PowerShell і PowerShell 7 мають різну сумісність; * modules можуть бути platform-specific; * scripts можуть бути небезпечними без review; * execution policy не є собою повним захистом; * секрети потрібно зберігати правильно; * production automation потребує тестів, логів і least privilege.;== XML ==
$items += "four"
Splatting
- автора;
- popularity;
- source repository;
- license;
- останнє актуалізація;
- залежності;
- security;
- чи trusted repository.;
} Start-Transcript -Path .\run.log
<pre> powershell.exe
Sort-Object сортує.; # Використовувати [CmdletBinding()] для складних functions.; Основна ідея
- якщо папка вже існує — не помилка;
- якщо сервіс уже запущений — не запускати зайве;
- якщо користувач системи уже створений — оновити або пропустити.; * PowerShell Gallery — репозиторій PowerShell-модулів і scripts.;
ForEach-Objectвиконує дію для кожного об’єкта pipeline.; PowerShell підтримує роботу-WhatIfдля багатьох destructive commands.;== PowerShell і C#/.NET ==
Get-Command *Service*
[Parameter(Mandatory)]
Get-ChildItem
Code signing сприяє підтвердити, що script походить із довіреного джерела й не був змінений.; # Явно вказувати pwsh у CI/CD.; * PSCredential — тип для зберігання credentials.; $data | ConvertTo-Json -Depth 10
PowerShell Gallery
} | ConvertTo-Json На Windows можна використовувати: Краще використовувати: }
CSV
PowerShell має сильну вбудовану help-систему.; * Idempotency — повторний запуск script не створює небажаних змін.;[1]
Приклад:
Timeout = 30
<pre> [[Категорія:Scripting]] Get-Process | Select-Object -First 10 PowerShell часто застосовується в DevOps.; CSV часто застосовують, коли потрібно для звітів, імпорту/експорту й адміністрування.; * '''WhatIf''' — режим попереднього перегляду дії без виконання.; '''Для документації:''' у production краще писати конкретно: PowerShell 7.6 LTS або Windows PowerShell 5.1.; Az <code>[switch]</code> — boolean-like параметр.; * '''Objects pipeline''' — pipeline, який передає об’єкти, а не лише текст.; * '''Least privilege''' — принцип мінімально необхідних прав.; Приклади: Write-Verbose "Generating report for $UserName" PowerShell має змогу працювати з XML.; * build; * test; * deploy; * Azure automation; * artifact packaging; * release validation.; Приклад: '''Cmdlet''' — основна команда PowerShell.; Encoding = "utf8" У класичному shell команди часто передають текст.;[[Категорія:Пояснення термінів]] param( Але credential handling усе одно потребує обережності.;
Скорочено:
істотно: не слід радити “без ускладнень поставити Unrestricted” як стандартне рішення для бізнесу.;== Install-Module ==
Приклад:
Double quotes підставляють змінні.; * Windows PowerShell — стара реліз PowerShell 5.1 на .NET Framework.;
try {
- PowerShell — shell, scripting language і automation framework.; Receive-Job $job
Джерела
Import-Module Pester
Invoke-Command -ComputerName Server01 -ScriptBlock {
Set-Content
PowerShell змінні можуть містити:
Get-Service | ?;== Switch parameters ==
<code>$ErrorActionPreference</code> визначає поведінку non-terminating errors.; актуалізація:
* потрібна велика backend-система;
* потрібен web API як production service;
* потрібна AI/data science програмний пакет;
* задача краще вирішується SQL;
* потрібен portable Unix shell script;
* команда не знає PowerShell;
* потрібна складна application architecture;
* script стає настільки великим, що краще перейти на C#, Python або Go.; # Використовувати SecretManagement або vault.; param(
'''PowerShell DSC''' — Desired State Configuration.; )
PowerShell scripts можна підписувати.; Документація PowerShell містить окремий розділ Deploy і PowerShell Gallery.;== Головна ідея ==
Доступ:
Для серйозної автоматизації PowerShell scripts теж потрібно тестувати.; $params = @{
== Cmdlets ==
Invoke-ScriptAnalyzer -Path .\MyScript.ps1
Azure PowerShell застосовується для:
[[Категорія:Azure]]
Приклади:
- запускати 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 діями.; Advanced function використовує[CmdletBinding()].; Stop-Transcript
PowerShell — один із найсильніших інструментів для automation, адміністрування й DevOps, особливо в Microsoft-екосистемі.; PowerShell jobs дозволяють виконувати задачі у фоні.; # Тестувати modules через Pester.; PowerShell 7.5 підтримується до 10 листопада 2026 року, а PowerShell 7.4 LTS — додатково до 10 листопада 2026 року.; Конвертація:
Get-Process | Sort-Object CPU -Descending
Get-ChildItem -Path C:\Logs -Filter *.log |
[int]$Limit = 100,
Microsoft Graph PowerShell
На Linux/macOS PowerShell корисний для: } Get-Service | Where-Object Status -eq "Running"
<pre>
finally {
'''PowerShell Remoting''' надає можливість виконувати команди на віддалених машинах.;== Strings ==
ConvertTo-Json
== Parameters ==
Get-ExecutionPolicy
Це істотно в scripts, CI/CD і документації.;== Коли PowerShell особливо корисний ==
== Sort-Object ==
Обмеження:
<pre>
У сучасних cloud environments часто використовують Microsoft Graph і Entra ID modules.; * '''Module''' — пакет PowerShell-команд і функцій.;<pre>
Objects pipeline
- configuration management;
- server baseline;
- compliance;
- repeatable environments;
- infrastructure automation.; офіційно затверджений GitHub repository описує PowerShell як cross-platform automation and configuration tool/framework for Windows, Linux and macOS.;== PowerShell і Bash ==
- strings;
- numbers;
- arrays;
- hashtables;
- objects;
- script blocks;
- credentials;
- command results.; Connect-AzAccount
}
PowerShell зручний для REST API.; Update-Module -Name Pester
$data | Where-Object Department -eq "Sales"
Для великих масивів часте+= має змогу бути повільним.;
Головна особливість PowerShell — pipeline об’єктів.; Приклад:
Для scheduled scripts logging особливо важливий.;== Безпека PowerShell scripts ==
-ContentType "application/json"
Приклад:
Cross-platform PowerShell
<pre>
<pre>
<pre>
Офіційна документація Microsoft описує PowerShell як product documentation для встановлення, використання, прикладів scripts, deployment, PowerShell Gallery і module reference.; PowerShell scripts часто запускають за розкладом.; Python краще для складнішої програмної логіки, data science і AI.; Microsoft Graph PowerShell SDK застосовується для Microsoft 365 і Graph API.; Get-ADGroupMember
Enabled = $true
Splatting робить довгі команди читабельнішими.; PowerShell не є собою ERP-системою.;== Типові помилки в PowerShell ==
<pre>
- name: Run PowerShell script
Remove-Item
<code>Select-Object</code> вибирає properties.;<ref>https://github.com/PowerShell/PowerShell</ref>
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {
$isEnabled = $true
== Desired State Configuration ==
|-
| '''PowerShell''' || system administration, Microsoft ecosystem, shell automation
|-
| '''Python''' || general-purpose programming, data, AI, backend, scripting
|}
<pre>
== Hashtables ==
Такий стиль робить команди більш передбачуваними.;<pre>
!;<pre>
PowerShell scripts можуть бути дуже потужними, з цієї причини потрібна обережність.; '''PSScriptAnalyzer''' — статичний аналізатор PowerShell-коду.; * -Verbose;
* -Debug;
* -ErrorAction;
* -WhatIf;
* -Confirm.; додатково можна брати перші або останні записи:
}
== PowerShell в Azure Pipelines ==
PowerShell найкраще використовувати там, де потрібна швидка, контрольована й повторювана автоматизація процесів: від локальних scripts до enterprise DevOps і Microsoft cloud administration.; * '''PowerShell 7''' — сучасна cross-platform реліз PowerShell.; New-Item
Це істотно для:
'''Проста аналогія:''' PowerShell — це не без ускладнень командний рядок.;== Credentials ==
Приклад для кількох серверів:
Copy-Item
Get-Content @params
- CI/CD scripts;
- deployment;
- infrastructure automation;
- Azure pipelines;
- GitHub Actions;
- build scripts;
- release scripts;
- packaging;
- environment setup;
- secrets retrieval;
- smoke tests.; Add-Numbers 2 3 | Should -Be 5
== Where-Object ==
Перед встановленням модуля потрібно перевіряти:
Приклад:
== PowerShell і Python ==
PowerShell добре функціонує з JSON.; завдяки наявності <code>Get-Command</code>користувачі можуть знаходити команди.; Hashtable:
* адміністрування Windows;
* керування файлами й процесами;
* автоматизації серверів;
* CI/CD;
* Azure automation;
* Microsoft 365 administration;
* роботи з REST API;
* обробки JSON, CSV, XML;
* керування сервісами;
* конфігурація систем;
* deployment scripts;
* DevOps tasks;
* звітів і audit;
* security automation.; DSC застосовується для:
catch {
[[Категорія:Windows]]
== Active Directory ==
== PowerShell Remoting ==
Змінні в PowerShell починаються з <code>$</code>.;== PowerShell і API K2 ERP ==
Це корисно для паралельного адміністрування.; Його сила — cmdlets, objects pipeline, modules, remoting і тісна інтеграційні функціональні можливості з Microsoft-екосистемою.; * <code>Write-Verbose</code> — verbose stream.; Write-Host $_.FullName
Invoke-RestMethod `
<pre>
Приклад:
<pre>
== Select-Object ==
* transcript;
* structured logs;
* Start-Transcript;
* Write-Information;
* custom log files;
* Windows Event Log;
* SIEM integration;
* CI/CD logs.; * '''Cmdlet''' — команда PowerShell у форматі Verb-Noun.; Get-Help Get-Process
== Invoke-Command ==
PowerShell особливо корисний для:
* unit tests;
* script tests;
* module tests;
* infrastructure tests;
* CI/CD;
* regression tests.;
PowerShell можна використовувати для технічної звітності:
Error handling
}
ключовий компонент:
PowerShell потужний, з цієї причини його потрібно контролювати й моніторити.; PowerShell дуже поширений у Microsoft 365 administration.; Встановлення модуля:
- 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
pwsh, а не Windows PowerShell.; У production scripts це має змогу допомогти не пропустити помилки.;
Cmdlets мають стиль:
Приклад:
PowerShell має різні output streams.; * '''Execution Policy''' — політика запуску scripts.;== Code signing ==
Describe "Calculator" {
* cloud automation;
* JSON/API scripts;
* DevOps;
* CI/CD;
* Azure;
* Microsoft 365;
* cross-platform tooling;
* automation around files;
* reporting.;<ref>https://learn.microsoft.com/en-us/powershell/</ref>
* Windows;
* Linux;
* macOS.;
<pre>
Single quotes залишають текст як є собою.;<ref>https://learn.microsoft.com/en-us/shows/it-ops-talk/how-to-install-powershell-7</ref>
* functions;
* cmdlets;
* aliases;
* variables;
* classes;
* formats;
* types;
* nested modules.; function Get-UserReport {
Типи параметрів допомагають робити scripts надійнішими.;== Хороші практики ==
<pre>
* не запускати незнайомі scripts без перевірки;
* не вставляти команди з інтернету без розуміння;
* не зберігати passwords у коді;
* використовувати least privilege;
* логувати важливі дії;
* підписувати production scripts;
* обмежувати доступ до modules;
* перевіряти dependencies;
* використовувати code review.;== Secrets ==
* список файлів;
* стан сервісів;
* audit users;
* disk usage;
* installed modules;
* статус backup;
* API responses;
* CSV exports.; XML досі часто зустрічається в Windows, legacy systems і enterprise configs.; * Task Scheduler;
* Scheduled Jobs;
* Scheduled Tasks;
* Azure Automation;
* CI/CD schedules.; $xml.configuration.appSettings.add
PowerShell і Python часто доповнюють одне одного.; * 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;
* інтеграцій.;== pwsh ==
$name = "PowerShell"
Виклик:
Get-Module
Для великого production-сервісу або library — C# має змогу бути кращим.;
Get-Process | Select-Object Name, Id, CPU
run: |
}
Enter-PSSession -ComputerName Server01
<div style="background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;">
Приклад:
if ($Force) {
function Get-Greeting {
У PowerShell команди передають .NET objects.; Jobs корисні для довгих операцій, але в сучасних сценаріях додатково використовують runspaces, ThreadJob або CI/CD runners.; Shell !!;<pre>
<div style="background:#fff7e6;border-left:6px solid #f2994a;padding:14px 18px;margin:16px 0;border-radius:8px;">
$ErrorActionPreference = "Stop"
Приклад:
Get-ADUser
Сценарії:
== Working with files ==
Install-Module Pester
shell: pwsh
Get-Service
</div>
$PSVersionTable
Для scheduled scripts істотно логувати результат і помилки, бо користувач системи не бачить інтерактивний вивід.;[[Категорія:Інтеграції]]
Виклик:
істотно явно вказувати <code>pwsh</code>, якщо потрібен PowerShell 7.; REST API + PowerShell — популярна пара для інтеграцій і automation.; PowerShell використовують для:
PowerShell і Bash мають різну філософію.; Не варто запускати все від Administrator, якщо достатньо звичайного користувача.;<pre>
істотно: не всі errors за замовчуванням terminating.;<ref>https://learn.microsoft.com/en-us/powershell/</ref>
Приклади:
Приклад:
Logging
Приклад:
Для automation краще створювати окремі service accounts із мінімальними правами.; PowerShell особливо зручний у Windows і Azure environments.; # Використовувати-WhatIf для destructive operations.;
!; * Enter-PSSession — інтерактивна remote session.; Сильні сторони
[switch]$Force
Підходи:
PowerShell у Linux/macOS
Get-Process | Where-Object CPU -gt 100 | Sort-Object CPU -Descending
Jobs
Azure PowerShell
Приклад сценарію:
Інтерактивна remote session:
Idempotent scripts безпечніші для deployment і configuration.;
Modules допомагають організувати scripts у reusable components.; * Pester — testing framework для PowerShell.;
Idempotency — властивість script, коли повторний запуск не ламає систему й не створює дублікати.; * Invoke-Command — cmdlet для виконання script block локально або віддалено.; Status -eq "Running"
{| class="wikitable"
Приклад:
Get-Greeting -Name "Anna"
[switch]$Force
<div style="background:#fff0f0;border-left:6px solid #eb5757;padding:14px 18px;margin:16px 0;border-radius:8px;">
Script Analyzer
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
[[Категорія:Безпека]] Добра практика — читати help перед запуском незнайомої команди.; * '''Hashtable''' — key-value структура.;<pre> Такі scripts корисні для адміністрування, але критичні операції мають бути захищені правами доступу й логуванням.;<pre> Поширені помилки: == Актуальна реліз == == Variables ==
Advanced functions підтримують common parameters, як ілюстрація:
./build.ps1
Сценарії: New-Item }
"Hello, $Name"
Remove-Item
[string]$UserName
Import-Module Az
Get-Process -Body $body `
Bash сильний для Unix scripting і текстових команд.;
ShouldProcess, щоб додати -WhatIf і -Confirm.;-Uri "https://api.example.com/items" `
- 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.; Краще розуміти політику, підпис scripts і корпоративні правила.; New-ADUser
- отримати token;
- викликати endpoint;
- зберегти JSON;
- сформувати CSV-звіт;
- надіслати результат адміністратору.; Install-Module -Name Pester -Scope CurrentUser
Масив:
param( [string]$Path,
{{SEO