Перейти до вмісту

PowerShell

Матеріал з K2 ERP Wiki
Версія від 20:13, 8 травня 2026, створена 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...)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)

Приклад:


Get-Process | Select-Object -First 10
param(
PowerShell змінні можуть містити:

Enter-PSSession -ComputerName Server01

Тут <code>Get-Process</code> повертає об’єкти процесів, а не без ускладнень текстову таблицю.; Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {

'''Практична порада:''' не використовуйте <code>Write-Host</code> для даних, які мають піти далі в pipeline.; )

Advanced functions підтримують common parameters, як ілюстрація:

Це корисно для паралельного адміністрування.; Single quotes залишають текст як є собою.; У документації краще писати повну форму, бо вона зрозуміліша.;

Microsoft Learn пояснює, що PowerShell 7 є собою cross-platform, open-source і встановлюється side-by-side з Windows PowerShell 5.1.; Приклад для кількох серверів:

PowerShell відрізняється від багатьох shell тим, що передає між командами не без ускладнень текст, а об’єкти.; * PowerShell 7+ — сучасна кросплатформена реліз, функціонує на сучасному .NET і запускається як pwsh.;

Приклад: Get-Help Get-Process

pwsh

Приклад:

Get-Greeting -Name "Anna"

Офіційна документація Microsoft описує PowerShell як product documentation для встановлення, використання, прикладів scripts, deployment, PowerShell Gallery і module reference.; $config ["Environment"] catch {

Вихід:

Remoting корисний для:

Get-ChildItem *.log | ForEach-Object {

}

Arrays

Це корисно для quick diagnostics, reports і audit scripts.;

У класичному shell команди часто передають текст.;== Актуальна реліз ==

$items += "four"

Jobs

} Приклад:

param(

Головна ідея PowerShell — автоматизувати рутинні адміністративні й інженерні задачі через зрозумілу командну мову.;[1] Для великих масивів часте += має змогу бути повільним.;== Get-Command ==

[Parameter(Mandatory)]

Доступ:


$name = "PowerShell"
 Path = "C:\Temp\report.txt"

Get-Process

Перед встановленням модуля потрібно перевіряти:

Advanced function використовує [CmdletBinding()].;

Verb-Noun


$items = @("one", "two", "three")

* адміністрування серверів;
* масових змін;
* audit;
* deployment;
* troubleshooting;
* Windows Server;
* hybrid environments.; Hashtable:

== Functions ==
Типи параметрів допомагають робити scripts надійнішими.;<pre>
}

'''Для документації:''' у production краще писати конкретно: PowerShell 7.6 LTS або Windows PowerShell 5.1.;<pre>
Це істотно в scripts, CI/CD і документації.; * <code>Write-Verbose</code> — verbose stream.; Для catch часто потрібно <code>-ErrorAction Stop</code>.;== ForEach-Object ==

істотно: не всі errors за замовчуванням terminating.; Імпорт:

PowerShell Remoting надає можливість виконувати команди на віддалених машинах.; Поведінка модулів і сумісність можуть відрізнятися.; $items [0] Проста аналогія: PowerShell — це не без ускладнень командний рядок.; Приклад:

PowerShell використовують для:

Але треба розуміти наслідки: script має змогу зупинитися там, де раніше продовжував роботу.; }

  • functions;
  • cmdlets;
  • aliases;
  • variables;
  • classes;
  • formats;
  • types;
  • nested modules.; }

)

== Where-Object ==

ForEach-Object виконує дію для кожного об’єкта pipeline.; Enabled = $true

Get-Service | ?; $job = Start-Job -ScriptBlock {

[switch] — boolean-like параметр.;

PowerShell Gallery — офіційно затверджений репозиторій PowerShell-модулів і scripts.; Write-Host $_.FullName

function Get-UserReport {

$_ означає поточний об’єкт pipeline.; PowerShell 7.5 підтримується до 10 листопада 2026 року, а PowerShell 7.4 LTS — додатково до 10 листопада 2026 року.; Головна особливість PowerShell — pipeline об’єктів.;

Hashtables

Modules

У корпоративному середовищі встановлення модулів має змогу бути обмежене політиками.; } $name = "Anna"

PowerShell 7 можна встановлювати поруч із Windows PowerShell 5.1.; [string]$Name Remove-Item

Splatting

$ErrorActionPreference

Encoding = "utf8"

це кросплатформений shell, scripting language і automation framework від Microsoft; додатково реалізовано автоматизації задач, DevOps, CI/CD, роботи з Windows, Linux, macOS, Azure, Microsoft 365, API, файлами, процесами, сервісами й structured data виступає ключовою рисою адміністрування систем забезпечується через PowerShell.; "Hello, $name"

Документація PowerShell містить окремий розділ Deploy і PowerShell Gallery.;

 Get-Content -Path $Path -ErrorAction Stop

Import-Module Az


== Select-Object ==
<code>$ErrorActionPreference</code> визначає поведінку non-terminating errors.; Get-Process | Where-Object CPU -gt 100 | Sort-Object CPU -Descending
}
<code>Where-Object</code> фільтрує об’єкти.;== PowerShell Remoting ==

Get-Service

.\script.ps1 -Force
Приклади:

Приклад: Install-Module -Name Pester -Scope CurrentUser


Команди:

Double quotes підставляють змінні.;

Додавання:

Get-Process

Приклад:

<pre>
 [string]$UserName

Modules допомагають організувати scripts у reusable components.;== Головна ідея ==

ConvertTo-Json

powershell.exe PowerShell має single-quoted і double-quoted strings.;== Cmdlets ==

PowerShell і Windows PowerShell


== Invoke-Command ==

Switch parameters

Get-Process | Sort-Object CPU -Descending

Install-Module

Виклик:

У production scripts це має змогу допомогти не пропустити помилки.;[2]

[CmdletBinding()]

Сучасний PowerShell запускається командою: Чому це істотно: у PowerShell не потрібно парсити колонки тексту.;== Write-Output, Write-Host, Write-Error == актуалізація: $count = 10

завдяки наявності Get-Commandкористувачі можуть знаходити команди.; * Write-Error — error stream.; Invoke-Command -ComputerName Server01 -ScriptBlock {

$isEnabled = $true

$ErrorActionPreference = "Stop" New-Item

Splatting робить довгі команди читабельнішими.; Краще використовувати collections або pipeline.; Можна звертатися до властивостей об’єкта: Name, Id, CPU, Path, Status.; Module — пакет PowerShell-коду.; Status -eq "Running"

param(

"Force mode enabled"

Якщо написано powershell.exe, це часто означає Windows PowerShell 5.1.; Це покаже команди, пов’язані із сервісами.; PowerShell functions можуть поводитися як cmdlets, якщо правильно описати parameters.; Змінні в PowerShell починаються з $.; pwsh

Приклад:

Splatting надає можливість передавати параметри через hashtable.; Приклад:

[string]$Path,
 [switch]$Force
<code>Get-Help</code> показує довідку.;== Parameters ==
<pre>
<pre>
Get-Module
PowerShell jobs дозволяють виконувати задачі у фоні.; PowerShell має сильну вбудовану help-систему.; Якщо написано <code>pwsh</code>, це PowerShell 7+.; Get-Process
<pre>

Приклад:
</div>
є собою дві важливі лінії:

<pre>

* -Verbose;
* -Debug;
* -ErrorAction;
* -WhatIf;
* -Confirm.; Виклик:

<pre>
Приклад:
'''Коротко:''' PowerShell — це shell для автоматизації.;<code>Sort-Object</code> сортує.; finally {
<pre>
<pre>
 )
<pre>

<pre>

Добра практика — читати help перед запуском незнайомої команди.; Функція:

<code>Invoke-Command</code> виконує script block локально або віддалено.; Скорочено:
Приклад:
компонент має змогу містити:

 Write-Error "Cannot read file: $_"
Find-Module Pester

$config.Timeout

Remoting потребує правильної безпеки, автентифікації й мережевих налаштувань.; Environment = "Production"
Масив:

Інтерактивна remote session:

* strings;
* numbers;
* arrays;
* hashtables;
* objects;
* script blocks;
* credentials;
* command results.; * <code>Write-Debug</code> — debug.;<div style="background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;">
Станом на травень 2026 року актуальна LTS-гілка — '''PowerShell 7.6 LTS'''.; додатково можна брати перші або останні записи:
Get-ChildItem
 "Hello, $Name"

 )

try {

Доступ:

Get-Service | Where-Object Status -eq "Running"

Такий стиль робить команди більш передбачуваними.;

Select-Object вибирає properties.; Його сила — cmdlets, objects pipeline, modules, remoting і тісна інтеграційні функціональні можливості з Microsoft-екосистемою.; PowerShell має сильну систему parameters.; Get-Process | Select-Object Name, Id, CPU

Error handling


Install-Module Pester

}

* автора;
* popularity;
* source repository;
* license;
* останнє актуалізація;
* залежності;
* security;
* чи trusted repository.; PowerShell має error handling через <code>try/catch/finally</code>.; * <code>Write-Warning</code> — warning.; Import-Module Pester

Exit-PSSession

Get-Help Get-Process -Examples

function Get-Greeting {

Strings

Cmdlets мають стиль:

Enter-PSSession

Це надає можливість працювати на віддаленій машині майже як локально.;

Windows PowerShell зазвичай запускається як:

Get-Help Get-Process -Full

[Parameter(Mandatory)]
  • Windows PowerShell 5.1 — стара реліз, вбудована у Windows, функціонує на .NET Framework.; Приклад:
[switch]$Force
Write-Verbose "Done"

PowerShell має різні output streams.; Для даних використовуйте output, для повідомлень — verbose або information streams.; }

{{SEO


if ($Force) {

Sort-Object

Get-Service

Invoke-RestMethod

Get-Content @params
<pre>
Microsoft Lifecycle показує, що PowerShell 7.6 LTS стартував 18 березня 2026 року й підтримується до 14 листопада 2028 року.; * <code>Write-Host</code> — вивід на екран.;<ref>https://learn.microsoft.com/en-us/powershell/</ref>

 Write-Verbose "Generating report for $UserName"

У PowerShell команди передають .NET objects.; Приклад:

  • Write-Output — output pipeline.;[3]

Приклад:

Advanced functions

Приклад:

Встановлення модуля:

[int]$Limit = 100,
Hashtables часто використовують для параметрів, конфігурації, JSON-подібних структур і splatting.;

 Timeout = 30

<pre>

$config = @{

Set-Location
}
Update-Module -Name Pester
<pre>
 param(

На GitHub Releases додатково вказано релізи PowerShell 7.6.1 і 7.5.6.; Це пульт керування системою, де команди повертають структуровані об’єкти, а не “кашу” з тексту.;<pre>

Приклад:

<pre>
'''Cmdlet''' — основна команда PowerShell.;== Get-Help ==

Receive-Job $job

Objects pipeline

Get-Command *Service*

}
Корисно для пошуку cmdlets, functions, aliases і applications.;<pre>

<pre>

* адміністрування Windows;
* керування файлами й процесами;
* автоматизації серверів;
* CI/CD;
* Azure automation;
* Microsoft 365 administration;
* роботи з REST API;
* обробки JSON, CSV, XML;
* керування сервісами;
* конфігурація систем;
* deployment scripts;
* DevOps tasks;
* звітів і audit;
* security automation.;<ref>https://github.com/PowerShell/PowerShell/releases</ref>

<pre>

<pre>

== Variables ==

$params = @{
'Hello, $name'

}