<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=PowerShell</id>
	<title>PowerShell - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=PowerShell"/>
	<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=PowerShell&amp;action=history"/>
	<updated>2026-05-10T10:09:41Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.erp.kyiv.ua/index.php?title=PowerShell&amp;diff=1278&amp;oldid=prev</id>
		<title>R в 20:18, 8 травня 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=PowerShell&amp;diff=1278&amp;oldid=prev"/>
		<updated>2026-05-08T20:18:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.erp.kyiv.ua/index.php?title=PowerShell&amp;amp;diff=1278&amp;amp;oldid=1276&quot;&gt;Показати зміни&lt;/a&gt;</summary>
		<author><name>R</name></author>
	</entry>
	<entry>
		<id>https://wiki.erp.kyiv.ua/index.php?title=PowerShell&amp;diff=1276&amp;oldid=prev</id>
		<title>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...</title>
		<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=PowerShell&amp;diff=1276&amp;oldid=prev"/>
		<updated>2026-05-08T20:13:56Z</updated>

		<summary type="html">&lt;p&gt;Створена сторінка: {{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...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{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, modules, remoting, jobs, error handling, security, execution policy, secrets, logging, testing, Pester, PowerShell Gallery, PowerShell 7.6 LTS і Windows PowerShell 5.1.|keywords=PowerShell, PowerShell 7.6, PowerShell 7, Windows PowerShell, PowerShell Core, Microsoft PowerShell, PowerShell scripting, PowerShell automation, cmdlets, objects pipeline, PowerShell modules, PowerShell remoting, PowerShell Gallery, Pester, PowerShell DSC, Azure PowerShell, Microsoft Graph PowerShell, Windows administration, DevOps PowerShell, CI/CD PowerShell, PowerShell security, execution policy, PowerShell scripts, pwsh|alternativeTo=ручне адміністрування серверів; batch scripts; cmd.exe; VBScript; ручні операції в Windows GUI; повторювані DevOps-задачі без автоматизації; shell без object pipeline; адміністрування Microsoft 365 без скриптів; ручне керування файлами, сервісами й реєстром}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PowerShell&amp;#039;&amp;#039;&amp;#039; — це кросплатформений shell, scripting language і automation framework від Microsoft для адміністрування систем, автоматизації задач, DevOps, CI/CD, роботи з Windows, Linux, macOS, Azure, Microsoft 365, API, файлами, процесами, сервісами й structured data.&lt;br /&gt;
&lt;br /&gt;
PowerShell відрізняється від багатьох shell тим, що передає між командами не просто текст, а &amp;#039;&amp;#039;&amp;#039;об’єкти&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Коротко:&amp;#039;&amp;#039;&amp;#039; PowerShell — це shell для автоматизації. Його сила — cmdlets, objects pipeline, modules, remoting і тісна інтеграція з Microsoft-екосистемою.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Офіційна документація Microsoft описує PowerShell як product documentation для встановлення, використання, прикладів scripts, deployment, PowerShell Gallery і module reference. &amp;lt;ref&amp;gt;https://learn.microsoft.com/en-us/powershell/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Головна ідея ==&lt;br /&gt;
&lt;br /&gt;
Головна ідея PowerShell — автоматизувати рутинні адміністративні й інженерні задачі через зрозумілу командну мову.&lt;br /&gt;
&lt;br /&gt;
PowerShell використовують для:&lt;br /&gt;
&lt;br /&gt;
* адміністрування Windows;&lt;br /&gt;
* керування файлами й процесами;&lt;br /&gt;
* автоматизації серверів;&lt;br /&gt;
* CI/CD;&lt;br /&gt;
* Azure automation;&lt;br /&gt;
* Microsoft 365 administration;&lt;br /&gt;
* роботи з REST API;&lt;br /&gt;
* обробки JSON, CSV, XML;&lt;br /&gt;
* керування сервісами;&lt;br /&gt;
* налаштування систем;&lt;br /&gt;
* deployment scripts;&lt;br /&gt;
* DevOps tasks;&lt;br /&gt;
* звітів і audit;&lt;br /&gt;
* security automation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Проста аналогія:&amp;#039;&amp;#039;&amp;#039; PowerShell — це не просто командний рядок. Це пульт керування системою, де команди повертають структуровані об’єкти, а не “кашу” з тексту.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PowerShell і Windows PowerShell ==&lt;br /&gt;
&lt;br /&gt;
Є дві важливі лінії:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Windows PowerShell 5.1&amp;#039;&amp;#039;&amp;#039; — стара версія, вбудована у Windows, працює на .NET Framework.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PowerShell 7+&amp;#039;&amp;#039;&amp;#039; — сучасна кросплатформена версія, працює на сучасному .NET і запускається як &amp;lt;code&amp;gt;pwsh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
PowerShell 7 можна встановлювати поруч із Windows PowerShell 5.1.&lt;br /&gt;
&lt;br /&gt;
Microsoft Learn пояснює, що PowerShell 7 є cross-platform, open-source і встановлюється side-by-side з Windows PowerShell 5.1. &amp;lt;ref&amp;gt;https://learn.microsoft.com/en-us/shows/it-ops-talk/how-to-install-powershell-7&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Актуальна версія ==&lt;br /&gt;
&lt;br /&gt;
Станом на травень 2026 року актуальна LTS-гілка — &amp;#039;&amp;#039;&amp;#039;PowerShell 7.6 LTS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Microsoft Lifecycle показує, що PowerShell 7.6 LTS стартував 18 березня 2026 року й підтримується до 14 листопада 2028 року. PowerShell 7.5 підтримується до 10 листопада 2026 року, а PowerShell 7.4 LTS — також до 10 листопада 2026 року. &amp;lt;ref&amp;gt;https://learn.microsoft.com/en-us/lifecycle/products/powershell&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На GitHub Releases також вказано релізи PowerShell 7.6.1 і 7.5.6. &amp;lt;ref&amp;gt;https://github.com/PowerShell/PowerShell/releases&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#fff7e6;border-left:6px solid #f2994a;padding:14px 18px;margin:16px 0;border-radius:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Для документації:&amp;#039;&amp;#039;&amp;#039; у production краще писати конкретно: PowerShell 7.6 LTS або Windows PowerShell 5.1. Поведінка модулів і сумісність можуть відрізнятися.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pwsh ==&lt;br /&gt;
&lt;br /&gt;
Сучасний PowerShell запускається командою:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pwsh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Windows PowerShell зазвичай запускається як:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
powershell.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це важливо в scripts, CI/CD і документації.&lt;br /&gt;
&lt;br /&gt;
Якщо написано &amp;lt;code&amp;gt;powershell.exe&amp;lt;/code&amp;gt;, це часто означає Windows PowerShell 5.1.&lt;br /&gt;
&lt;br /&gt;
Якщо написано &amp;lt;code&amp;gt;pwsh&amp;lt;/code&amp;gt;, це PowerShell 7+.&lt;br /&gt;
&lt;br /&gt;
== Cmdlets ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cmdlet&amp;#039;&amp;#039;&amp;#039; — основна команда PowerShell.&lt;br /&gt;
&lt;br /&gt;
Cmdlets мають стиль:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Verb-Noun&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Приклади:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Process&lt;br /&gt;
Get-Service&lt;br /&gt;
Get-ChildItem&lt;br /&gt;
Set-Location&lt;br /&gt;
New-Item&lt;br /&gt;
Remove-Item&lt;br /&gt;
Invoke-RestMethod&lt;br /&gt;
ConvertTo-Json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такий стиль робить команди більш передбачуваними.&lt;br /&gt;
&lt;br /&gt;
== Get-Command ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Get-Command&amp;lt;/code&amp;gt; допомагає знаходити команди.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Command *Service*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це покаже команди, пов’язані із сервісами.&lt;br /&gt;
&lt;br /&gt;
Корисно для пошуку cmdlets, functions, aliases і applications.&lt;br /&gt;
&lt;br /&gt;
== Get-Help ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Get-Help&amp;lt;/code&amp;gt; показує довідку.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Help Get-Process&lt;br /&gt;
Get-Help Get-Process -Examples&lt;br /&gt;
Get-Help Get-Process -Full&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PowerShell має сильну вбудовану help-систему.&lt;br /&gt;
&lt;br /&gt;
Добра практика — читати help перед запуском незнайомої команди.&lt;br /&gt;
&lt;br /&gt;
== Objects pipeline ==&lt;br /&gt;
&lt;br /&gt;
Головна особливість PowerShell — pipeline об’єктів.&lt;br /&gt;
&lt;br /&gt;
У класичному shell команди часто передають текст.&lt;br /&gt;
&lt;br /&gt;
У PowerShell команди передають .NET objects.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Process | Where-Object CPU -gt 100 | Sort-Object CPU -Descending&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тут &amp;lt;code&amp;gt;Get-Process&amp;lt;/code&amp;gt; повертає об’єкти процесів, а не просто текстову таблицю.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Чому це важливо:&amp;#039;&amp;#039;&amp;#039; у PowerShell не потрібно парсити колонки тексту. Можна звертатися до властивостей об’єкта: Name, Id, CPU, Path, Status.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Where-Object ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Where-Object&amp;lt;/code&amp;gt; фільтрує об’єкти.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Service | Where-Object Status -eq &amp;quot;Running&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скорочено:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Service | ? Status -eq &amp;quot;Running&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У документації краще писати повну форму, бо вона зрозуміліша.&lt;br /&gt;
&lt;br /&gt;
== Select-Object ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select-Object&amp;lt;/code&amp;gt; вибирає properties.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Process | Select-Object Name, Id, CPU&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Також можна брати перші або останні записи:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Process | Select-Object -First 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sort-Object ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Sort-Object&amp;lt;/code&amp;gt; сортує.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Process | Sort-Object CPU -Descending&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це корисно для quick diagnostics, reports і audit scripts.&lt;br /&gt;
&lt;br /&gt;
== ForEach-Object ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ForEach-Object&amp;lt;/code&amp;gt; виконує дію для кожного об’єкта pipeline.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-ChildItem *.log | ForEach-Object {&lt;br /&gt;
    Write-Host $_.FullName&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$_&amp;lt;/code&amp;gt; означає поточний об’єкт pipeline.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Змінні в PowerShell починаються з &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$name = &amp;quot;PowerShell&amp;quot;&lt;br /&gt;
$count = 10&lt;br /&gt;
$isEnabled = $true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PowerShell змінні можуть містити:&lt;br /&gt;
&lt;br /&gt;
* strings;&lt;br /&gt;
* numbers;&lt;br /&gt;
* arrays;&lt;br /&gt;
* hashtables;&lt;br /&gt;
* objects;&lt;br /&gt;
* script blocks;&lt;br /&gt;
* credentials;&lt;br /&gt;
* command results.&lt;br /&gt;
&lt;br /&gt;
== Arrays ==&lt;br /&gt;
&lt;br /&gt;
Масив:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$items = @(&amp;quot;one&amp;quot;, &amp;quot;two&amp;quot;, &amp;quot;three&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Доступ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$items[0]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Додавання:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$items += &amp;quot;four&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для великих масивів часте &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt; може бути повільним. Краще використовувати collections або pipeline.&lt;br /&gt;
&lt;br /&gt;
== Hashtables ==&lt;br /&gt;
&lt;br /&gt;
Hashtable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$config = @{&lt;br /&gt;
    Environment = &amp;quot;Production&amp;quot;&lt;br /&gt;
    Timeout     = 30&lt;br /&gt;
    Enabled     = $true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Доступ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$config[&amp;quot;Environment&amp;quot;]&lt;br /&gt;
$config.Timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hashtables часто використовують для параметрів, конфігурації, JSON-подібних структур і splatting.&lt;br /&gt;
&lt;br /&gt;
== Splatting ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Splatting&amp;#039;&amp;#039;&amp;#039; дозволяє передавати параметри через hashtable.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$params = @{&lt;br /&gt;
    Path     = &amp;quot;C:\Temp\report.txt&amp;quot;&lt;br /&gt;
    Encoding = &amp;quot;utf8&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Get-Content @params&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Splatting робить довгі команди читабельнішими.&lt;br /&gt;
&lt;br /&gt;
== Strings ==&lt;br /&gt;
&lt;br /&gt;
PowerShell має single-quoted і double-quoted strings.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$name = &amp;quot;Anna&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Hello, $name&amp;quot;&lt;br /&gt;
&amp;#039;Hello, $name&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Double quotes підставляють змінні.&lt;br /&gt;
&lt;br /&gt;
Single quotes залишають текст як є.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
Функція:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function Get-Greeting {&lt;br /&gt;
    param(&lt;br /&gt;
        [string]$Name&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;Hello, $Name&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виклик:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Greeting -Name &amp;quot;Anna&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PowerShell functions можуть поводитися як cmdlets, якщо правильно описати parameters.&lt;br /&gt;
&lt;br /&gt;
== Advanced functions ==&lt;br /&gt;
&lt;br /&gt;
Advanced function використовує &amp;lt;code&amp;gt;[CmdletBinding()]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function Get-UserReport {&lt;br /&gt;
    [CmdletBinding()]&lt;br /&gt;
    param(&lt;br /&gt;
        [Parameter(Mandatory)]&lt;br /&gt;
        [string]$UserName&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    Write-Verbose &amp;quot;Generating report for $UserName&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced functions підтримують common parameters, наприклад:&lt;br /&gt;
&lt;br /&gt;
* -Verbose;&lt;br /&gt;
* -Debug;&lt;br /&gt;
* -ErrorAction;&lt;br /&gt;
* -WhatIf;&lt;br /&gt;
* -Confirm.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
PowerShell має сильну систему parameters.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param(&lt;br /&gt;
    [Parameter(Mandatory)]&lt;br /&gt;
    [string]$Path,&lt;br /&gt;
&lt;br /&gt;
    [int]$Limit = 100,&lt;br /&gt;
&lt;br /&gt;
    [switch]$Force&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Типи параметрів допомагають робити scripts надійнішими.&lt;br /&gt;
&lt;br /&gt;
== Switch parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[switch]&amp;lt;/code&amp;gt; — boolean-like параметр.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param(&lt;br /&gt;
    [switch]$Force&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
if ($Force) {&lt;br /&gt;
    &amp;quot;Force mode enabled&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виклик:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.\script.ps1 -Force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Error handling ==&lt;br /&gt;
&lt;br /&gt;
PowerShell має error handling через &amp;lt;code&amp;gt;try/catch/finally&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
    Get-Content -Path $Path -ErrorAction Stop&lt;br /&gt;
}&lt;br /&gt;
catch {&lt;br /&gt;
    Write-Error &amp;quot;Cannot read file: $_&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
finally {&lt;br /&gt;
    Write-Verbose &amp;quot;Done&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важливо: не всі errors за замовчуванням terminating. Для catch часто потрібно &amp;lt;code&amp;gt;-ErrorAction Stop&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== $ErrorActionPreference ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ErrorActionPreference&amp;lt;/code&amp;gt; визначає поведінку non-terminating errors.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ErrorActionPreference = &amp;quot;Stop&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У production scripts це може допомогти не пропустити помилки.&lt;br /&gt;
&lt;br /&gt;
Але треба розуміти наслідки: script може зупинитися там, де раніше продовжував роботу.&lt;br /&gt;
&lt;br /&gt;
== Write-Output, Write-Host, Write-Error ==&lt;br /&gt;
&lt;br /&gt;
PowerShell має різні output streams.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Write-Output&amp;lt;/code&amp;gt; — output pipeline.&lt;br /&gt;
* &amp;lt;code&amp;gt;Write-Host&amp;lt;/code&amp;gt; — вивід на екран.&lt;br /&gt;
* &amp;lt;code&amp;gt;Write-Error&amp;lt;/code&amp;gt; — error stream.&lt;br /&gt;
* &amp;lt;code&amp;gt;Write-Verbose&amp;lt;/code&amp;gt; — verbose stream.&lt;br /&gt;
* &amp;lt;code&amp;gt;Write-Warning&amp;lt;/code&amp;gt; — warning.&lt;br /&gt;
* &amp;lt;code&amp;gt;Write-Debug&amp;lt;/code&amp;gt; — debug.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#fff7e6;border-left:6px solid #f2994a;padding:14px 18px;margin:16px 0;border-radius:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Практична порада:&amp;#039;&amp;#039;&amp;#039; не використовуйте &amp;lt;code&amp;gt;Write-Host&amp;lt;/code&amp;gt; для даних, які мають піти далі в pipeline. Для даних використовуйте output, для повідомлень — verbose або information streams.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Module&amp;#039;&amp;#039;&amp;#039; — пакет PowerShell-коду.&lt;br /&gt;
&lt;br /&gt;
Модуль може містити:&lt;br /&gt;
&lt;br /&gt;
* functions;&lt;br /&gt;
* cmdlets;&lt;br /&gt;
* aliases;&lt;br /&gt;
* variables;&lt;br /&gt;
* classes;&lt;br /&gt;
* formats;&lt;br /&gt;
* types;&lt;br /&gt;
* nested modules.&lt;br /&gt;
&lt;br /&gt;
Команди:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get-Module&lt;br /&gt;
Import-Module Az&lt;br /&gt;
Find-Module Pester&lt;br /&gt;
Install-Module Pester&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modules допомагають організувати scripts у reusable components.&lt;br /&gt;
&lt;br /&gt;
== PowerShell Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PowerShell Gallery&amp;#039;&amp;#039;&amp;#039; — офіційний репозиторій PowerShell-модулів і scripts.&lt;br /&gt;
&lt;br /&gt;
Документація PowerShell містить окремий розділ Deploy і PowerShell Gallery. &amp;lt;ref&amp;gt;https://learn.microsoft.com/en-us/powershell/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перед встановленням модуля потрібно перевіряти:&lt;br /&gt;
&lt;br /&gt;
* автора;&lt;br /&gt;
* popularity;&lt;br /&gt;
* source repository;&lt;br /&gt;
* license;&lt;br /&gt;
* останнє оновлення;&lt;br /&gt;
* залежності;&lt;br /&gt;
* security;&lt;br /&gt;
* чи trusted repository.&lt;br /&gt;
&lt;br /&gt;
== Install-Module ==&lt;br /&gt;
&lt;br /&gt;
Встановлення модуля:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Install-Module -Name Pester -Scope CurrentUser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Імпорт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Import-Module Pester&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Оновлення:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Update-Module -Name Pester&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У корпоративному середовищі встановлення модулів може бути обмежене політиками.&lt;br /&gt;
&lt;br /&gt;
== PowerShell Remoting ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PowerShell Remoting&amp;#039;&amp;#039;&amp;#039; дозволяє виконувати команди на віддалених машинах.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Invoke-Command -ComputerName Server01 -ScriptBlock {&lt;br /&gt;
    Get-Service&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remoting корисний для:&lt;br /&gt;
&lt;br /&gt;
* адміністрування серверів;&lt;br /&gt;
* масових змін;&lt;br /&gt;
* audit;&lt;br /&gt;
* deployment;&lt;br /&gt;
* troubleshooting;&lt;br /&gt;
* Windows Server;&lt;br /&gt;
* hybrid environments.&lt;br /&gt;
&lt;br /&gt;
Remoting потребує правильної безпеки, автентифікації й мережевих налаштувань.&lt;br /&gt;
&lt;br /&gt;
== Enter-PSSession ==&lt;br /&gt;
&lt;br /&gt;
Інтерактивна remote session:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Enter-PSSession -ComputerName Server01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це дозволяє працювати на віддаленій машині майже як локально.&lt;br /&gt;
&lt;br /&gt;
Вихід:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exit-PSSession&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Invoke-Command ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Invoke-Command&amp;lt;/code&amp;gt; виконує script block локально або віддалено.&lt;br /&gt;
&lt;br /&gt;
Приклад для кількох серверів:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {&lt;br /&gt;
    Get-Process&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це корисно для паралельного адміністрування.&lt;br /&gt;
&lt;br /&gt;
== Jobs ==&lt;br /&gt;
&lt;br /&gt;
PowerShell jobs дозволяють виконувати задачі у фоні.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$job = Start-Job -ScriptBlock {&lt;br /&gt;
    Get-Process&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Receive-Job $job&lt;/div&gt;</summary>
		<author><name>R</name></author>
	</entry>
</feed>