Assuming everything is text
Що стається:
команди поводяться “дивно”
Причина:
PowerShell працює з об’єктами, не рядками
🛠 Rescue:
Get-Member
Ідея:
подивись, з чим реально працюєш
Wrong property name in pipeline
Що стається:
фільтр не працює
Причина:
неіснуюча властивість
🛠 Rescue:
Get-Member
Select-Object *
Ідея:
вивчи структуру об’єкта
Using Format-Table too early
Що стається:
pipeline “ламається”
Причина:
Format-* завершує обробку
🛠 Rescue:
Format-Table тільки в кінці
Ідея:
спочатку логіка, потім вигляд
Forgetting $_ in pipeline
Що стається:
Where-Object не працює
Причина:
нема поточного об’єкта
🛠 Rescue:
Where-Object { $_.Name -like "*" }
Ідея:
$_ = поточний об’єкт
Mixing string and object comparison
Що стається:
умова не спрацьовує
Причина:
типи не співпадають
🛠 Rescue:
перевірка типу:
$var.GetType()
Ідея:
типи мають значення
Overwriting variables accidentally
Що стається:
дані зникають
Причина:
повторне використання змінної
🛠 Rescue:
чіткі імена змінних
Ідея:
$users ≠ $user
Not initializing variables
Що стається:
null помилки
Причина:
змінна порожня
🛠 Rescue:
if ($null -eq $var) { }
Ідея:
перевірка перед використанням
Assuming pipeline order doesn’t matter
Що стається:
результат неправильний
Причина:
неправильна послідовність
🛠 Rescue:
логічний порядок:
Get → Filter → Select
Ідея:
pipeline = послідовність
Using Select-Object too early
Що стається:
втрата властивостей
Причина:
обрізали об’єкт
🛠 Rescue:
Select в кінці
Ідея:
не обрізай дані рано
Forgetting pipeline output type
Що стається:
наступна команда не працює
Причина:
несумісні об’єкти
🛠 Rescue:
Get-Member після кожного кроку
Ідея:
розумій, що передаєш далі
☕ Золоте правило об’єктів
PowerShell не передає текст.
Він передає об’єкти.
І саме тому він такий небезпечний і потужний.😄